Language oriented programming
Wie domänenspezifische Sprachen die Produktivität steigern




F.Riemenschneider
+49-151-173...
Inhalt

   Motivation
   Was ist LOP?
   Wo sind DSLs sinnvoll?
   DSLs mit Xtext und oAW
   Demonstration
   Zusamm...
Persistente Klassen: nötiger Programmcode




                         Person              hat   Adressen




© itemis AG ...
Persistente Klassen: fachlicher Gehalt




© itemis AG 2009 – Alle Rechte vorbehalten   4
Generalität als Nachteil

   Java ist eine General Purpose Language (GPL)
       man kann damit alles programmieren, …
 ...
WSDL und XML-Schema: XML als Sprache?




© itemis AG 2009 – Alle Rechte vorbehalten   6
WSDL und XML-Schema: fachlicher Gehalt




© itemis AG 2009 – Alle Rechte vorbehalten   7
Der Wunsch

   Problemadäquate, einfache Sprachen.

   Vorteile
       Lösungen sind schnell formulierbar, …
       be...
Programmiersprachen und Problemdomänen


                                                            Schnitt-
            ...
Language oriented programming

   Eine pragmatische Definition
         "[…] a way to develop computer programs by creat...
DSLs und Model Driven Software Development

   Eine DSL ist ein Weg, fachliche Information in einem
    Model zu beschrei...
Wo sind DSLs sinnvoll?
                                             User Interface
                                       ...
Warum macht das nicht jeder?


   Kaum jemand hat die Idee.

   Gute Sprachen erfinden ist nicht einfach.

   Die Werkz...
Xtext

   Werkzeug für textuelle, externe DSLs.

   EBNF ähnliche Grammatik inkl. Editor
   In Eclipse integriert
   W...
Arbeitsschritte mit Xtext
             Architekturprototyp
                   bauen


            Ausdruck in Sprache
    ...
Beispiel: User Interface Language




 Idee: http://martinfowler.com/eaaDev/PresentationModel.html

© itemis AG 2009 – All...
Architekturprototyp bauen


   Klasse für View programmieren (162 LoC).

   Klasse für PresentationModel programmieren (...
Ausdruck formulieren
          form EmployeeDetails (
            binding(employee:de.itemis.hoa.cleanmvc.samples.bo.Emplo...
Grammatik definieren




© itemis AG 2009 – Alle Rechte vorbehalten   19
Auf Zielsprache abbilden

   Xtext erzeugt aus "Programm" ein internes Modell, das
    der Grammatik entspricht.
   Mode...
Ausrollen des sprachspezifischen Editors




© itemis AG 2009 – Alle Rechte vorbehalten   21
Produktivitätssteigerung
   Weniger Schreibarbeit

   Lösung in DSL ist leichter zu lesen

   Teures Spezialwissen auf ...
Erste Schritte (1)

   Install Eclipse Galileo, downloaded from
    http://www.eclipse.org/downloads/

   Use Galileo Up...
Erste Schritte (2)

   New / Other / Xtext Project

   Generate Xtext Artifacts by Run As / MWE Workflow on
    Generate...
Demonstration




© itemis AG 2009 – Alle Rechte vorbehalten   25
Zusammenfassung

   DSLs sind ein mächtiger Hebel.

   Freie Werkzeuge sind reif für den Gebrauch durch
    Jedermann.

...
Vielen Dank für die Aufmerksamkeit




                                             Fragen?


© itemis AG 2009 – Alle Rech...
Upcoming SlideShare
Loading in...5
×

Tech Talk: LOP und DSLs

624

Published on

Domänenspezifische Sprachen sind keine Geheimwissenschaft, tatsächlich
begleiten sie Java Entwickler schon seit geraumer Zeit, z.B. in Form von
JPA-QL, XSLT oder Regular Expressions. Mit Werkzeugen wie Xtext, ANTLR,
MGrammar oder MPS lassen sich heute in wenigen Stunden eigene, externe
DSLs erstellen. Der Vortrag zeigt Anwendungsgebiete in typischen Java
Enterprise Systemen und demonstriert den Einstieg mit Xtext.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
624
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tech Talk: LOP und DSLs

  1. 1. Language oriented programming Wie domänenspezifische Sprachen die Produktivität steigern F.Riemenschneider +49-151-173 96 730 falko.riemenschneider@itemis.de © itemis AG 2009 – Alle Rechte vorbehalten 26.01.2010
  2. 2. Inhalt  Motivation  Was ist LOP?  Wo sind DSLs sinnvoll?  DSLs mit Xtext und oAW  Demonstration  Zusammenfassung © itemis AG 2009 – Alle Rechte vorbehalten 2
  3. 3. Persistente Klassen: nötiger Programmcode Person hat Adressen © itemis AG 2009 – Alle Rechte vorbehalten 3
  4. 4. Persistente Klassen: fachlicher Gehalt © itemis AG 2009 – Alle Rechte vorbehalten 4
  5. 5. Generalität als Nachteil  Java ist eine General Purpose Language (GPL)  man kann damit alles programmieren, …  aber manches ist umständlich.  Umständlich bedeutet:  schwerer zu verstehen  mühsam zu ändern  viele Fehler möglich © itemis AG 2009 – Alle Rechte vorbehalten 5
  6. 6. WSDL und XML-Schema: XML als Sprache? © itemis AG 2009 – Alle Rechte vorbehalten 6
  7. 7. WSDL und XML-Schema: fachlicher Gehalt © itemis AG 2009 – Alle Rechte vorbehalten 7
  8. 8. Der Wunsch  Problemadäquate, einfache Sprachen.  Vorteile  Lösungen sind schnell formulierbar, …  besser zu verstehen, leichter zu ändern, …  und werden fehlerfrei auf die Zielsprache abgebildet. © itemis AG 2009 – Alle Rechte vorbehalten 8
  9. 9. Programmiersprachen und Problemdomänen Schnitt- stellen DSLs Persistenz User Unittests Interface Interpretation oder Übersetzung Turing-berechenbare GPL: Java, C++, C# Probleme © itemis AG 2009 – Alle Rechte vorbehalten 9
  10. 10. Language oriented programming  Eine pragmatische Definition  "[…] a way to develop computer programs by creating a new language or modifying an existing one. The new language created during the process will be extremely problem-focused and efficient at solving the given problem." Quelle: http://fragmental.tw/research-on-dsls/language-oriented-programming-lop/  LOP setzt domänenspezifische Sprachen (DSLs) an lohnenswerten Stellen ein. © itemis AG 2009 – Alle Rechte vorbehalten 10
  11. 11. DSLs und Model Driven Software Development  Eine DSL ist ein Weg, fachliche Information in einem Model zu beschreiben.  DSLs können textuell oder graphisch sein.  Aus externen DSLs kann man Code generieren (muss man aber nicht). © itemis AG 2009 – Alle Rechte vorbehalten 11
  12. 12. Wo sind DSLs sinnvoll? User Interface Pageflow Mapping WSDL Geschäftsklassen XML-Schema OR-Mapping Queries © itemis AG 2009 – Alle Rechte vorbehalten 12
  13. 13. Warum macht das nicht jeder?  Kaum jemand hat die Idee.  Gute Sprachen erfinden ist nicht einfach.  Die Werkzeuge sind sperrig. © itemis AG 2009 – Alle Rechte vorbehalten 13
  14. 14. Xtext  Werkzeug für textuelle, externe DSLs.  EBNF ähnliche Grammatik inkl. Editor  In Eclipse integriert  Wizard erzeugt DSL Editor und Generatorprojekt  www.Xtext.org © itemis AG 2009 – Alle Rechte vorbehalten 14
  15. 15. Arbeitsschritte mit Xtext Architekturprototyp bauen Ausdruck in Sprache formulieren Grammatik definieren Auf Zielsprache abbilden Ins Team ausrollen © itemis AG 2009 – Alle Rechte vorbehalten 15
  16. 16. Beispiel: User Interface Language Idee: http://martinfowler.com/eaaDev/PresentationModel.html © itemis AG 2009 – Alle Rechte vorbehalten 16
  17. 17. Architekturprototyp bauen  Klasse für View programmieren (162 LoC).  Klasse für PresentationModel programmieren (67 LoC).  Testen / Refaktorisieren / Optimieren. © itemis AG 2009 – Alle Rechte vorbehalten 17
  18. 18. Ausdruck formulieren form EmployeeDetails ( binding(employee:de.itemis.hoa.cleanmvc.samples.bo.Employee) dialog(title:String size[300 150]) layout(table columns[gap label fill gap] rows[gap input input input fill button gap]) elements( c("1,1 ") label "First name" c("2,1 ") textfield binding(employee.firstname:String) c("1,2 ") label "Last name" c("2,2 ") textfield binding(employee.lastname:String) c("1,3 ") label "Position" c("2,3 ") textfield binding(employee.position:String) c("1,5,2,5") panel flow right ( button "Add" >ok button "Cancel" >cancel ) ) ) © itemis AG 2009 – Alle Rechte vorbehalten 18
  19. 19. Grammatik definieren © itemis AG 2009 – Alle Rechte vorbehalten 19
  20. 20. Auf Zielsprache abbilden  Xtext erzeugt aus "Programm" ein internes Modell, das der Grammatik entspricht.  Modell mit Extent anreichern.  Aus Modell mit Xpand Zielprogramm generieren. © itemis AG 2009 – Alle Rechte vorbehalten 20
  21. 21. Ausrollen des sprachspezifischen Editors © itemis AG 2009 – Alle Rechte vorbehalten 21
  22. 22. Produktivitätssteigerung  Weniger Schreibarbeit  Lösung in DSL ist leichter zu lesen  Teures Spezialwissen auf wenige Mitarbeiter beschränkt  Weniger Fehler, höhere Codequalität  Automatische Durchsetzung der Architektur © itemis AG 2009 – Alle Rechte vorbehalten 22
  23. 23. Erste Schritte (1)  Install Eclipse Galileo, downloaded from http://www.eclipse.org/downloads/  Use Galileo Update Site to add Xtext, Xpand and MWE from the Modeling section.  Add ANTLR using the Xtext Update Site: http://download.itemis.com/updates/milestones © itemis AG 2009 – Alle Rechte vorbehalten 23
  24. 24. Erste Schritte (2)  New / Other / Xtext Project  Generate Xtext Artifacts by Run As / MWE Workflow on GenerateMyDsl.mwe in .mydsl project  Generate Sample Code by Run As / MWE Workflow on MyDslGenerator.mwe in .generator project © itemis AG 2009 – Alle Rechte vorbehalten 24
  25. 25. Demonstration © itemis AG 2009 – Alle Rechte vorbehalten 25
  26. 26. Zusammenfassung  DSLs sind ein mächtiger Hebel.  Freie Werkzeuge sind reif für den Gebrauch durch Jedermann.  Es gibt genügend "Ecken", die den Versuch lohnen. © itemis AG 2009 – Alle Rechte vorbehalten 26
  27. 27. Vielen Dank für die Aufmerksamkeit Fragen? © itemis AG 2009 – Alle Rechte vorbehalten 27
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×