230 likes | 326 Views
Language Oriented Programming. Didier Demange IR3. Plan. La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion. La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion. La programmation actuelle. Constatations
E N D
Language Oriented Programming Didier Demange IR3
Plan • La programmation actuelle • Language Oriented Programming • Domain Specific Language • Conclusion Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion La programmation actuelle • Constatations • Les principaux problèmes Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Constatations • Programmer est difficile • Penser comme un ordinateur • Tout est faisable, mais à quel prix ? • Cadre de développement rigide Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Les principaux problèmes • 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 Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Language Oriented Programming • Présentation • En pratique • Cas d’utilisation • Avantages • Inconvénients Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Présentation • Le but • Simplifier la programmation en manipulant des notions du problème que l’on souhaite résoudre • La LOP c’est • Une façon de penser objet • La réutilisation • La LOP ce n’est pas • La solution à tout • Un langage de programmation Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Réaliser En pratique • Ce qu’on fait habituellement Penser Choisir Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion En pratique • Ce que propose la LOP DSL Choisir Penser Réaliser Créer Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Quand l’utiliser ? • Le programme concerne-t-il un problème en particulier ? • Le programme fera-t-il partie d’une suite ? Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Avantages • Grande productivité de développement • Facilement maintenable • Extrêmement portable • Possibilité de réutilisation • Système améliorable par l’utilisateur Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Inconvénients • 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 d’efficacité Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Domain Specific Language • Présentation • Contexte d’utilisation • Les différents DSL • Création d’un DSL • Outils • Exemples Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Présentation • Un langage de programmation à part entière • Structure • Éditeur • Sémantique • Différentes représentations • Langages à diagrammes • Abstraction de programmation • Langages textuels Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Contexte d’utilisation • En standalone • Utilisé par un GPL • Encapsulé dans une application • Implémenté avec un système de programmation par macros puis transformé en GPL Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Les différents DSL • 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 Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Les différents DSL • DSL « externe » • Écrit dans un langage unique • Ses forces • Liberté d’expression • Simplicité d’utilisation • Sa faiblesse • Nécessité de créer ses propres outils Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Création d’un DSL • 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 Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Outils • Pourquoi un éditeur ? • Créer, réutiliser, modifier un langage • Quelques exemples • Intentional Software, Intentional Software • Meta-Programming System, JetBrains • SoftwareFactories, Microsoft Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Exemples • Ils existent ! • SQL : gestion de bases de données • Shell : gestion de systèmes de fichiers • POV : ray-tracing d’images • Csound : création de fichiers audio • … • Et pourquoi pas • Un DSL qui gère les salaires • Un DSL de simulation de combat • … Didier Demange - Language Oriented Programming
La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion 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 Didier Demange - Language Oriented Programming
Merci de votre attention ! Didier Demange - Language Oriented Programming
Webographie • M.P. Ward « Language Oriented Programming » • TheLop • Microsoft MSDN • Wikipedia • M. Fowler « Language Workbenches » • S. Dmitriev « LOP : The Next programming Paradigm » Didier Demange - Language Oriented Programming