Domänenspezifische Sprachen (DSLs) gibt es, seit ich in der Informatik bin, aber es ist schwer, viele Informationen darüber zu finden, wie man mit ihnen arbeitet. DSLs sind kleine Sprachen, die sich auf einen bestimmten Aspekt eines Softwaresystems konzentrieren. Man kann kein ganzes Programm mit einer DSL bauen, aber man verwendet oft mehrere DSLs in einem System, das hauptsächlich in einer Allzwecksprache geschrieben ist.
DSLs gibt es in zwei Hauptformen: externe und interne. Eine externe DSL ist eine Sprache, die unabhängig von der Host-Allzwecksprache geparst wird: gute Beispiele sind reguläre Ausdrücke und CSS. Externe DSLs haben eine starke Tradition in der Unix-Gemeinschaft. Interne DSLs sind eine besondere Form der API in einer Host-Allzwecksprache, die oft als fließende Schnittstelle bezeichnet wird. Die Art und Weise, wie Mocking-Bibliotheken, wie z. B. JMock, Erwartungen für Tests definieren, sind gute Beispiele dafür, ebenso wie viele der von Ruby on Rails verwendeten Mechanismen. Interne DSLs haben ebenfalls eine lange Tradition, besonders in der Lisp-Community.
Die Leute finden DSLs wertvoll, weil eine gut entworfene DSL viel einfacher zu programmieren sein kann als eine traditionelle Bibliothek. Das verbessert die Produktivität der Programmierer, was immer wertvoll ist. Insbesondere kann es auch die Kommunikation mit Domänenexperten verbessern, was ein wichtiges Werkzeug ist, um eines der schwierigsten Probleme in der Softwareentwicklung anzugehen. CSS ist ein hervorragendes Beispiel dafür, die meisten Leute, die CSS programmieren, halten sich selbst nicht für Programmierer. Trotzdem glaube ich nicht, dass Endanwender in der Regel direkt in DSLs schreiben werden – es ist die Verbesserung der Kommunikation, die wichtig ist.
Obwohl es DSLs schon lange gibt, ist das fehlende Wissen, wie man mit ihnen programmiert, eine große Barriere – genau deshalb habe ich an diesem Buch gearbeitet. Das Buch bietet Techniken, um sowohl interne als auch externe DSLs zu entwickeln, und gibt Ihnen sowohl die Informationen, um zwischen ihnen zu wählen, als auch ein gutes Paket an Informationen, um Ihre Arbeit zu beginnen. Ich betone auch, wie wichtig es ist, eine DSL über eine Bibliothek zu schichten, so dass Sie in der Regel beides zusammen entwickeln. Es gibt auch Material über Code-Generierung, was ein gelegentlich essentieller Teil der Arbeit mit einer DSL ist.
Wie P von EAA ist dieses Buch ein Duplex-Buch, das sowohl eine Erzählung bietet, um über DSLs zu lernen, als auch ein Nachschlagewerk für die Details, also lassen Sie sich nicht von der hohen Seitenzahl abschrecken. Sie können einen guten Überblick über das Thema bekommen, indem Sie den erzählenden Teil (142 Seiten) lesen und den Rest als Nachschlagewerk verwenden, in das Sie eintauchen können, wenn Sie es brauchen.
Elektronische Kopien dieses Buches sind verfügbar. Amazon hat eine Version für Kindle. InformIT hat eine epub- und eine pdf-Version. Apple hat eine epub-Version im ibookstore.