SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
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
Inhalt

   Motivation
   Was ist LOP?
   Wo sind DSLs sinnvoll?
   DSLs mit Xtext und oAW
   Demonstration
   Zusammenfassung




© itemis AG 2009 – Alle Rechte vorbehalten   2
Persistente Klassen: nötiger Programmcode




                         Person              hat   Adressen




© itemis AG 2009 – Alle Rechte vorbehalten                    3
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, …
       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
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, …
       besser zu verstehen, leichter zu ändern, …
       und werden fehlerfrei auf die Zielsprache abgebildet.




© itemis AG 2009 – Alle Rechte vorbehalten                      8
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
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
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
Wo sind DSLs sinnvoll?
                                             User Interface
                                               Pageflow
                    Mapping




     WSDL                                         Geschäftsklassen
   XML-Schema




          OR-Mapping
                                             Queries

© itemis AG 2009 – Alle Rechte vorbehalten                      12
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
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
Arbeitsschritte mit Xtext
             Architekturprototyp
                   bauen


            Ausdruck in Sprache
                formulieren
                                             Grammatik
                                             definieren
                                                           Auf Zielsprache
                                                              abbilden



                                                          Ins Team ausrollen

© itemis AG 2009 – Alle Rechte vorbehalten                                     15
Beispiel: User Interface Language




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

© itemis AG 2009 – Alle Rechte vorbehalten                     16
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
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
Grammatik definieren




© itemis AG 2009 – Alle Rechte vorbehalten   19
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
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 wenige Mitarbeiter beschränkt

   Weniger Fehler, höhere Codequalität

   Automatische Durchsetzung der Architektur

© itemis AG 2009 – Alle Rechte vorbehalten                   22
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
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
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.

   Es gibt genügend "Ecken", die den Versuch lohnen.




© itemis AG 2009 – Alle Rechte vorbehalten              26
Vielen Dank für die Aufmerksamkeit




                                             Fragen?


© itemis AG 2009 – Alle Rechte vorbehalten               27

Weitere ähnliche Inhalte

Ähnlich wie Tech Talk: LOP und DSLs

Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
T4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte EntwicklungT4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte Entwicklungdominion
 
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...David Decker
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven DesignTobiasFrischholz
 
Authoring Management
Authoring ManagementAuthoring Management
Authoring Managementvzimmermann
 
Xpages - oder was man mit einer alten Notes-DB so alles anstellen kann
Xpages - oder was man mit einer alten Notes-DB so alles anstellen kannXpages - oder was man mit einer alten Notes-DB so alles anstellen kann
Xpages - oder was man mit einer alten Notes-DB so alles anstellen kannBelsoft
 
Praktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller ÜbersetzungPraktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller ÜbersetzungSDL Language Technologies
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeDevOps Meetup Bern
 
bpc workshops sap idex common layer
bpc workshops sap idex common layerbpc workshops sap idex common layer
bpc workshops sap idex common layerbpcag
 
DOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFDOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFUlrich Gerkmann-Bartels
 
Onno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellenOnno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellenlernet
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationGeorg Eck
 
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...Robin Sedlaczek
 
.NET Core Architecture (UI)
.NET Core Architecture (UI).NET Core Architecture (UI)
.NET Core Architecture (UI)Robin Sedlaczek
 
Typ-sichere DSLs
Typ-sichere DSLsTyp-sichere DSLs
Typ-sichere DSLsWerner Keil
 

Ähnlich wie Tech Talk: LOP und DSLs (20)

Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
T4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte EntwicklungT4 S1 Objektorienierte Entwicklung
T4 S1 Objektorienierte Entwicklung
 
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
WordPress sprachfähig machen - Lokalisierung Kür oder Krampf? - WordCamp Deut...
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Authoring Management
Authoring ManagementAuthoring Management
Authoring Management
 
.NET und jetzt!
.NET und jetzt!.NET und jetzt!
.NET und jetzt!
 
Mdd Days 2009 Handout
Mdd Days 2009   HandoutMdd Days 2009   Handout
Mdd Days 2009 Handout
 
Xpages - oder was man mit einer alten Notes-DB so alles anstellen kann
Xpages - oder was man mit einer alten Notes-DB so alles anstellen kannXpages - oder was man mit einer alten Notes-DB so alles anstellen kann
Xpages - oder was man mit einer alten Notes-DB so alles anstellen kann
 
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
 
Praktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller ÜbersetzungPraktischer Einsatz maschineller Übersetzung
Praktischer Einsatz maschineller Übersetzung
 
OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as Code
 
bpc workshops sap idex common layer
bpc workshops sap idex common layerbpc workshops sap idex common layer
bpc workshops sap idex common layer
 
DOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADFDOAG SIG Development: BI Publisher and Oracle ADF
DOAG SIG Development: BI Publisher and Oracle ADF
 
Onno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellenOnno Reiners: E-Learning einfach selbst erstellen
Onno Reiners: E-Learning einfach selbst erstellen
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
Neue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen DokumentationNeue Konzepte in der Technischen Dokumentation
Neue Konzepte in der Technischen Dokumentation
 
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...
 
.NET Core Architecture (UI)
.NET Core Architecture (UI).NET Core Architecture (UI)
.NET Core Architecture (UI)
 
Typ-sichere DSLs
Typ-sichere DSLsTyp-sichere DSLs
Typ-sichere DSLs
 

Tech Talk: LOP und DSLs

  • 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. Inhalt  Motivation  Was ist LOP?  Wo sind DSLs sinnvoll?  DSLs mit Xtext und oAW  Demonstration  Zusammenfassung © itemis AG 2009 – Alle Rechte vorbehalten 2
  • 3. Persistente Klassen: nötiger Programmcode Person hat Adressen © itemis AG 2009 – Alle Rechte vorbehalten 3
  • 4. Persistente Klassen: fachlicher Gehalt © itemis AG 2009 – Alle Rechte vorbehalten 4
  • 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. WSDL und XML-Schema: XML als Sprache? © itemis AG 2009 – Alle Rechte vorbehalten 6
  • 7. WSDL und XML-Schema: fachlicher Gehalt © itemis AG 2009 – Alle Rechte vorbehalten 7
  • 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. 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. 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. 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. Wo sind DSLs sinnvoll? User Interface Pageflow Mapping WSDL Geschäftsklassen XML-Schema OR-Mapping Queries © itemis AG 2009 – Alle Rechte vorbehalten 12
  • 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. 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. 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. Beispiel: User Interface Language Idee: http://martinfowler.com/eaaDev/PresentationModel.html © itemis AG 2009 – Alle Rechte vorbehalten 16
  • 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. 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. Grammatik definieren © itemis AG 2009 – Alle Rechte vorbehalten 19
  • 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. Ausrollen des sprachspezifischen Editors © itemis AG 2009 – Alle Rechte vorbehalten 21
  • 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. 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. 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. Demonstration © itemis AG 2009 – Alle Rechte vorbehalten 25
  • 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. Vielen Dank für die Aufmerksamkeit Fragen? © itemis AG 2009 – Alle Rechte vorbehalten 27