SlideShare une entreprise Scribd logo
1  sur  101
Télécharger pour lire hors ligne
Metamorphic 
Domain-Specific Languages 
Mathieu Acher, Benoit Combemale, Philippe Collet
Acknowledgements 
Thomas Degueule, 
Guillaume Bécan, Olivier 
Barais, Julien Richard-Foy, 
Jean-Marc Jézéquel 
members 
and Jonathan Aldrich
Graphviz 
PGN 
Make Matlab 
Finite State 
Machine 
Domain-Specific Languages (DSLs)
« Another lesson we should have learned from the recent past is 
that the development of 'richer' or 'more powerful' programming 
languages was a mistake in the sense that these baroque 
monstrosities, these conglomerations of idiosyncrasies, are really 
unmanageable, both mechanically and mentally. 
I see a great future for very systematic and 
very modest programming languages » 
ACM Turing Lecture, « The Humble Programmer » 
Edsger W. Dijkstra 
4 
aka Domain- 
Specific 
Languages 
1972
5 
2011
6 
2011 
« Domain-specific 
languages are far more 
prevalent than 
anticipated »
DSL = 
Syntax + Services 
Specialized notation: 
Textual or Graphical 
Specific Vocabulary 
Idiomatic constructs 
Specialized tools/IDE: 
Editor with auto-completion, syntax highlighting, etc. 
Compiler 
Interpreter 
Debugger 
Profiler 
Syntax/Type Checker 
…
Why DSLs exist? 
Because there is no 
one-size-fits-all solution! 
Domain-Specific Languages (DSLs)
General Purpose Languages 
(e.g., Java, Scala, Haskell, Ruby) 
No one-size-fits-all 
solution! 
We need DSLs, whatever they’re 
Domain-Specific Languages (DSLs)
Even for a given domain and class of 
problem, there is no one-size-fits-all solution! 
(Java) 
(Clojure) 
(Scala) 
(C#) 
(PHP) 
(Plain text SQL) 
Domain-Specific Language (DSL)
Even for a given domain and class of 
problem, there is no one-size-fits-all solution! 
Polymorphic DSLs: 
different shapes 
(Java) 
(Clojure) 
(Scala) 
(C#) 
(PHP) 
(Plain text SQL)
(Plain text SQL) 
(Java) 
Notation and Services differ. 
Pros. Cons. in both sides.
Metamorphic DSLs: 
moving from one shape to another 
(Java) 
(Clojure) 
(Scala) 
(C#) 
(PHP) 
(Plain text SQL)
shape 
#1 
shape 
#2 
shape 
#3 
Plain SQL 
(external DSL) 
Java 
(internal DSL) 
Scala 
(internal DSL)
shape 
#1 
shape 
#2 
shape 
#3 
FAMILIAR 
(external DSL) 
Java 
(internal DSL) 
Scala 
(internal DSL) 
shape 
#0 
Java 
(SPLAR API)
Metamorphic DSL 
Vision: software languages should be self-adaptable 
to the most appropriate shape 
(including the corresponding IDE) and 
according to a particular usage or task. 
shape 
#1 
shape 
#2 
shape 
#3 
Plain SQL 
(external DSL) 
Java 
(internal DSL) 
Scala 
(internal DSL)
Where the idea of metamorphic 
• Analysis of the DSL erea 
– Socio-technical aspects of DSLs suggest the 
idea of supporting different shapes 
• 4-years experience of developping different 
shapes of a DSL 
– FAMILIAR (for performing operations over 
feature models) 
• Scenarios with Metamorphic DSLs 
17 
DSL comes from?
• Traditional dichotomy between internal DSL 
and external DSL (Fowler et al., 2010) 
– Fluent APIs 
– Internal DSLs 
– (deeply) embedded DSLs 
– External DSLs 
– What’s LINQ? 
• Boundary between DSL and GPL is not that 
clear (Voelter et al., 2013) 
– What is and what is not a DSL is still a debate 
19 
#1 Diversity of terminology
#1 The diversity of 
terminology shows the 
large spectrum of 
shapes DSLs can take
#2 Syntax and Environment Matter 
• Promises of DSL« improvement » in terms of 
– usability, learnability, expressiveness, reusability, etc. 
• Empirical study on the role of syntax 
– C-style syntax induces problems in terms of usability 
for novices; language more or less intuitive for 
(non-)programmers (Stefik et al. 2014) 
– Syntax issues with Java for students (Denny et al. 2011) 
– PL usability: method namings/placement, use of 
identifiers, API design (Ellis et al., Styllos et al., Clarke, Montperrus et 
al., etc.) 
• More specialized/sophicated tools/IDE can be 
derived from a DSL 
– editors, compilers, debuggers 
21
#2 As syntax and development 
environment matter, we should 
allow the user to choose the 
right shape of a DSL 
Meyerovich and Rabkin « Empirical 
analysis of programming language adoption » 
OOPSLA’13
#3 Language 
Workbenches 
Erdweg et al. SLE’13 
23
#3 The community of language 
engineering is providing more and 
more mature solutions for building 
DSLs – being external or internal. 
Developers of DSLs have now a 
variety of strategies to choose 
from and build an appropriate 
shape.
Shaping Up DSL! 
• Diversity of terminological clarifications 
• Role of syntax and environment 
• Developers can devise new DSL 
• All suggest the idea of having different shapes of a 
DSL 
• What is missing is a systematic solution for 
transitioning from one shape to another 
– We would like to open a given artefact (expressed in a DSL) 
with another syntax and another environment 
– Metamorphic DSL
In 2010, we have developed theoretical foundations, 
efficient algorithms for a certain number of operations 
(merge, aggregate, slice, refactor, synthesis, diff, etc.) 
over feature models (see Acher PhD thesis) 
Optional 
Mandatory 
Xor-Group 
Or-Group 
Organization of « features » (configuration options) into a hierarchy 
Specification of what combinations of features (configurations) are allowed
FAMILIAR (Acher et al. 2013) 
• In 2010, we have developed theoretical 
foundations, efficient algorithms for a certain 
number of operations (merge, aggregate, slice, 
refactor, synthesis, diff, etc.) over feature 
models 
• One question that came across: how to provide 
the support (language + environment) so that 
people (partners, researchers, students, us) 
can use our operations?
shape 
#0 
Java 
(SPLAR API)
#0 
• Too much verbose and technical, right? 
• Don’t get it wrong: SPLAR is a great API (certainly the 
most popular) but… 
– the audience (i.e., researchers in charge of developping/ 
benchmarking efficient algorithms) 
– the design goal (i.e., extensible mechanisms to adapt 
reasoning mechanisms) 
does not fit our purpose 
• We simply wanted to offer a way to merge two feature 
models and then, say, count the number of 
configuration and configure it 
– Three lines right?
OK 6 lines ;-)
#1 
• Problem resolved? 
• External nature of the DSL poses two kinds of 
problems 
– Integration of FAMILIAR to other applications 
– Limits of its expressiveness 
• We have added foreach-like loop, if-then-else, and even 
ways to define reusable scripts… Also facilities for 
manipulating strings (like concatenation) 
• At some points, we have even doubted that FAMILIAR 
was a DSL (~a kind of restricted GPL)
#2 
• We shift to a fluent Java API 
– easier to integrate to other Java-based tools 
– foreach / if then else / string manipulation are 
already there
#3 
• Suboptimal notation (e.g., still verbose) 
• REPL
What the hell is going on? 
• 3 attempts. THREE. 
• But no superior / one-size-fits-all solution 
– We still like the external solution: (1) concise 
notation and the dedicated support ; (2) when 
communicating with other researchers, students, or 
partners 
– We still like the Java/Scala solution when we want 
to build variability-intensive, integrated applications
WebFML 
We still like the external solution (1) concise notation 
and dedicated support ; (2) when communicating with 
other researchers, students, or partners
WebFML 
Effective 
communication 
Understandability 
Learnability
We still like the Java/Scala solution when we want to 
build variability-intensive, integrated applications 
Expressiveness 
Integration to other systems 
Tuning of internal details (solvers)
What the hell is going on? 
• 3 attempts. THREE. 
• But no superior / one-size-fits-all solution 
• Are we all wrong? 
– No! Keeping all variants does make sense, with 
pros and cons depending on the « context » 
• Metamorphic DSL 
– We would like to transition from one shape to the 
other
shape 
#1 
shape 
#2 
shape 
#3 
FAMILIAR 
(external DSL) 
Java 
(internal DSL) 
Scala 
(internal DSL) 
shape 
#0 
Java 
(SPLAR API)
Same kind of story with SQL 
• Do you want to learn SQL with Java? 
• Can you rule the world with only SQL? 
shape 
#1 
shape 
#2 
shape 
#3 
Plain SQL 
(external DSL) 
Java 
(internal DSL) 
Scala 
(internal DSL)
Metamorphic DSL 
IDE 1 
a 
DSL 
Specification 
a 
DSL 
Articfact 
IDE 2
Scenario #1 
• Help people to quickly learn the language and 
transition to another shape when needs be 
– NB: can be the same person!
Scenario #2 
• People can use the more advanced support for 
understanding / debugging feature models 
– NB: can be the same person!
Scenario #(1+2) 
• People can use the more advanced support for 
understanding / debugging feature models 
– And back again!
Scenario #1 
• Help people to quickly learn the language and 
transition to another shape when needs be 
– NB: can be the same person!
Scenario #2 
• People can use the more advanced support for 
understanding / debugging SQL queries 
– NB: can be the same person!
Scenario #(1+2) 
• People can use the more advanced support for 
understanding / debugging SQL queries 
– And back again!
Scenario #(Putting All Together) 
Say a company wants to develop a web configurator 
for assisting customers in the selection of products
mysql>'SELECT&*&FROM&products; 
+)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 
|'productID'|'productCode'|'name''''''|'quantity'|'gps''''''''| 
+)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 
|''''''1001'|'PEN'''''''''|'Car'Red'''|'''''5000'|'''''''true'| 
|''''''1002'|'PEN'''''''''|'Car'Blue''|'''''8000'|'''''''true'| 
|''''''1003'|'PEN'''''''''|'Car'Black'|'''''2000'|'''''''true'| 
|''''''1004'|'PEC'''''''''|'Car'2B''''|''''10000'|'''''''true'| 
|''''''1005'|'PEC'''''''''|'Car'2H''''|'''''8000'|'''''''false| 
|''''''1006'|'PEC'''''''''|'Car'HB''''|''''''''0'|'''''''false|'' 
+)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 
6'rows'in'set'(0.02'sec) 
product manager
We also have an 
Eclipse version 
marketing engineer
software engineer 
(Java API)
software engineer 
(Java API) 
marketing engineer 
product manager
Metamorphic DSLs 
FAMILIAR 
definition 
a 
SQL 
query 
a 
FAMILIAR 
script 
<<conformsTo>> 
<<editedWith>> 
SQL <<generates>> 
definition 
mysql>'SELECT&*&FROM&products; 
+)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 
|'productID'|'productCode'|'name''''''|'quantity'|'gps''''''''| 
+)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 
|''''''1001'|'PEN'''''''''|'Car'Red'''|'''''5000'|'''''''true'| 
|''''''1002'|'PEN'''''''''|'Car'Blue''|'''''8000'|'''''''true'| 
|''''''1003'|'PEN'''''''''|'Car'Black'|'''''2000'|'''''''true'| 
|''''''1004'|'PEC'''''''''|'Car'2B''''|''''10000'|'''''''true'| 
|''''''1005'|'PEC'''''''''|'Car'2H''''|'''''8000'|'''''''false| 
|''''''1006'|'PEC'''''''''|'Car'HB''''|''''''''0'|'''''''false|'' 
+)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 
6'rows'in'set'(0.02'sec) 
software engineer 
product manager marketing engineer
Research Directions 
• What and where are metamorphic DSLs? 
• Empirical studies for investigating the role of 
syntax and environment 
• Solution for building metamorphic DSL 
• Solution in the large: does metamorphic DSL 
pay off?
#1 Research Direction 
(metamorphic classification) 
• What are metamorphic DSLs? 
– Precise definition/scope is missing 
• Where are metamorphic DSLs? 
– Empirical observation and inventory ongoing 
• Are all DSLs metamorphic?
#2 Research Direction 
(empirical studies) 
• H0: Syntax and environment matter 
– H1: suboptimal notation can decrease understandibility 
– H2: non comprehensive environment support can 
drecrease usability or productivity 
– … 
– Hn: … 
• But empirical evidence is missing 
– e.g., JOOQ for new learners <<<<< plain SQL for new 
learners? 
– e.g., Impact of the absence of profiling/benchmark tools
#3 Research Direction 
(solution) 
• Solution for building metamorphic DSL 
– Bi-directional transformations for moving from one 
shape to another (and back again) 
– Engineering a new shape of a DSL (when the shape is 
missing) 
– Reuse, « core » 
• HCI issues 
– Copy and paste? 
– Open with? 
– Features of projectional editors? 
– Self-mechanism?
#4 Research Direction 
(solution in the large) 
• Engineering metamorphic DSLs 
– Does it pay off for users and developers? 
• From the users’ perspective « switching » can have a 
cognitive cost 
• From the developers’ perspective it requires effort 
(hopefully little!) 
• Metamorphic scenarios 
– Communication/socio-technical issues 
• Case studies, controlled experiments
Where the idea of Metamorphic 
DSL comes from? 
• Languages with specialized notation and services exist 
because a one size-fits-all-solution is unlikely = DSLs 
• Follow up argument: a one-size-fits-all solution is 
unlikely even for a given DSL (domain/class of problem) 
– Different shapes of a DSL 
– How to transition from one shape to another? 
• Both users, developers, and researchers want to 
shape up DSLs 
• All based on practical experience (FAMILIAR) and 
observation (e.g., literature, SQL)
Metamorphic DSL 
• Optimistic view of DSL diversity 
– We should embrace, promote, and support 
diversity in DSLs ; users are diverse, have 
different requirements, and are using DSLs in 
numerous different contexts 
• DSLs should be self-adaptable to the 
most appropriate shape (including the 
corresponding IDE), according to a 
particular usage or task
Metamorphic DSL 
• Optimistic view of DSL diversity 
• DSLs should be self-adaptable to the most 
appropriate shape (including the corresponding IDE), 
according to a particular usage or task 
• A great future for DSL; additional research effort is 
needed 
– to further understand the concept of metamorphic 
DSL (what/where are they? why/when some shapes 
are more adequate?) 
– to provide effective solution for transitioning from 
one shape to another
HTML 
Domain: web (markup) 
68
https://github.com/julienrf/glitter 
Scala 
TCS Wyvern (Omar et al., OOPLSA’14)
https://github.com/inukshuk/bibtex-ruby
CSS 
Domain: web (styling) 
72
Makefile 
Domain: software building 
73
Lighthttpd configuration 
file 
Domain: web server (configuration) 
74
Graphviz 
Domain: graph (drawing) 
75
http://drdozer.github.io/graphviz-s/ 
http://turingatemyhamster.co.uk/blog/?p=157 
https://github.com/glejeune/Ruby-Graphviz/
Regular expression 
Domain: strings (pattern matching) 
77
Portable 
Game 
Notation (PGN)
PGN and DSL promises 
Easy to read, write, exchange, process 
It is all about games information and moves (nothing 
more) 
Success (chess players/tools): 8 millions games
« Alternatives » to PGN (other DSLs) 
• For handling chess variants 
– e.g., Chess960 
• Proprietary extensions 
• For recording a particular game position 
– Forsyth–Edwards Notation (FEN) 
rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/ 
RNBQKBNR b KQkq e3 0 1
I have a question 
Is it a domain-specific 
language!??! 
https://github.com/capicue/pgn
Is it a DSL? 
YES, yes, yes !!! 
Just another « shape » of PGN
FEN and PGN in Ruby
PGN in 
Python? 
https://github.com/renatopp/pgnparser
PGN in 
????
Internal Shapes 
External Shapes
Internal Shapes 
(DSLs) 
External Shapes 
(DSLs)
Metamorphic 
DSL
External DSLs vs Internal DSLs 
• An external DSL is a completely separate 
language and has its own custom syntax/ 
tooling support (e.g., editor) 
• An internal DSL is more or less a set of 
APIs written on top of a host language 
(e.g., Java). 
– Fluent interfaces 
93
External vs Internal DSL (SQL example) 
94
DSL (LINQ/C# example) 
95
Internal DSL 
• « Using a host language (e.g., Java) to give the 
host language the feel of a particular 
language. » 
• Fluent Interfaces 
– « The more the use of the API has that language like 
flow, the more fluent it is » 
96
SQL in… Java 
DSL in GPL 
97
Regular expression in… Java 
DSL in GPL 
98
Internal DSLs vs External DSL 
• Both internal and external DSLs have 
strengths and weaknesses (Fowler) 
– learning curve, 
– cost of building, 
– programmer familiarity, 
– communication with domain experts, 
– mixing in the host language, 
– strong expressiveness boundary 
• Focus of the course 
– external DSL a completely separate language 
with its own custom syntax and tooling support 
(e.g., editor) 
99
AAccttoorrss

Contenu connexe

Tendances

Texas.gov Presents: Battle of Programming Languages
Texas.gov Presents:  Battle of Programming LanguagesTexas.gov Presents:  Battle of Programming Languages
Texas.gov Presents: Battle of Programming LanguagesTexas.gov
 
Survival analysis of database technologies in open source Java projects
Survival analysis of database technologies in open source Java projectsSurvival analysis of database technologies in open source Java projects
Survival analysis of database technologies in open source Java projectsTom Mens
 
Finding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeFinding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeAndrzej Wasowski
 
Evolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projectsEvolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projectsTom Mens
 
Synapse india fundamentals of dotnet development
Synapse india fundamentals of dotnet  developmentSynapse india fundamentals of dotnet  development
Synapse india fundamentals of dotnet developmentSynapseindiappsdevelopment
 
02 intro to programming in .net (part 2)
02   intro to programming in .net (part 2)02   intro to programming in .net (part 2)
02 intro to programming in .net (part 2)Felisha Hosein
 
Taxonomy of Differential Compression
Taxonomy of Differential CompressionTaxonomy of Differential Compression
Taxonomy of Differential CompressionLiwei Ren任力偉
 
Xuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent ApplicationsXuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent ApplicationsMachine Learning Prague
 

Tendances (12)

Texas.gov Presents: Battle of Programming Languages
Texas.gov Presents:  Battle of Programming LanguagesTexas.gov Presents:  Battle of Programming Languages
Texas.gov Presents: Battle of Programming Languages
 
Survival analysis of database technologies in open source Java projects
Survival analysis of database technologies in open source Java projectsSurvival analysis of database technologies in open source Java projects
Survival analysis of database technologies in open source Java projects
 
Msr17a.ppt
Msr17a.pptMsr17a.ppt
Msr17a.ppt
 
Dot net
Dot netDot net
Dot net
 
Finding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeFinding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux Code
 
Evolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projectsEvolution of database access technologies in Java-based software projects
Evolution of database access technologies in Java-based software projects
 
Icsme16.ppt
Icsme16.pptIcsme16.ppt
Icsme16.ppt
 
Synapse india fundamentals of dotnet development
Synapse india fundamentals of dotnet  developmentSynapse india fundamentals of dotnet  development
Synapse india fundamentals of dotnet development
 
Niladri_Sekhar_Das
Niladri_Sekhar_DasNiladri_Sekhar_Das
Niladri_Sekhar_Das
 
02 intro to programming in .net (part 2)
02   intro to programming in .net (part 2)02   intro to programming in .net (part 2)
02 intro to programming in .net (part 2)
 
Taxonomy of Differential Compression
Taxonomy of Differential CompressionTaxonomy of Differential Compression
Taxonomy of Differential Compression
 
Xuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent ApplicationsXuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent Applications
 

En vedette

The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...confluent
 
Integration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computingIntegration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computingSHAKIL AKHTAR
 
Mule integration patterns
Mule    integration patternsMule    integration patterns
Mule integration patternshimajareddys
 
Using Scala for building DSLs
Using Scala for building DSLsUsing Scala for building DSLs
Using Scala for building DSLsIndicThreads
 
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Kai Wähner
 
Java One - Designing a DSL in Kotlin
Java One - Designing a DSL in KotlinJava One - Designing a DSL in Kotlin
Java One - Designing a DSL in KotlinNicolas Fränkel
 
Integration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical SystemsIntegration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical SystemsAngelo Corsaro
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo Corsaro
 
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Kai Wähner
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging ServicePeter R. Egli
 
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...Kai Wähner
 

En vedette (12)

The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
 
Java Messaging Service
Java Messaging ServiceJava Messaging Service
Java Messaging Service
 
Integration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computingIntegration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computing
 
Mule integration patterns
Mule    integration patternsMule    integration patterns
Mule integration patterns
 
Using Scala for building DSLs
Using Scala for building DSLsUsing Scala for building DSLs
Using Scala for building DSLs
 
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
 
Java One - Designing a DSL in Kotlin
Java One - Designing a DSL in KotlinJava One - Designing a DSL in Kotlin
Java One - Designing a DSL in Kotlin
 
Integration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical SystemsIntegration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical Systems
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging Service
 
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
 

Similaire à Metamorphic Domain-Specific Languages

Introduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallIntroduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallJohn Mulhall
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?Markus Voelter
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
Programming Languages #devcon2013
Programming Languages #devcon2013Programming Languages #devcon2013
Programming Languages #devcon2013Iván Montes
 
A Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpA Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpRikki Wright
 
groovy DSLs from beginner to expert
groovy DSLs from beginner to expertgroovy DSLs from beginner to expert
groovy DSLs from beginner to expertPaul King
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling WorldsIstvan Rath
 
JSR 335 / java 8 - update reference
JSR 335 / java 8 - update referenceJSR 335 / java 8 - update reference
JSR 335 / java 8 - update referencesandeepji_choudhary
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptAliyaJav
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaDmitry Buzdin
 
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docxA Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docxbartholomeocoombs
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Javawiradikusuma
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven designRick van der Arend
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaJohn Nestor
 
java tutorial for beginners learning.ppt
java tutorial for beginners learning.pptjava tutorial for beginners learning.ppt
java tutorial for beginners learning.pptusha852
 
02 java programming basic
02  java programming basic02  java programming basic
02 java programming basicZeeshan-Shaikh
 

Similaire à Metamorphic Domain-Specific Languages (20)

Introduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John MulhallIntroduction to Software - Coder Forge - John Mulhall
Introduction to Software - Coder Forge - John Mulhall
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Programming Languages #devcon2013
Programming Languages #devcon2013Programming Languages #devcon2013
Programming Languages #devcon2013
 
A Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpA Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And Rlbp
 
groovy DSLs from beginner to expert
groovy DSLs from beginner to expertgroovy DSLs from beginner to expert
groovy DSLs from beginner to expert
 
oodb.ppt
oodb.pptoodb.ppt
oodb.ppt
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 
JSR 335 / java 8 - update reference
JSR 335 / java 8 - update referenceJSR 335 / java 8 - update reference
JSR 335 / java 8 - update reference
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
 
Chapter no 1
Chapter no 1Chapter no 1
Chapter no 1
 
AestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in ScalaAestasIT - Internal DSLs in Scala
AestasIT - Internal DSLs in Scala
 
General oop concept
General oop conceptGeneral oop concept
General oop concept
 
Oodb
OodbOodb
Oodb
 
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docxA Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
A Survey on Domain-Specific Languages for Machine.pdfA Sur.docx
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Java
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
Experience Converting from Ruby to Scala
Experience Converting from Ruby to ScalaExperience Converting from Ruby to Scala
Experience Converting from Ruby to Scala
 
java tutorial for beginners learning.ppt
java tutorial for beginners learning.pptjava tutorial for beginners learning.ppt
java tutorial for beginners learning.ppt
 
02 java programming basic
02  java programming basic02  java programming basic
02 java programming basic
 

Plus de University of Rennes, INSA Rennes, Inria/IRISA, CNRS

Plus de University of Rennes, INSA Rennes, Inria/IRISA, CNRS (20)

A Demonstration of End-User Code Customization Using Generative AI
A Demonstration of End-User Code Customization Using Generative AIA Demonstration of End-User Code Customization Using Generative AI
A Demonstration of End-User Code Customization Using Generative AI
 
24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)
24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)
24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)
 
On Programming Variability with Large Language Model-based Assistant
On Programming Variability with Large Language Model-based AssistantOn Programming Variability with Large Language Model-based Assistant
On Programming Variability with Large Language Model-based Assistant
 
Generative AI for Reengineering Variants into Software Product Lines: An Expe...
Generative AI for Reengineering Variants into Software Product Lines: An Expe...Generative AI for Reengineering Variants into Software Product Lines: An Expe...
Generative AI for Reengineering Variants into Software Product Lines: An Expe...
 
Tackling Deep Software Variability Together
Tackling Deep Software Variability TogetherTackling Deep Software Variability Together
Tackling Deep Software Variability Together
 
On anti-cheating in chess, science, reproducibility, and variability
On anti-cheating in chess, science, reproducibility, and variabilityOn anti-cheating in chess, science, reproducibility, and variability
On anti-cheating in chess, science, reproducibility, and variability
 
Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...
Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...
Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...
 
Machine Learning and Deep Software Variability
Machine Learning and Deep Software VariabilityMachine Learning and Deep Software Variability
Machine Learning and Deep Software Variability
 
Mastering Software Variability for Innovation and Science
Mastering Software Variability for Innovation and ScienceMastering Software Variability for Innovation and Science
Mastering Software Variability for Innovation and Science
 
Transfer Learning Across Variants and Versions: The Case of Linux Kernel Size
Transfer Learning Across Variants and Versions: The Case of Linux Kernel SizeTransfer Learning Across Variants and Versions: The Case of Linux Kernel Size
Transfer Learning Across Variants and Versions: The Case of Linux Kernel Size
 
Teaching Software Product Lines: A Snapshot of Current Practices and Challenges
Teaching Software Product Lines: A Snapshot of Current Practices and ChallengesTeaching Software Product Lines: A Snapshot of Current Practices and Challenges
Teaching Software Product Lines: A Snapshot of Current Practices and Challenges
 
Assessing Product Line Derivation Operators Applied to Java Source Code: An E...
Assessing Product Line Derivation Operators Applied to Java Source Code: An E...Assessing Product Line Derivation Operators Applied to Java Source Code: An E...
Assessing Product Line Derivation Operators Applied to Java Source Code: An E...
 
Synthesis of Attributed Feature Models From Product Descriptions
Synthesis of Attributed Feature Models From Product DescriptionsSynthesis of Attributed Feature Models From Product Descriptions
Synthesis of Attributed Feature Models From Product Descriptions
 
From Basic Variability Models to OpenCompare.org
From Basic Variability Models to OpenCompare.orgFrom Basic Variability Models to OpenCompare.org
From Basic Variability Models to OpenCompare.org
 
Pandoc: a universal document converter
Pandoc: a universal document converterPandoc: a universal document converter
Pandoc: a universal document converter
 
WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)
WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)
WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)
 
A survey on teaching of software product lines
A survey on teaching of software product linesA survey on teaching of software product lines
A survey on teaching of software product lines
 
Product Comparison Matrix (PCM), Variability Modeling: The Wikipedia Case Study
Product Comparison Matrix (PCM), Variability Modeling: The Wikipedia Case StudyProduct Comparison Matrix (PCM), Variability Modeling: The Wikipedia Case Study
Product Comparison Matrix (PCM), Variability Modeling: The Wikipedia Case Study
 
Ec2013 tutorial-mb variability-final
Ec2013 tutorial-mb variability-finalEc2013 tutorial-mb variability-final
Ec2013 tutorial-mb variability-final
 
ASE'11 (short paper)
ASE'11 (short paper)ASE'11 (short paper)
ASE'11 (short paper)
 

Dernier

From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIInflectra
 
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...Abortion Clinic
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Flutter Agency
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphNeo4j
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAShane Coughlan
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdftimtebeek1
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxNeo4j
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanNeo4j
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConNatan Silnitsky
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...naitiksharma1124
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Andreas Granig
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMarkus Moeller
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfkalichargn70th171
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNeo4j
 

Dernier (20)

Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
 
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
Abortion Clinic In Johannesburg ](+27832195400*)[ 🏥 Safe Abortion Pills in Jo...
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdf
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
 
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Turfloop ](+27832195400*)[ 🏥 Women's Abortion Clinic in ...
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdf
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 

Metamorphic Domain-Specific Languages

  • 1. Metamorphic Domain-Specific Languages Mathieu Acher, Benoit Combemale, Philippe Collet
  • 2. Acknowledgements Thomas Degueule, Guillaume Bécan, Olivier Barais, Julien Richard-Foy, Jean-Marc Jézéquel members and Jonathan Aldrich
  • 3. Graphviz PGN Make Matlab Finite State Machine Domain-Specific Languages (DSLs)
  • 4. « Another lesson we should have learned from the recent past is that the development of 'richer' or 'more powerful' programming languages was a mistake in the sense that these baroque monstrosities, these conglomerations of idiosyncrasies, are really unmanageable, both mechanically and mentally. I see a great future for very systematic and very modest programming languages » ACM Turing Lecture, « The Humble Programmer » Edsger W. Dijkstra 4 aka Domain- Specific Languages 1972
  • 6. 6 2011 « Domain-specific languages are far more prevalent than anticipated »
  • 7. DSL = Syntax + Services Specialized notation: Textual or Graphical Specific Vocabulary Idiomatic constructs Specialized tools/IDE: Editor with auto-completion, syntax highlighting, etc. Compiler Interpreter Debugger Profiler Syntax/Type Checker …
  • 8. Why DSLs exist? Because there is no one-size-fits-all solution! Domain-Specific Languages (DSLs)
  • 9. General Purpose Languages (e.g., Java, Scala, Haskell, Ruby) No one-size-fits-all solution! We need DSLs, whatever they’re Domain-Specific Languages (DSLs)
  • 10. Even for a given domain and class of problem, there is no one-size-fits-all solution! (Java) (Clojure) (Scala) (C#) (PHP) (Plain text SQL) Domain-Specific Language (DSL)
  • 11. Even for a given domain and class of problem, there is no one-size-fits-all solution! Polymorphic DSLs: different shapes (Java) (Clojure) (Scala) (C#) (PHP) (Plain text SQL)
  • 12. (Plain text SQL) (Java) Notation and Services differ. Pros. Cons. in both sides.
  • 13. Metamorphic DSLs: moving from one shape to another (Java) (Clojure) (Scala) (C#) (PHP) (Plain text SQL)
  • 14. shape #1 shape #2 shape #3 Plain SQL (external DSL) Java (internal DSL) Scala (internal DSL)
  • 15. shape #1 shape #2 shape #3 FAMILIAR (external DSL) Java (internal DSL) Scala (internal DSL) shape #0 Java (SPLAR API)
  • 16. Metamorphic DSL Vision: software languages should be self-adaptable to the most appropriate shape (including the corresponding IDE) and according to a particular usage or task. shape #1 shape #2 shape #3 Plain SQL (external DSL) Java (internal DSL) Scala (internal DSL)
  • 17. Where the idea of metamorphic • Analysis of the DSL erea – Socio-technical aspects of DSLs suggest the idea of supporting different shapes • 4-years experience of developping different shapes of a DSL – FAMILIAR (for performing operations over feature models) • Scenarios with Metamorphic DSLs 17 DSL comes from?
  • 18.
  • 19. • Traditional dichotomy between internal DSL and external DSL (Fowler et al., 2010) – Fluent APIs – Internal DSLs – (deeply) embedded DSLs – External DSLs – What’s LINQ? • Boundary between DSL and GPL is not that clear (Voelter et al., 2013) – What is and what is not a DSL is still a debate 19 #1 Diversity of terminology
  • 20. #1 The diversity of terminology shows the large spectrum of shapes DSLs can take
  • 21. #2 Syntax and Environment Matter • Promises of DSL« improvement » in terms of – usability, learnability, expressiveness, reusability, etc. • Empirical study on the role of syntax – C-style syntax induces problems in terms of usability for novices; language more or less intuitive for (non-)programmers (Stefik et al. 2014) – Syntax issues with Java for students (Denny et al. 2011) – PL usability: method namings/placement, use of identifiers, API design (Ellis et al., Styllos et al., Clarke, Montperrus et al., etc.) • More specialized/sophicated tools/IDE can be derived from a DSL – editors, compilers, debuggers 21
  • 22. #2 As syntax and development environment matter, we should allow the user to choose the right shape of a DSL Meyerovich and Rabkin « Empirical analysis of programming language adoption » OOPSLA’13
  • 23. #3 Language Workbenches Erdweg et al. SLE’13 23
  • 24. #3 The community of language engineering is providing more and more mature solutions for building DSLs – being external or internal. Developers of DSLs have now a variety of strategies to choose from and build an appropriate shape.
  • 25. Shaping Up DSL! • Diversity of terminological clarifications • Role of syntax and environment • Developers can devise new DSL • All suggest the idea of having different shapes of a DSL • What is missing is a systematic solution for transitioning from one shape to another – We would like to open a given artefact (expressed in a DSL) with another syntax and another environment – Metamorphic DSL
  • 26.
  • 27. In 2010, we have developed theoretical foundations, efficient algorithms for a certain number of operations (merge, aggregate, slice, refactor, synthesis, diff, etc.) over feature models (see Acher PhD thesis) Optional Mandatory Xor-Group Or-Group Organization of « features » (configuration options) into a hierarchy Specification of what combinations of features (configurations) are allowed
  • 28. FAMILIAR (Acher et al. 2013) • In 2010, we have developed theoretical foundations, efficient algorithms for a certain number of operations (merge, aggregate, slice, refactor, synthesis, diff, etc.) over feature models • One question that came across: how to provide the support (language + environment) so that people (partners, researchers, students, us) can use our operations?
  • 29. shape #0 Java (SPLAR API)
  • 30. #0 • Too much verbose and technical, right? • Don’t get it wrong: SPLAR is a great API (certainly the most popular) but… – the audience (i.e., researchers in charge of developping/ benchmarking efficient algorithms) – the design goal (i.e., extensible mechanisms to adapt reasoning mechanisms) does not fit our purpose • We simply wanted to offer a way to merge two feature models and then, say, count the number of configuration and configure it – Three lines right?
  • 31. OK 6 lines ;-)
  • 32. #1 • Problem resolved? • External nature of the DSL poses two kinds of problems – Integration of FAMILIAR to other applications – Limits of its expressiveness • We have added foreach-like loop, if-then-else, and even ways to define reusable scripts… Also facilities for manipulating strings (like concatenation) • At some points, we have even doubted that FAMILIAR was a DSL (~a kind of restricted GPL)
  • 33. #2 • We shift to a fluent Java API – easier to integrate to other Java-based tools – foreach / if then else / string manipulation are already there
  • 34. #3 • Suboptimal notation (e.g., still verbose) • REPL
  • 35. What the hell is going on? • 3 attempts. THREE. • But no superior / one-size-fits-all solution – We still like the external solution: (1) concise notation and the dedicated support ; (2) when communicating with other researchers, students, or partners – We still like the Java/Scala solution when we want to build variability-intensive, integrated applications
  • 36. WebFML We still like the external solution (1) concise notation and dedicated support ; (2) when communicating with other researchers, students, or partners
  • 37. WebFML Effective communication Understandability Learnability
  • 38. We still like the Java/Scala solution when we want to build variability-intensive, integrated applications Expressiveness Integration to other systems Tuning of internal details (solvers)
  • 39. What the hell is going on? • 3 attempts. THREE. • But no superior / one-size-fits-all solution • Are we all wrong? – No! Keeping all variants does make sense, with pros and cons depending on the « context » • Metamorphic DSL – We would like to transition from one shape to the other
  • 40. shape #1 shape #2 shape #3 FAMILIAR (external DSL) Java (internal DSL) Scala (internal DSL) shape #0 Java (SPLAR API)
  • 41. Same kind of story with SQL • Do you want to learn SQL with Java? • Can you rule the world with only SQL? shape #1 shape #2 shape #3 Plain SQL (external DSL) Java (internal DSL) Scala (internal DSL)
  • 42. Metamorphic DSL IDE 1 a DSL Specification a DSL Articfact IDE 2
  • 43.
  • 44. Scenario #1 • Help people to quickly learn the language and transition to another shape when needs be – NB: can be the same person!
  • 45. Scenario #2 • People can use the more advanced support for understanding / debugging feature models – NB: can be the same person!
  • 46. Scenario #(1+2) • People can use the more advanced support for understanding / debugging feature models – And back again!
  • 47. Scenario #1 • Help people to quickly learn the language and transition to another shape when needs be – NB: can be the same person!
  • 48. Scenario #2 • People can use the more advanced support for understanding / debugging SQL queries – NB: can be the same person!
  • 49. Scenario #(1+2) • People can use the more advanced support for understanding / debugging SQL queries – And back again!
  • 50. Scenario #(Putting All Together) Say a company wants to develop a web configurator for assisting customers in the selection of products
  • 51. mysql>'SELECT&*&FROM&products; +)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ |'productID'|'productCode'|'name''''''|'quantity'|'gps''''''''| +)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ |''''''1001'|'PEN'''''''''|'Car'Red'''|'''''5000'|'''''''true'| |''''''1002'|'PEN'''''''''|'Car'Blue''|'''''8000'|'''''''true'| |''''''1003'|'PEN'''''''''|'Car'Black'|'''''2000'|'''''''true'| |''''''1004'|'PEC'''''''''|'Car'2B''''|''''10000'|'''''''true'| |''''''1005'|'PEC'''''''''|'Car'2H''''|'''''8000'|'''''''false| |''''''1006'|'PEC'''''''''|'Car'HB''''|''''''''0'|'''''''false|'' +)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 6'rows'in'set'(0.02'sec) product manager
  • 52. We also have an Eclipse version marketing engineer
  • 54. software engineer (Java API) marketing engineer product manager
  • 55. Metamorphic DSLs FAMILIAR definition a SQL query a FAMILIAR script <<conformsTo>> <<editedWith>> SQL <<generates>> definition mysql>'SELECT&*&FROM&products; +)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ |'productID'|'productCode'|'name''''''|'quantity'|'gps''''''''| +)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ |''''''1001'|'PEN'''''''''|'Car'Red'''|'''''5000'|'''''''true'| |''''''1002'|'PEN'''''''''|'Car'Blue''|'''''8000'|'''''''true'| |''''''1003'|'PEN'''''''''|'Car'Black'|'''''2000'|'''''''true'| |''''''1004'|'PEC'''''''''|'Car'2B''''|''''10000'|'''''''true'| |''''''1005'|'PEC'''''''''|'Car'2H''''|'''''8000'|'''''''false| |''''''1006'|'PEC'''''''''|'Car'HB''''|''''''''0'|'''''''false|'' +)))))))))))+)))))))))))))+)))))))))))+))))))))))+))))))))))))+ 6'rows'in'set'(0.02'sec) software engineer product manager marketing engineer
  • 56.
  • 57. Research Directions • What and where are metamorphic DSLs? • Empirical studies for investigating the role of syntax and environment • Solution for building metamorphic DSL • Solution in the large: does metamorphic DSL pay off?
  • 58. #1 Research Direction (metamorphic classification) • What are metamorphic DSLs? – Precise definition/scope is missing • Where are metamorphic DSLs? – Empirical observation and inventory ongoing • Are all DSLs metamorphic?
  • 59. #2 Research Direction (empirical studies) • H0: Syntax and environment matter – H1: suboptimal notation can decrease understandibility – H2: non comprehensive environment support can drecrease usability or productivity – … – Hn: … • But empirical evidence is missing – e.g., JOOQ for new learners <<<<< plain SQL for new learners? – e.g., Impact of the absence of profiling/benchmark tools
  • 60. #3 Research Direction (solution) • Solution for building metamorphic DSL – Bi-directional transformations for moving from one shape to another (and back again) – Engineering a new shape of a DSL (when the shape is missing) – Reuse, « core » • HCI issues – Copy and paste? – Open with? – Features of projectional editors? – Self-mechanism?
  • 61. #4 Research Direction (solution in the large) • Engineering metamorphic DSLs – Does it pay off for users and developers? • From the users’ perspective « switching » can have a cognitive cost • From the developers’ perspective it requires effort (hopefully little!) • Metamorphic scenarios – Communication/socio-technical issues • Case studies, controlled experiments
  • 62.
  • 63. Where the idea of Metamorphic DSL comes from? • Languages with specialized notation and services exist because a one size-fits-all-solution is unlikely = DSLs • Follow up argument: a one-size-fits-all solution is unlikely even for a given DSL (domain/class of problem) – Different shapes of a DSL – How to transition from one shape to another? • Both users, developers, and researchers want to shape up DSLs • All based on practical experience (FAMILIAR) and observation (e.g., literature, SQL)
  • 64. Metamorphic DSL • Optimistic view of DSL diversity – We should embrace, promote, and support diversity in DSLs ; users are diverse, have different requirements, and are using DSLs in numerous different contexts • DSLs should be self-adaptable to the most appropriate shape (including the corresponding IDE), according to a particular usage or task
  • 65. Metamorphic DSL • Optimistic view of DSL diversity • DSLs should be self-adaptable to the most appropriate shape (including the corresponding IDE), according to a particular usage or task • A great future for DSL; additional research effort is needed – to further understand the concept of metamorphic DSL (what/where are they? why/when some shapes are more adequate?) – to provide effective solution for transitioning from one shape to another
  • 66.
  • 67.
  • 68. HTML Domain: web (markup) 68
  • 69. https://github.com/julienrf/glitter Scala TCS Wyvern (Omar et al., OOPLSA’14)
  • 70.
  • 72. CSS Domain: web (styling) 72
  • 74. Lighthttpd configuration file Domain: web server (configuration) 74
  • 75. Graphviz Domain: graph (drawing) 75
  • 77. Regular expression Domain: strings (pattern matching) 77
  • 79.
  • 80.
  • 81. PGN and DSL promises Easy to read, write, exchange, process It is all about games information and moves (nothing more) Success (chess players/tools): 8 millions games
  • 82. « Alternatives » to PGN (other DSLs) • For handling chess variants – e.g., Chess960 • Proprietary extensions • For recording a particular game position – Forsyth–Edwards Notation (FEN) rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/ RNBQKBNR b KQkq e3 0 1
  • 83.
  • 84. I have a question Is it a domain-specific language!??! https://github.com/capicue/pgn
  • 85. Is it a DSL? YES, yes, yes !!! Just another « shape » of PGN
  • 86. FEN and PGN in Ruby
  • 87. PGN in Python? https://github.com/renatopp/pgnparser
  • 90. Internal Shapes (DSLs) External Shapes (DSLs)
  • 92.
  • 93. External DSLs vs Internal DSLs • An external DSL is a completely separate language and has its own custom syntax/ tooling support (e.g., editor) • An internal DSL is more or less a set of APIs written on top of a host language (e.g., Java). – Fluent interfaces 93
  • 94. External vs Internal DSL (SQL example) 94
  • 96. Internal DSL • « Using a host language (e.g., Java) to give the host language the feel of a particular language. » • Fluent Interfaces – « The more the use of the API has that language like flow, the more fluent it is » 96
  • 97. SQL in… Java DSL in GPL 97
  • 98. Regular expression in… Java DSL in GPL 98
  • 99. Internal DSLs vs External DSL • Both internal and external DSLs have strengths and weaknesses (Fowler) – learning curve, – cost of building, – programmer familiarity, – communication with domain experts, – mixing in the host language, – strong expressiveness boundary • Focus of the course – external DSL a completely separate language with its own custom syntax and tooling support (e.g., editor) 99
  • 100.