Language Oriented Programming Didier Demange IR3 Plan La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion Didier Demange - Language Oriented Programming 2 La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion La programmation actuelle Constatations Les principaux problèmes Didier Demange - Language Oriented Programming 3 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 4 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 Documentation difficilement liée au code niveau 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 5 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 6 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 7 La programmation actuelle Language Oriented Programming Domain Specific Language Conclusion En pratique Ce qu’on fait habituellement Penser Choisir Réaliser Didier Demange - Language Oriented Programming 8 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 9 Quand l’utiliser ? 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 d’une suite ? Didier Demange - Language Oriented Programming 10 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 11 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 12 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 13 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 14 Contexte d’utilisation 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 Didier Demange - Language Oriented Programming 15 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 16 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 17 Création d’un 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 Didier Demange - Language Oriented Programming 18 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 19 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 20 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 21 Merci de votre attention ! Didier Demange - Language Oriented Programming 22 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 23
© Copyright 2024 ExpyDoc