Dimmen met DSL’s

Maak of definieer zo min mogelijk eigen DSL’s. Een van de belangrijkste uitdagingen in de software engineering is het vertalen van problemen omschreven in natuurlijke taal naar een zekere vorm van een model dat dit probleem simuleert en sommige aspecten ervan gedeeltelijk automatiseert. Dit betekent allereerst dat het probleemdomein doorgrond moet worden en daarnaast dat je je een bepaalde modelleertaal eigen moet maken.

Met het creëren van een specifieke taal voor sommige aspecten van dit probleem (of, erger nog, uitsluitend voor het specifieke probleem) werk je in exact de tegengestelde richting. Om deze beschijvingen te kunnen gebruiken dienen consumenten ervan ineens een hele nieuwe taal te leren! Dit komt ongeveer neer op de bouwvakker die voor elk gebouw dat hij moet maken een nieuw soort bouwtekening moet kunnen lezen. Ik vind juist het vertalen van complexe bedrijfsproblemen van specifieke omschrijvingen naar een meer generieke modelleer- of programmeertaal de kerncompetentie van de software engineer.

Hebben we niet al een vrij complete set van talen die ons in staat stelt om dit soort problemen op een meer deelbare manier op te schrijven? Ooit gehoord van UML?