Mittwoch, 27. Juni 2007

TheServerSide: Language-oriented Programming - DSL

Das TheServerSide Java Symposium, Barcelona hat soeben begonnen und er der erste Slot zum Thema 'Language-oriented Programming' wurde von Martin Fowler und Neal Ford gehalten (ThoughtWorks).

DSL - Domain Specific Language, das zentrale Thema in diesem Vortrag. Was ist DSL? DSL kann man am Beispiel einer menschlichen Sprache gut beschreiben. Wir verwenden Vokabeln, quasi API's. Vokabeln werden durch eine Grammatik, der Domain Specific Language, mit einer Semantik versehen. Je nach Sprache und Inhalt ergibt sich die Semantik.

DSL vs. API

Bei Domain Specific Language gibt es einen impliziten Kontext, beim API nicht, der muss explizit gemacht werden.
Bespiel: Kaffebestelllung bei Starbucks (DSL): "Ein Kaffe bitte, gross, mit Milch, kein Zucker, wenig Fett, zum Mitnehmen".
Beim API würde das in etwa so aussehen (Java API):

Coffee starbucksCoffee = new Coffee();
starbucksCoffee.setSize(Size.HUGE);
starbucksCoffee.setFatness(Fat.LOW);
starbucksCoffee.setSweetness(false);
etc.

Grundsätzlch unterscheidet man interne/embedded und externe DSL. JMock ist eine interne DSL (auch Fluent Interface genannt), externe DSL sind meistens XML basierte Beschreibungen und Konfigurationen, z.B. eine Konfiguration des Apache Webservers.

Warum DSL?

Ziel ist es, dass ein Business Analyst den Code lesen kann, um diesen zu verifizieren.

Keine Kommentare: