5. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
6. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
nice transformation
languages
7. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
nice transformation
languages
open source IDEs
8. Lots of problems are solved
textual
DSL frameworks
graphical
DSL frameworks
nice validation nice transformation
languages languages
open source IDEs
9. Lots of problems are solved
textual
DSL frameworks
nice template graphical
languages DSL frameworks
nice validation nice transformation
languages languages
open source IDEs
10. Lots of problems are solved
textual
DSL frameworks
nice template graphical
languages DSL frameworks
proven infrastructure
nice validation nice transformation
languages languages
open source IDEs
16. Information hiding in computer science is the
principle of the hiding of design decisions in a
computer program that are most likely to change,
thus protecting other parts of the program from
change if the design decision is changed. The
protection involves providing a stable interface which
shields the remainder of the program from the
implementation (the details that are most likely to
change).
Hiding
implementation details?
18. atio n of c
Se par once
rns?
In computer science, separation of concerns (SoC) is
the process of breaking a computer program into
distinct features that overlap in functionality as little as
possible. A concern is any piece of interest or focus in a
program. Typically, concerns are synonymous with
features or behaviors.
28. Protected Regions
• generated and manually written code mixed
up
• manual deletion of artifacts
• platform dependent information
29. Protected Regions
• generated and manually written code mixed
up
• manual deletion of artifacts
• platform dependent information
• information is dispersed!
38. Black box
target language literals
• bound to target platform
• no option for MDA friends
• no tooling!
39. Black box
target language literals
• bound to target platform
• no option for MDA friends
• no tooling!
• long turnarounds!
41. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
42. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
43. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
44. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
45. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
46. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
47. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
48. reuse target platform
developers know it
libraries
very good tooling
proven
dispersed information
complexity in code generation
hard to built interpreters
49. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
50. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
51. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
52. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
53. reuse target platform invent expressions
developers know it non-dispersed information
libraries very complex
very good tooling very expensive
relatively low potential for
proven
further abstraction
dispersed information
complexity in code generation
hard to built interpreters
56. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
57. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
58. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
59. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
60. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
61. But what if ...
reuse target platform expression as library
developers know it non-dispersed information
libraries nicer expression language
- closures
very good tooling
- type inference
proven - operator overloading
dispersed information extendable (e.g. custom literals)
complexity in code generation good tooling
hard to built interpreters additional learning curve
64. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
65. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
66. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
67. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
68. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
69. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
70. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
71. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
72. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
73. concrete syntax grammar mixing
abstract syntax meta model reuse
constraints static analysis and validation
execution time compiler and interpreter
development time IDE support
105. Context-aware scanning
can be confusing
import “http://namespace/” as
generate import “http://namespace/” as alias
import “http://namespace/” as generate
import “http://namespace/” as alias
106. Context-aware scanning
can be confusing
Import:
import “http://namespace/” as lias
generate import ort ‘U RI’ as a
imp “http://namespace/” as alias
nerate:
“http://namespace/” s algenerate
Ge import as ias
te name ‘URI’ a as alias
import “http://namespace/”
genera
107. Context-aware scanning
can be confusing
import “http://namespace/” as
generate import “http://namespace/” as alias
import “http://namespace/” as generate
import “http://namespace/” as alias
108. Be cautious!
• be careful with new keywords
• minimize set of terminals
• think about extensibility