Domain-Specific Languages                             (DSLs) entwickeln und anwenden                             Kurzer Übe...
Was ist eine domänenspezifische Sprache?    •         Formale Sprache              (Ziel: Programmieren eines Computers)   ...
Was ist eine domänenspezifische Sprache?    •         Formale Sprache              (Ziel: Programmieren eines Computers)   ...
Kategorisierung von DSLs                                                                •     Eingebettet (Internal/Embedd...
Beispiele: Embedded DSLs    Reguläre Ausdrücke:1       System.out.println("aBb a5z aab".replaceAll("a[a-zA-Z]b", "bar")); ...
Beispiele: External DSLs    Maven Projektbeschreibungen:1     <project xmlns="...">2       <modelVersion>4.0.0</modelVersi...
Eigenschaften (meist :-)[>[->+>+<<]>[-<<-[>]>>>[<[-<->]                                                           •     De...
Vorteile    •         Produktivitätssteigerung    •         Kommunikation mit Domänenexperten    •         Separation of C...
Effektivität?Studie zur Komplexität von APIs:    •         Drei OOP Frameworks (JAXB, OpenSAML, simpleSAMLphp) und eine   ...
Aber: Sprachwirrwar vermeiden                             Pieter Bruegel, Turmbau zu Babel, 1563 — rpi-virtuell, http://ww...
Aber: Der Kontext muss klar seinhttp://www.xkcd.com/1090, cc-by-nc16. 1. 2013   c 2013   UNIVERSITÄT ROSTOCK | LEHRSTUHL F...
M. Fowler: Domain-Specific LanguagesInhalt:    1. Einführung    2. Grundlegende Entwurfsmuster    3. Patterns für externe D...
Semantic Model    •         Zentrales Domänenmodell    •         Kann durch verschiedene DSLs erzeugt / befüllt werden    ...
Beispiel: Method Chaining1   List<?> problems =2   session.createCriteria(ProblemDefinition.class).add(eq("scheme",       ...
Beispiel: Nested Function1   new Experiment with Observation {2     //...3     withRunResult {4       result => println("L...
Wer sollte dieses Buch lesen?    •         Gut für DSL-Einsteiger / einen ersten Überblick    •         Viele interessante...
Links    •         Buch-Homepage: http://martinfowler.com/dsl.html    •         Liste der Patterns: http://martinfowler.co...
Nächste SlideShare
Wird geladen in …5
×

Domain-Specific Languages (DSLs) entwickeln und anwenden

633 Aufrufe

Veröffentlicht am

Vortrag für die Java User Group Rostock (https://sites.google.com/site/jughro) am 16. 1. 2013 zu DSLs im Allgemeinen und dem Buch "Domain-Specific Languages" von Martin Fowler (http://martinfowler.com/dsl.html).

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
633
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
10
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Domain-Specific Languages (DSLs) entwickeln und anwenden

  1. 1. Domain-Specific Languages (DSLs) entwickeln und anwenden Kurzer Überblick & Buchrezension zu Domain-Specific Languages (Martin Fowler) Roland Ewald16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 1
  2. 2. Was ist eine domänenspezifische Sprache? • Formale Sprache (Ziel: Programmieren eines Computers) • Möglichst nah an natürlicher Sprache (bzgl. Kombinationen von Konstrukten etc.)16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 2
  3. 3. Was ist eine domänenspezifische Sprache? • Formale Sprache (Ziel: Programmieren eines Computers) • Möglichst nah an natürlicher Sprache (bzgl. Kombinationen von Konstrukten etc.) • Eingeschränkte Ausdruckskraft • Fokus auf eine bestimmte Anwendungsdomäne16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 2
  4. 4. Kategorisierung von DSLs • Eingebettet (Internal/Embedded DSL) • Extern (External DSL) • Language Workbenches (z.B. MDAs)http://www.flickr.com/photos/nofrills, cc-by-nc 16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 3
  5. 5. Beispiele: Embedded DSLs Reguläre Ausdrücke:1 System.out.println("aBb a5z aab".replaceAll("a[a-zA-Z]b", "bar")); Javadoc:1 /**2 * @author John Doe3 * @since 1.14 * @see Bar5 */6 public class Foo {7 //...8 } 16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 4
  6. 6. Beispiele: External DSLs Maven Projektbeschreibungen:1 <project xmlns="...">2 <modelVersion>4.0.0</modelVersion>3 <groupId>org.jamesii.archetypes</groupId>4 <artifactId>custom-extension</artifactId>5 <version>0.9.1-SNAPSHOT</version>6 <name>My Custom Extension</name>7 <packaging>jar</packaging>8 ...9 </project> Oder auch: CSS, SQL, UML, komplexere Konfigurationsdateien, Scripting-Interfaces, etc. 16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 5
  7. 7. Eigenschaften (meist :-)[>[->+>+<<]>[-<<-[>]>>>[<[-<->] • Deklarativer Stil<[>]>>[[-]>>+<]>-<]<<]>>>+<<[-<<+>>]<<<] • Keine Implementierungsdetails>>>>>[-<<<<<+>>>>>]<<<<< • Kurze, einfache, intuitive NotationDivision mit Brainfuck:http://jwodder.freeshell.org/brainf.html 16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 6
  8. 8. Vorteile • Produktivitätssteigerung • Kommunikation mit Domänenexperten • Separation of Concerns • Eingebettete DSLs sind meist einfacher zu entwicklen, externe DSLs bieten mehr Gestaltungsspielraum16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 7
  9. 9. Effektivität?Studie zur Komplexität von APIs: • Drei OOP Frameworks (JAXB, OpenSAML, simpleSAMLphp) und eine eingebettete DSL (xoSAML) • Vergleich mittels Object-Points Analyse„The main observation for our experiment is that the embedded, textual DSLincurs the smallest API complexity.“S. Sobernig, P. Gaubatz, M. Strembeck, and U. Zdun, Comparing complexity of API designs: an exploratory experiment on DSL-basedframework integration, in GPCE ’11. ACM, 2011, pp. 157-166. http://dx.doi.org/10.1145/2047862.204789016. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 8
  10. 10. Aber: Sprachwirrwar vermeiden Pieter Bruegel, Turmbau zu Babel, 1563 — rpi-virtuell, http://www.flickr.com/photos/84132860@N03, cc-by-nc16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 9
  11. 11. Aber: Der Kontext muss klar seinhttp://www.xkcd.com/1090, cc-by-nc16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 10
  12. 12. M. Fowler: Domain-Specific LanguagesInhalt: 1. Einführung 2. Grundlegende Entwurfsmuster 3. Patterns für externe DSLs 4. Patterns für eingebettete DSLs 5. Berechnungsmodelle 6. CodegenerierungDie Kapitel in den Teilen 2-6 sind immer gleich aufgebaut: How it works,When to use it, Beispiel(e)16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 11
  13. 13. Semantic Model • Zentrales Domänenmodell • Kann durch verschiedene DSLs erzeugt / befüllt werden • Bildet alle benötigten Elemente und deren Beziehungen ab • Erhöht z.B. Flexibilität und Wartbarkeit16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 12
  14. 14. Beispiel: Method Chaining1 List<?> problems =2 session.createCriteria(ProblemDefinition.class).add(eq("scheme", myScheme)).list(); • Konstruktion von Ausdrücken • Definition von Abläufen (do(x).then(y).or(z)) • Methodennamen müssen geschickt gewählt werden 16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 13
  15. 15. Beispiel: Nested Function1 new Experiment with Observation {2 //...3 withRunResult {4 result => println("Last x-value:" + result("x"))5 }6 } • Nicht alle Pattern funktionieren für alle Sprachen • Event Handling (ActionListener...) • Definition von Strukturen • etc. 16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 14
  16. 16. Wer sollte dieses Buch lesen? • Gut für DSL-Einsteiger / einen ersten Überblick • Viele interessante Techniken (ohne Anspruch auf Vollständigkeit) • Viele Code-Beispiele (Java, C#, etc.) • Jedoch kaum ’Theorie’16. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 15
  17. 17. Links • Buch-Homepage: http://martinfowler.com/dsl.html • Liste der Patterns: http://martinfowler.com/dslCatalog • Amazon: http://www.amazon.com/dp/032171294316. 1. 2013 c 2013 UNIVERSITÄT ROSTOCK | LEHRSTUHL FÜR MODELLIERUNG & SIMULATION 16

×