Title: Language Oriented Programming
1Language Oriented Programming
2Plan
- La programmation actuelle
- Language Oriented Programming
- Domain Specific Language
- Conclusion
3La programmation actuelle
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Constatations
- Les principaux problèmes
4Constatations
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Programmer est difficile
- Penser comme un ordinateur
- Tout est faisable, mais à quel prix ?
- Cadre de développement rigide
5Les principaux problèmes
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Implémenter des idées est long
- Humain vs CPU concepts haut niveau contre
opérations simples - OOD long et pas forcément nécessaire
- Comprendre et maintenir du code est difficile
- Opérations atomiques vers concept haut niveau
- Documentation difficilement liée au code
- Extensions de langage hors de portée
- Librairie abstraction bas niveau de concepts
- Non reconnues par les outils de développement
6Language Oriented Programming
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Présentation
- En pratique
- Cas dutilisation
- Avantages
- Inconvénients
7Présentation
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Le but
- Simplifier la programmation en manipulant des
notions du problème que lon souhaite résoudre - La LOP cest
- Une façon de penser objet
- La réutilisation
- La LOP ce nest pas
- La solution à tout
- Un langage de programmation
8En pratique
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Ce quon fait habituellement
Penser
Choisir
9En pratique
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
DSL
Choisir
Penser
Réaliser
Créer
10Quand lutiliser ?
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Le programme concerne-t-il un problème en
particulier ? - Le programme fera-t-il partie dune suite ?
11Avantages
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Grande productivité de développement
- Facilement maintenable
- Extrêmement portable
- Possibilité de réutilisation
- Système améliorable par lutilisateur
12Inconvénients
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Façonner correctement un DSL est difficile
- Nécessité de connaître le domaine
- Compétence requises en programmation
- Nécessité de créer ses outils
- Risque de séloigner des contraintes defficacité
13Domain Specific Language
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Présentation
- Contexte dutilisation
- Les différents DSL
- Création dun DSL
- Outils
- Exemples
14Présentation
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Un langage de programmation à part entière
- Structure
- Éditeur
- Sémantique
- Différentes représentations
- Langages à diagrammes
- Abstraction de programmation
- Langages textuels
15Contexte dutilisation
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- En standalone
- Utilisé par un GPL
- Encapsulé dans une application
- Implémenté avec un système de programmation par
macros puis transformé en GPL
16Les différents DSL
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- DSL interne
- Métamorphose un GPL en DSL
- Ses forces
- Dispose de la puissance du langage de base
- Réduit le coût en outils
- Sa faiblesse
- Limité par le langage de base
17Les différents DSL
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- DSL externe
- Écrit dans un langage unique
- Ses forces
- Liberté dexpression
- Simplicité dutilisation
- Sa faiblesse
- Nécessité de créer ses propres outils
18Création dun DSL
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Définir une structure
- Créer un éditeur
- Mettre en place la sémantique
- Définir des règles
- Créer un traducteur ou un générateur
19Outils
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Pourquoi un éditeur ?
- Créer, réutiliser, modifier un langage
- Quelques exemples
- Intentional Software, Intentional Software
- Meta-Programming System, JetBrains
- SoftwareFactories, Microsoft
20Exemples
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- Ils existent !
- SQL gestion de bases de données
- Shell gestion de systèmes de fichiers
- POV ray-tracing dimages
- Csound création de fichiers audio
-
- Et pourquoi pas
- Un DSL qui gère les salaires
- Un DSL de simulation de combat
-
21Conclusion
La programmation actuelle Language Oriented
Programming Domain Specific Language Conclusion
- LOP résout un problème particulier
- LOP est simple mais peut-être coûteux
- DSL peut être un complément aux GPL ou pas
22- Merci de votre attention !
23Webographie
- M.P. Ward Language Oriented Programming
- TheLop
- Microsoft MSDN
- Wikipedia
- M. Fowler Language Workbenches
- S. Dmitriev LOP The Next programming
Paradigm