Nyheder og Jobs

Domain-Specific Language Versus Library API Shootout

Næste punkt på min (Jespers) dagsorden var en duel imellem DSL’er og API’er, hvor en rimelig dynamisk duo udforskede forskellene imellem at udstille sin funktionalitet som en (ekstern) DSL eller som en intern DSL (eller et egentlig API)

DSL’s kan jo også laves i XML, men det er nok ikke så brugervenligt.

Rich (DSL proponenten) viste nogle uddrag fra DSL’er og viste hvor skræmmende meget Java, der skulle til ellers. Så ville Jaroslav Tulach (API proponenten) træde til og forbedre det, sikre typecheck, fjerne gentagelser, etc.

Modsat viste “den anden gut” hvordan man med annotation processoren kan generere kode on the fly som sikrer en kompakt og typesikker måde at skrive sin Java kode på. Og det har han ret i.

Konklusionen: DSL’er er særligt vigtige når man skal adressere et andet publikum, med andre forudsætninger. Gode APIer og interne API har et andet publikum – udviklere.

De viste gode eksempler på versionering af DSL’er m.v.

Versionering af API’er blev derimod lidt mere langhåret – deprecated, selvfølgelig, men også @Transformation og @PatchByteCode – uha, uha.

Så er der IDE hjælp – Jaroslav fremhæver  at gode Java IDE’er kan alt det gode med annoteringer, etc.

DSL gutten fremhæver at IDE’erne også har gode sprog-toolinger – men de undlod elegant at fremhæve Eclipse’s XText. En spørger klarede dette.

Plus: God diskussion.

Minus: Manglende fokus på “fluent” interfaces, som jo også kommer tæt på.