230 likes | 332 Views
Explore Language-Oriented Programming (LOP) with insights on current programming paradigms, domain-specific languages, implementation issues, and practical use cases. Learn how LOP can simplify coding, enhance productivity, and foster reusability in software development.
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