/Images/MainImage/Elevate.jpg finns inte.

2009-09-14

Domain Specific Languages med Ayende Rahien

I slutet av augusti gästades Avega av Ayende Rahien, som närmast kan beskrivas som en legendar i .NET-världen. Hans enorma produktivitet, förutom flitigt bloggande är han upphovsman och contributor i en lång rad Open Source-projekt som bland annat Castle ActiveRecord/MonoRail/Windsor, NHibernate, NHibernate Analyzer, mockbiblioteket Rhino Mocks, är upprinnelsen till rykten om att han egentligen är en pseudonym för ett kollektiv eller till och med att han i själva verket är en android. Att Ayende faktiskt är en pseudonym - han heter egentligen Oren Eini - och att han är relativt ung i ett land där fyra år "försvinner" i värnplikt gör de skämtsamma ryktena ännu lättare att ta på allvar.

Men det är alltså inte mer än rykten, vilket Ayende bevisade genom sitt besök på Avega i syfte att undervisa oss alla i hur lätt det är att skriva domänspecifika språk (Domain Specific Language, DSL) i programmeringsspråket Boo, något som också är ämnet för en bok han skriver just nu: Building Domain Specific Languages in Boo

Ayende använder själv Martin Fowlers definition av DSL:

"Domain specific language (DSL) is a computer language that's targeted to a particular kind of problem, rather than a general purpose language that's aimed at any kind of software problem."

SQL och Regular Expressions är två välkända exempel på DSL:er. Väldigt många DSL:er är emellertid okända för de allra flesta helt enkelt därför att de finns för att lösa mycket specifika problem för ett specifikt företag. Här kan man se en tydlig koppling till Domain Driven Design (DDD) som handlar om att jobba fram en för utvecklingsteam och verksamhet/kund/användare gemensam modell av och förståelse för en problemdomän. Det är också i denna gemensamma förståelse som de stora vinsterna med en DSL finns; att uttrycka domänproblem på ett sätt som både utvecklare och användare förstår.

Det har pratas mycket om DSL:er de senaste åren och förutom Ayende har även Martin Fowler en bok på gång i ämnet. För den som är intresserad av att fördjupa sig i ämnet rekommenderar jag gratiskapitlen i Ayendes bok och det stora materialet som finns på Martin Fowlers bliki.

Det jag framför allt tog med mig från Ayendes besök på Avega var hur lätt det verkade vara att använda det Python-inspirerade och flexibla språket Boo för att skriva enkla DSL:er på .NET-plattformen. Jag kommer definitivt att läsa Ayendes bok och om tiden tillåter - man vet aldrig! - experimentera lite med Boo senare i år.

Joakim Sundén


Postad av Elevate

Kommentarer (2) 



  RSS Feed

Elevate

Elevate är Avega Groups forum för gruppbaserad utbildning och medarbetarutveckling. Målet är att genomföra aktiviteter för Avega Groups medarbetare i syfte att väcka intresse och informera om ny teknik, utveckla konsultrollen och verka för att Avega Groups samlade kompetens utvecklas i en gynsam riktning. Här på bloggen sammanfattar vi de seminarium som genomförts inom ramen för Elevate.


Kontakt

Kategorier