Language Oriented Programming

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