|By:||Rolf Langsdorf (LanX) from Darmstadt.pm|
|Date:||Not scheduled yet.|
Domain-Specific Languages (DSL) are a popular but controversial topic.
DSLs are small languages, focused on a particular aspect of a software system.
Invented in the LISP world they were later considered a killer feature of Ruby driving its reputation of being intuitive,
In this talk we'll concentrate on "internal DSLs" (contrary to "external DSLs" which just parse and interpret an external sub language like for instance Template::Toolkit with it's own sub language to build HTML)
Internal DSL bend and twist a host language to make it feel like a different one. Being fully embedded they allow to mix in features of the host language without syntax incompatibilities.
For instance does C# provide a build-in query language called LINQ.
Perl as host language provide a big variety of tools to design syntactic sugar, which needs to be mastered.
We will concentrate on the following questions:
- What exactly are internal DSLs
- What are their advantages over other approaches
- How can they be best designed
- What are the down sides and how can they be mitigated
- What are appropriate techniques for their implementation
- Which Perl specifics can be used here
As a practical examples we will design an own internal DSL for:
- An Assembler
- An IDE configuration
- A SQL abstraction