#1 The diversity of terminology shows the large spectrum of shapes DSLs can take.
#2 As syntax and development environment matter, DSLs should allow the user to choose the right shape according to their usage or task.
#3 A metamorphic DSL vision is proposed where DSLs can adapt to the most appropriate shape, including transitioning between shapes based on usage or task.
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)
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
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?
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?
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
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
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
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)
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
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
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
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
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