Języki specyficzne dla domeny (DSL) istnieją odkąd zajmuję się informatyką, ale trudno jest znaleźć wiele informacji o tym, jak z nimi pracować. DSL to małe języki, skoncentrowane na konkretnym aspekcie systemu oprogramowania. Nie można zbudować całego programu za pomocą DSL, ale często używa się wielu DSL w systemie napisanym głównie w języku ogólnego przeznaczenia.
DSL występują w dwóch głównych formach: zewnętrznej i wewnętrznej. Zewnętrzny DSL to język, który jest parsowany niezależnie od głównego języka ogólnego przeznaczenia: dobrymi przykładami są wyrażenia regularne i CSS. Zewnętrzne DSL mają silną tradycję w społeczności uniksowej. Wewnętrzne DSL są szczególną formą API w języku ogólnym hosta, często określaną jako płynny interfejs. Sposób w jaki biblioteki szydercze, takie jak JMock, definiują oczekiwania wobec testów są tego dobrym przykładem, podobnie jak wiele mechanizmów używanych przez Ruby on Rails. Wewnętrzne DSL również mają długą tradycję użycia, szczególnie w społeczności Lisp.
Ludzie uważają DSL za wartościowe, ponieważ dobrze zaprojektowany DSL może być znacznie łatwiejszy do programowania niż tradycyjna biblioteka. Poprawia to produktywność programistów, co zawsze jest cenne. W szczególności może to także poprawić komunikację z ekspertami w danej dziedzinie, co jest ważnym narzędziem w rozwiązywaniu jednego z najtrudniejszych problemów w tworzeniu oprogramowania. CSS jest tego doskonałym przykładem, większość ludzi, którzy programują CSS nie uważa się za programistów. Mimo to nie sądzę, by użytkownicy końcowi pisali bezpośrednio w DSL – ważne jest usprawnienie komunikacji.
Mimo że DSL istnieją od dawna, brak wiedzy o tym, jak z nimi programować, stanowi istotną barierę – i właśnie dlatego pracowałem nad tą książką. Książka ta zawiera techniki tworzenia zarówno wewnętrznych, jak i zewnętrznych DSL, dając Ci zarówno informacje pozwalające na wybór pomiędzy nimi, jak i dobry pakiet informacji do rozpoczęcia pracy. Podkreślam również znaczenie nakładania DSL na bibliotekę, tak że zazwyczaj buduje się je razem. Jest też materiał na temat generowania kodu, co jest czasami niezbędną częścią pracy z DSL.
Podobnie jak P z EAA, ta książka jest książką dupleksową, dostarczającą zarówno narracji do nauki o DSL, jak i książki referencyjnej dla szczegółów, więc nie przeraża Was duża liczba stron. Możesz uzyskać dobre zrozumienie tematu, czytając część narracyjną (142 strony) i użyć reszty jako odniesienia do zanurzenia się, gdy tego potrzebujesz.
Elektroniczne kopie tej książki są dostępne. Amazon ma wersję na kindle. InformIT ma wersje epub i pdf. Apple ma wersję epub w ibookstore.