domain specific language with pleasure
TRANSCRIPT
![Page 1: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/1.jpg)
MPS
Domain Specific Languageswith pleasure
Václav Pech
![Page 2: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/2.jpg)
JetBrains MPS
High thoughts must have high language.
Aristophanes
![Page 3: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/3.jpg)
Your vocabulary reflects the way you thinkSeth Godin
![Page 4: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/4.jpg)
[Embedded Software]mbeddr
![Page 5: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/5.jpg)
[Data analysis]MetaR
![Page 6: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/6.jpg)
[Business Application]Insurance Configuration Tool
![Page 7: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/7.jpg)
[Business Application]Insurance Configuration Tool
![Page 8: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/8.jpg)
<no variables> <no parent>
<no libraries>
<no business objects>
<no parent>
[Business Application]Insurance Configuration Tool
![Page 9: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/9.jpg)
Notations for DSLs
● Text● Diagrams● Tables● Forms● Mixtures of all● …
![Page 10: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/10.jpg)
The number and the type of the basic colour words of a language determine how one sees the rain bow
![Page 11: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/11.jpg)
Programs are trees
R
A B
C D
G
R
E F
![Page 12: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/12.jpg)
Programs are trees
R
A B
C D
G
R
E F
![Page 13: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/13.jpg)
![Page 14: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/14.jpg)
![Page 15: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/15.jpg)
Children have roles
R
A IfStatement
Expr StmtList
G
R
E F
condition body
![Page 16: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/16.jpg)
References cross the tree
R
Routine def B
Call D
G
R
E F
![Page 17: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/17.jpg)
Languages are sets of concepts
C1
C2C3
Cn
L1
L2
![Page 18: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/18.jpg)
![Page 19: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/19.jpg)
![Page 20: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/20.jpg)
Programs and Languages
R
A B
C D
G
R
E F
C1
C2C3
Cn
L
Models consist of nodes
Meta-models consist of concepts
![Page 21: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/21.jpg)
IntelliJ IDEA inspections
![Page 22: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/22.jpg)
Groovy AST transformations
![Page 23: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/23.jpg)
Groovy AST transformations
![Page 24: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/24.jpg)
![Page 25: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/25.jpg)
![Page 26: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/26.jpg)
There's no life without trees
● Extending IDEs● External DSLs● Internal DSLs in modern languages
● Groovy AST transformations● Scala macros● Lisp, Clojure macros● Lombok
![Page 27: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/27.jpg)
Notations for DSLs
● Text● Diagrams● Tables● Forms● Mixtures of all● …
![Page 28: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/28.jpg)
Parsing is the bottleneck
… of language expressiveness
![Page 29: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/29.jpg)
Editing text
Parsing
![Page 30: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/30.jpg)
Programs are trees
R
A B
C D
G
R
E F
WhileLoop
MethodDef
MethodCall
L IfStatement
Models consist of nodes
Meta-models consist of concepts
![Page 31: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/31.jpg)
Editing trees directly
Projecting
![Page 32: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/32.jpg)
![Page 33: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/33.jpg)
![Page 34: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/34.jpg)
![Page 35: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/35.jpg)
by Jens Nerche @jensnerche
Rich syntaxes
![Page 36: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/36.jpg)
Combine languages
![Page 37: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/37.jpg)
Multiple notations
![Page 38: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/38.jpg)
Parsing is the bottleneck
… of language expressiveness
● Limits the possible syntaxes● Allows only one editable code visualization● Complicates combining languages
![Page 39: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/39.jpg)
Aspects of language definition
● Abstract syntax● Concrete syntax (editor)● Static semantics
● Constraints● Type-system● Dataflow
● Execution semantics / Generator● IDE support
![Page 40: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/40.jpg)
Books
● http://books.campagnelab.org
● http://dslbook.org
https://www.jetbrains.com/mps/publications
![Page 41: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/41.jpg)
Books
● http://books.campagnelab.org
● http://dslbook.org
← He is a Biologist!
https://www.jetbrains.com/mps/publications
![Page 42: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/42.jpg)
The limits of language are the limits of one's worldLudwig Wittgenstein
![Page 43: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/43.jpg)
Questions
Want more?
http://www.jetbrains.com/mps
@vaclav_pech
![Page 44: Domain Specific Language with pleasure](https://reader031.vdocuments.us/reader031/viewer/2022020300/58a6cd9c1a28abcc458b5db1/html5/thumbnails/44.jpg)
Image credits
http://www.flickr.com/photos/horiavarlan/4329908160/sizes/m/in/photostream/
http://www.flickr.com/photos/pink_floyd/2409134519/sizes/m/in/photostream/
http://www.flickr.com/photos/atache/4124732863/sizes/m/in/photostream/
http://www.flickr.com/photos/a_ninjamonkey/3294014627/sizes/m/in/photostream/
http://www.flickr.com/photos/carlc/1968636137/
http://www.flickr.com/photos/tasuki/3503304405/sizes/m/in/photostream/
http://www.flickr.com/photos/bmwccgb/5069454884/sizes/m/in/photostream/
http://www.flickr.com/photos/rpmarks/3932013183/sizes/m/in/photostream/
http://www.flickr.com/photos/orqwith/4325166853/
https://www.flickr.com/photos/charlestilford/732688216