I linguaggi specifici del dominio (DSL) esistono da quando sono nell’informatica, ma è difficile trovare molte informazioni su come lavorare con loro. I DSL sono piccoli linguaggi, focalizzati su un particolare aspetto di un sistema software. Non si può costruire un intero programma con un DSL, ma spesso si usano più DSL in un sistema scritto principalmente in un linguaggio general purpose.
I DSL hanno due forme principali: esterno e interno. Un DSL esterno è un linguaggio che viene analizzato indipendentemente dal linguaggio general purpose che lo ospita: buoni esempi sono le espressioni regolari e i CSS. I DSL esterni hanno una forte tradizione nella comunità Unix. I DSL interni sono una forma particolare di API in un linguaggio host general purpose, spesso indicato come un’interfaccia fluente. Il modo in cui le librerie di mocking, come JMock, definiscono le aspettative per i test sono buoni esempi di questo, così come molti dei meccanismi utilizzati da Ruby on Rails. Anche i DSL interni hanno una lunga tradizione di utilizzo, in particolare nella comunità Lisp.
Le persone trovano i DSL preziosi perché un DSL ben progettato può essere molto più facile da programmare di una libreria tradizionale. Questo migliora la produttività del programmatore, il che è sempre prezioso. In particolare può anche migliorare la comunicazione con gli esperti di dominio, che è uno strumento importante per affrontare uno dei problemi più difficili nello sviluppo del software. I CSS sono un eccellente esempio di questo, la maggior parte delle persone che programmano CSS non si considerano programmatori. Nonostante questo, comunque, non penso che gli utenti finali di solito scrivano direttamente in DSL – è il miglioramento della comunicazione che è importante.
Anche se i DSL sono in giro da molto tempo, la mancanza di conoscenza di come programmare con loro è una barriera significativa – che è esattamente il motivo per cui ho lavorato a questo libro. Il libro fornisce tecniche per sviluppare sia DSL interne che esterne, dandovi sia le informazioni per scegliere tra di esse che un buon pacchetto di informazioni per iniziare il vostro lavoro. Sottolineo anche l’importanza di stratificare un DSL sopra una libreria, in modo che di solito si costruiscono entrambi insieme. C’è anche materiale sulla generazione del codice, che è una parte occasionalmente essenziale del lavoro con un DSL.
Come P di EAA questo libro è un libro duplex, che fornisce sia una narrazione per imparare i DSL che un libro di riferimento per i dettagli, quindi non fatevi spaventare dall’alto numero di pagine. Potete ottenere una buona comprensione dell’argomento leggendo la sezione narrativa (142 pagine) e usare il resto come riferimento per immergervi quando ne avete bisogno.
Copie elettroniche di questo libro sono disponibili. Amazon ha una versione per kindle. InformIT ha versioni epub e pdf. Apple ha una versione epub nell’ibookstore.