Over deze aflevering
We hebben dit keer niemand minder dan Meinte Boersma te gast. Meinte legt ons uit wat de kracht van een Domain Specific Language (DSL) is. En hij vertelt ons hoe hij erbij is gekomen om een boek te schrijven over DSLs.
Delen
// Gasten
Wat je leert#
- •Wat domeinspecifieke talen (DSL's) inhouden en hoe toe te passen
- •Hoe je DSL's bouwt vanuit domeinexpertise en businesslogica
- •Waarom mono repo's beter werken dan multi-repo setups
- •Hoe je softwarearchitectuur aansluit op de organisatiestructuur
- •Waarom keyboard shortcuts productiever zijn dan muisgebruik
Transcript
Meinte, maak jij gebruik van een muis als developer?
Ja, absoluut.
En wat zegt dat over jouw development skills?
Het schijnt dat ik daarmee automatisch een junior ben.
Hallo allemaal, welkom bij een nieuwe aflevering van CodeKlets.
Dit keer zitten we alweer in aflevering 11.
En vandaag met Meinte Boersma.
Meinte werd 13 jaar geleden gebeten door een virus
dat de modelgedreven softwareontwikkeling en domeinspecifieke talen veroorzaakt
zonder uitzicht op genezing.
Sindsdien probeert hij zoveel mogelijk mensen ervan te overtuigen
om softwareontwikkeling met behulp van domeinmodulering te doen.
Tegenwoordig doet hij dat bij de Belastingdienst.
Daarnaast is hij ook nog eens bezig om een mooi boek te schrijven over dit onderwerp voor Manning.
Zo Meinte, welkom.
Dankjewel, hoi Kishen, hoi Johnny.
Hallo, hallo, hallo. Ja, we zijn maar naar remote deze week.
Oh, gezellig.
Oh ja, goed, de coronaregels weer aangescherpt
en dus toch maar besloten om weer een remote opname te gaan doen
na onze hosts only jubileum aflevering van een tijdje terug.
En we zijn met z'n tweeën vandaag, Kishen en ik zijn samen.
En we hebben zoals in de intro Meinte Boersma als gast gevonden.
En inderdaad, welkom Meinte.
Dankjewel.
Hoe is het jongen, hoe heb je het gehad de laatste tijd?
Ja, goed.
Ik ben net begonnen aan een sabbatical van een half jaar.
Dat is extra reden voor feest.
Een half jaar om een boek af te maken.
En dus ja, dat gaat lekker.
En daarvoor, ja, corona is natuurlijk geen feestje aan zich.
Maar ik werk er altijd al veel thuis.
Dus nu alleen maar meer.
Dus dat was ik al gewend.
En het fijn is dat bijvoorbeeld de team waar ik tot vorige week bij de Plassendienst bijwerkte nu ook allemaal thuis werkt.
En daar ook veel beter in is geworden.
Dus ik merk dat daardoor dat mensen gedwongen thuis moeten werken,
ze ook effectiever raken als team omdat iedereen thuis moet werken.
En niet een gedeelte thuis en een gedeelte op kantoor.
En hoe bevalt het ook met de andere collega's bij de Belastingdienst die dus gewend zijn over het algemeen om op kantoor te werken?
Ja, voor mij was het niet zozeer een omschakeling.
Voor een aantal andere teamleden wel, omdat die echt alleen maar gewend waren om naar kantoor te komen.
Wat dan normaal gesproken er wel eens gebeurde was dat,
dan was ik met twee andere mensen thuis aan het werk en de rest zat op kantoor.
En dan ben je toch een beetje de eenzame roepende in de hoestijn.
Of je moet mensen echt gaan bellen als vervanging van ja, ik loop even naar je bureau toe.
En nu heeft iedereen hetzelfde probleem.
Iedereen moet maar gewoon op de slack of met de most zitten en goed op de mailtjes letten en meetings doen.
En daar word je als team volgens mij wel effectiever van.
Dat je ook goed snapt van wat het is om als team remote te werken.
Ja, ik heb inderdaad ook gemerkt dat een hybride vorm,
dat dat veel lastiger te bewerkstelligen is dan iedereen thuis of iedereen op kantoor.
Dat was mij inderdaad ook opgevallen.
Ja, maar ik heb ook nog een leuk nieuwtje meid die ik met je wilde delen.
Ik heb toevallig vandaag een intake gesprek gehad bij de Belastingdienst.
Ja, in Apeldoorn.
En ja, ik ben er doorheen gekomen.
Ze hebben me vanochtend gebeld.
Of tenminste, sorry, vanochtend was het interview zoals het ware.
Dus er waren zes man die mij dan allerlei leuke vragen stelden.
En ja, in de middag hebben ze van de tien, geloof ik, hebben ze uiteindelijk mij uitgekozen.
Nou, gefeliciteerd. Leuk.
Ja, dankjewel. Dus ik word nog een Belastingdienst collega.
Ja, dan zijn we gewoon weer collega's.
Leuk, hè?
Waar zit jij in het land?
Nou, fysiek zit ik in Voorhout.
En mijn normale standplaats bij de Belastingdienst is inderdaad ook in Apeldoorn.
Al heb ik dat natuurlijk al ruim een half jaar niet meer gezien.
En we mogen wel officieel dat gebouw ook helemaal niet in en zo.
Dus ik heb dat ook niet meer geprobeerd.
En nou ja, die mailtjes ga je nog wel krijgen.
Maar ik had echt een beetje elke week een e-mail van ja, ja, het mag nog steeds niet.
Ja, het is wel heel jammer, maar je mag nog steeds niet op kantoor komen.
Tenzij je echt met een schoeven draaien aan de mainframe mag zitten of zo.
Bij wijze van spreken.
Maar even terugpakken, want jullie kennen elkaar dus al duidelijk.
Ik ken Mijnte nog niet, maar jullie zijn dus al collega's geweest.
Ja, zeker, zeker.
We hebben beide bij Mendix gewerkt.
En ja, Mijnte die kennen we daar heel goed, omdat hij daar het modelgedreven software ontwikkeling.
Ja, eigenlijk iedereen de man bracht.
Van waarom het zo belangrijk was.
Of is eigenlijk, sorry.
Je moet natuurlijk niet in passends praten.
Maar waarom het zo belangrijk is.
En natuurlijk ook onze Mendix developers te helpen in het bouwen aan een modelgedreven software pakket.
Ja, precies.
Ik ben daar gekomen omdat ik daar met Johan de Haan heb gesproken.
Kort daarvoor eigenlijk.
En wat Mendix doet is, Mendix maakt een low-code platform.
Voor de mensen die het nog niet weten.
Mendix maakt een low-code platform.
Waarbij we met behulp van grafische modeleertalen een applicatie in elkaar kunnen zetten.
En eigenlijk is dat gewoon keihard modelgedreven software ontwikkeling.
In de begintijd noemden ze dat zelfs zo.
Tegenwoordig niet meer zo.
Maar dat heeft dus een hele sterke basis in het modelgedreven software ontwikkeling.
En de grap is dat er niet zo heel veel kennis aanwezig was van modelgedreven software ontwikkeling.
En software language engineering in het bedrijf zelf.
Daarvoor heeft Johan mij aangetrokken om dat binnen bedrijf een goede basis te geven en verder te verspreiden.
En wij hebben samen gewerkt aan wat tegenwoordig de Mendix Studio heet, geloof ik.
En toen het de Webmodeler heette.
En we hebben ook de model share gemaakt en de model SDK en de model server.
Dat heet nu allemaal, geloof ik, anders.
En model share bestaat niet meer, geloof ik.
Nee, nee. Ja, het is een beetje deprecatie.
Precies, ja.
En ja, modeling services, dat was de teamnaam.
En volgens mij is die nog steeds gaande.
Ja, ik werk daar nu ook inmiddels niet meer.
Maar ja, dat is inderdaad wel een hele goede bestempling geweest, denk ik, voor iedereen.
En dat is natuurlijk een van de belangrijkste onderdelen binnen Mendix.
Dus ja, dat heeft mij echt een hele goede bijdrage aangeleverd.
Hoe ben je daar zo bij gekomen, om die kant op te gaan, eigenlijk?
Is dat een interesse geweest van vroeger?
Of is het iets een keer wat je tegenkwam?
En ja, je zegt zelf in de intro, die had je mooi aangeleverd, dat je bent gebeten door het virus.
Kun je daar wat over vertellen?
Ja, nou, ik heb wiskunde gestudeerd.
En alweer een best van een tijd geleden.
En ook uit volle overtuiging, in de zin van dat ik echt het idee had dat ik wiskundige wilde worden en het onderzoek in wilde.
Maar tegelijkertijd deed ik ook heel veel programmeren en software ontwikkeling.
Dus dat had mijn interesse ook.
En toen ben ik uiteindelijk toch niet het onderzoek in gegaan.
Ben ik zeg maar gewoon tussen aanhalingshaakjes software ontwikkelaar geworden.
Dat was wel leuk, maar ook veel meer van hetzelfde als het ware.
En toen werkte ik op een gegeven moment bij Atos, toen nog Atos Origin.
En ik kreeg de kans om mee te doen bij een project dat ging om het moderniseren van Legacy.
Met de titel Legacy Transformation Factory.
Dus dat ging erom om een oude applicatie, bijvoorbeeld in Cobol,
te transformeren naar een mooie shiny Java applicatie.
En dat was in 2007.
En dat is eigenlijk de eerste keer dat ik in aanraking kwam met modelgedreven software ontwikkeling.
En dat klikte in één keer.
Dat was voor mij echt een aha-moment.
Van oh, dit is eigenlijk gewoon hoe ik altijd software wil ontwikkelen.
En sinds die tijd is dat dus ook niet anders geworden.
En probeer ik zoveel mogelijk mensen dat aan een mand te brengen,
of door een strot te duwen of hoe je het ook maar wilt noemen.
Oké. En je programmeer jezelf nu nog steeds veel daarmee?
Of waar ben je nu het meeste mee bezig eigenlijk in je dagelijkse?
Nou ja, op dit moment met boekschrijven.
Dus daar zit ook heel veel programmeerwerk bij, gelukkig.
Mijn werk bij de belasting zit ook nog heel veel programmeerwerk bij.
Hoewel ik daar teamlead ben en dus van nature meer aan het praten ben,
met mensen overleggen ben, dat soort zaken.
Dus daar valt het wel een beetje mee met hoeveelheid programmeerwerk.
Maar ik ben nog steeds veel aan het programmeren inderdaad.
Oké, leuk.
Ja, leuk.
Ja, we hebben meestal een beetje, noem het maar even,
een standaard ridultje wat we gewoon elke gast bevragen,
vooral omdat je natuurlijk een hele sterke DSL-achtergrond hebt.
Voor de mensen die dat nog niet zo snappen,
of misschien helemaal niet eens weten wat het überhaupt betekent,
als je het zou mogen vertellen, wat is eigenlijk DSL?
Nou, ten eerste moeten we hem eens even decorderen.
DSL staat voor Domain Specific Language,
oftewel in het Nederlands een domeinspecifieke taal.
En dat is een computertaal specifiek voor een domein.
Dat is natuurlijk een flauw antwoord.
Maar waar het om gaat is dat je, ten eerste moet het een computertaal zijn,
dus een taal die begrepen kan worden door een computer.
Maar belangrijker nog, hij moet begrepen worden door een bepaald domein.
En een domein kan zijn een bepaald vakgebied,
of een bepaald bedrijf dat iets doet,
of een bepaald clubje mensen dat een gemeenschappelijk doel heeft.
Dus eigenlijk alles waar je een groep mensen kunt aanwijzen
die een specifiek doel heeft met een specifiek taalgebruik,
daardoor zal heel snel spaken van een DSL.
En dan heb je misschien die DSL nog niet in computervorm,
zegt dat als computertaal.
Maar dat is dus mijn werk om daar dan wel daadwerkelijk
een stuk software tegenaan te zetten,
zodat ze, hoe zij al tegen elkaar praten,
om dat dan ook daadwerkelijk in de computer te kunnen zetten,
en op die manier software te kunnen maken.
Uiteindelijk is dan het doel om het probleem dat die mensen,
dat dat domein en de mensen in dat domein aan het oplossen zijn,
om ze daarmee te helpen met een stuk tooling in de vorm van een DSL,
zodat ze met een spreekwaardelijke druk op de knop
de software die zij nodig hebben om hun doel te verwezenlijken,
ook daadwerkelijk kunnen verwezenlijken.
En moet ik het zien als een stuk vertaling?
Want je zei zelf, het moet vertaald worden dat de computer het gaat snappen.
Zeg ik dat goed?
Ja, vertaling of een soort van precisering.
Een voorbeeld is wat ik doe bij de Belastingdienst.
Daar werk ik aan een product dat heet ALEF.
Hij staat voor Agile Law Execution Factory.
En wat je daarmee kunt doen is dat als je een wet moet uitvoeren,
bijvoorbeeld een blastingwet, inkomstenheffing of iets dergelijks,
hoe je dat normaal gesproken doet qua softwareontwikkeling is
je kunt niet zo'n wettext pakken en maar gewoon een beetje gaan programmeren.
Dat gaat niet werken, dat weten we allemaal.
Dus wat er nou gebeurt is dat er een legertje zogenaamde regelanalysten,
dat zijn zeg maar businessanalysten met een sterke juridische en financiële inslag,
die gaan die wetten live en destilleren daar een heel pakket aan regels uit.
En regels hebben dan zeg maar een vorm van als een natuurlijk persoon
aan deze en deze voorwaren voldoet dan is die belastingplichtig.
En vervolgens heb je nog heel veel andere regels die nou precies specificeren
hoeveel belasting je dan moet gaan betalen en zo.
En normaal gesproken wordt dat vastgelegd in ontzettend lijvige Word documenten.
Dus dan heb je echt honderden, misschien wel duizenden pagina's aan dat soort regels
in natuurlijke taal gewoon in een tekstwerker ingetikt.
Wat je nou met ons project kunt doen of ons product kunt doen
is die regels in plaats van in een tekstwerker intypen in ons product intypen.
En dan wordt het gelijk gecontroleerd van klopt wel wat je zegt.
Natuurlijk persoon, wat bedoel je daar precies mee?
Heeft hij wel een inkomen? Dat soort zaken.
Je wordt ook heel erg geholpen bij het intypen.
Dus oh, je hebt het over een natuurlijke persoon.
Dan moet je waarschijnlijk het ergens ook hebben over een inkomen
of je kinderen of je partneren of dat soort zaken.
Dus dat wordt allemaal heel erg gecontroleerd.
Dus het ziet er nou steeds uit als iets als Nederlands.
Het leest ook gewoon als Nederlands.
Alleen eigenlijk elk woord in zo'n regelsin is gecontroleerd
en heeft een bepaalde betekenis.
En dat heeft als gevolg dat dat heel precies is vastgelegd.
Dus het ziet er nog steeds hetzelfde uit
alsof je het in een woord had ingetikt.
Alleen het heeft echt betekenis en de computer kan er echt wat mee.
En je kunt er ook echt software mee maken en software mee genereren.
Dus dat is ook precies wat die regelandanalysten doen.
Ah, precies, ja.
Ja, het is eigenlijk inderdaad toch, ja,
ik zou het dan zelf inderdaad toch het meest vertalen
als een vertaalslag van de regels
naar inderdaad de regels die de computer kan begrijpen.
Ja, die vertaalslag hoort er zeg maar
het vertaalslag hoort erbij.
Dat is uiteindelijk de meerwaren die deze aanpak heeft.
Namelijk iets dat je in zo'n DSL hebt opgeschreven
om die automatisch te kunnen vertalen naar iets dat
dat je ook daadwerkelijk kunt executeren,
dat je dat daadwerkelijk kunt uitvoeren.
Ja, dat stukje genereren.
Ja, en het fijne is dat, nou ja,
eigenlijk zoals het zelfde is bij Mendix gebeurde
dat echt met een druk op de knop
rolt daar een stuk software uit waar verder geen
programmeur meer aan te pas komt om daar iets aan te veranderen
of aan toe te voegen.
En dat scheelt dus een heleboel moeite
in de zin van
je hebt dus niet meer programmeurs nodig die je echt
regeltje voor regeltje, dat allemaal gaan lopen
vertalen eerst naar code, zodat die code nou vervolgens
het goede ding kan doen.
Dan moet je die code natuurlijk wel gaan testen
en derein gelijken, dus dan gaat er maar gesproken
heel veel moeite in zitten en nu sla je die stap
eigenlijk in een keer over doordat
als je die regels in ons product hebt ingetikt
dan weet je gewoon van oké als die uitgevoerd gaan worden
dan klopt die uitvoering ook
en de regal analisten kunnen dan bijvoorbeeld ook testgevallen
tegen aan hangen
zodat ze zelf direct kunnen zien van oké
er gebeurt al een keer inderdaad het goede mee.
Maar wordt dat dan ook nu nog veel gebruikt want
ja hoe vaak is er een
een wetswijziging in het belastingstelsel
en hoe vaak worden dit soort producten dan aangepast?
Vaak, heel vaak eigenlijk
sowieso wetswijzigingen zijn er
nou om de havenklap
er wordt steeds wel iets
in de belastingwetgeving aangepast
dat, nou ja
er zijn heel veel
belastingmiddelen zoals dat heet
er wordt ontzettend veel
ontzettend veel kleine stukjes worden er steeds aangepast
voor het meest in het oog springende voorbeeld is
spinstjesdag
daar wordt voor de loonheffing elk jaar
er worden weer wat percentages aangepast
nou dat is ook een
wetswijziging van de wet
en dat moet dus ook doorgevoerd worden
en is die
doorvoering van zo'n
van zo'n wetswijziging is dat dan eigenlijk net zo simpel
als in
in het stuk DSL daar pas je het aan
en vervolgens komt er volledig een
applicatie uitrollen
Wouter, hoe ver is dat geautomatiseerd?
Dat is inderdaad precies de mate waarin het geautomatiseerd is.
Op het moment dat je de dingen in ons product hebt gedaan, dan is het een kwestie van
een percentage aanpassen of eigenlijk beter gezegd zeggen van
tot aan Prinsjesdag of tot Prinsjesdag geldt dit percentage
en na deze Prinsjesdag geldt dit percentage.
En hij herkent ook woorden als Prinsjesdag?
Nou herkennen, alles dat je gebruikt moet je wel ergens gaan definiëren.
Prinsjesdag is niet helemaal nodig om te definiëren.
Dat is meer een procesding of een naam die wij eraan gegeven hebben.
Maar bijvoorbeeld wat je typisch terug ziet is een begrip als een
natuurlijk persoon, omdat wij zijn natuurlijke personen zoals dat heet voor de wet.
Dus daar wordt heel veel aan opgehangen.
Nu heb je het voorbeeld bij Belastingdienst genoemd.
Zijn er ook andere projecten waarvan jij weet die ook op deze manier software ontwikkelen?
Ja, stiekem zijn er heel veel DSL's.
Heel veel daarvan die ga je ook nooit zien omdat die namelijk binnen bedrijven worden gebruikt
en die komen dat bedrijf nooit uit.
Dus wat dat betreft, hoeveel DSL's er zijn?
Ik heb echt geen idee. Ik weet dat er heel veel zijn.
En ik weet dat er heel veel ontzettend onzichtbaar zijn.
Maar ja, één voorbeeld daarvan is al wat ik doe bij de Belastingdienst.
Want dat is geen open source.
Dus dat wordt alleen binnen de Belastingdienst gebruikt voor een heel aantal projecten.
En dat is dus ook alleen bekend binnen Belastingdienst.
Hoe dat precies in elkaar zit en hoe je dat gebruikt.
Dat is wel heel jammer aan de ene kant.
En aan de andere kant, we kunnen het ook niet gelijk open source maken.
En ik denk dat er heel veel DSL's zijn waar hetzelfde voor geldt.
Namelijk dat ze wel bestaan.
Soms weten mensen zelfs dat het een DSL is.
Ook niet altijd.
Maar dat heel veel van dit soort oplossingen, dat die er gewoon zijn,
maar niet bekend zijn buiten de situatie waarin ze gebruikt worden.
Ja.
En toevallig hadden we daar ook een vraag over rondom open source.
Zijn er open source DSL's out there?
Ja, er zijn er gelukkig heel veel.
Die worden niet altijd zo genoemd.
Maar er zijn er echt ontzettend veel.
De term slaat eigenlijk ook op heel veel talen die er gewoon zijn.
Niet op programmeertalen.
Heel expliciet, want een programmeertaal is zo generiek mogelijk.
Dus dat is eigenlijk precies het tegengestelde van een domeinspecifieke taal.
Dat ding is namelijk domein A-specifiek en heel generiek.
Maar er zijn heel veel talen ook binnen software ontwikkeling
die voor een specifiek doeleinde gemaakt zijn.
Een standaard voorbeeld is bijvoorbeeld Make.
Ik weet niet of je wel eens een new make gebruikt hebt.
Nou, het is een heel klein taaltje.
Je kunt er wel heel veel mee doen,
maar als je kijkt wat er aan syntax mogelijkheden in zit,
dan is dat best beperkt.
En dat heeft een heel duidelijk doel namelijk,
gegeven een bak files maakt daar uiteindelijk een executable mee.
Andere domeinspecifieke talen zijn,
CSS kun je bijvoorbeeld zien als een domeinspecifieke taal.
Het heeft een heel duidelijk doel, namelijk defineer layout, defineer styling.
Het heeft ook een hele simpele syntax eigenlijk.
Er zit vrij weinig in.
Dat is eigenlijk wel een hallmark van DSL,
dat de syntax is vrij beperkt.
De notatie is domeinspecifiek.
Er is een specifiek doel.
En dan zit je al vrij snel op een DSL.
Maar wat eigenlijk nog veel interessanter is dan
dit soort technische DSL's,
wat ik dan business DSL's noem,
dat zijn dus de DSL's die echt in een business gebruikt worden,
die echt door niet-developers gebruikt worden,
die wel een interessant probleem hebben om op te lossen,
waarbij het heel erg kan helpen als je ze tools geeft
om dat via een computer te doen.
Ja, dus in plaats van de hoofden te laten zweven,
dan programeer je, ja, noem niet programeeren,
maar je regelt het zeg maar in,
dat ook heel veel stukken van hun kennis
ook daar natuurlijk in de DSL gewaarbord wordt.
Exact, exact dat, ja.
En de grap van de domeinexperts is,
het zijn overdag mijn echt experts.
Die mensen zijn hartstikke slim
en ze hebben misschien geen programeerachtergrond.
Maar ze krijgen het echt wel voor elkaar.
Dus je ziet ook heel veel mensen die die dingen in Excel doen.
Ik grap wel eens, Excel is de meest gebruikte programeer-
en modeleeromgeving in de wereld.
En dat vind ik nog steeds ontzettend waard.
Je ziet gewoon mensen die echt ontzettend moeilijke,
complexe dingen in Excel maken.
Ja, en dat is meestal bubbelt daar een soort
met van DSL onder de oppervlakte.
Ja, precies.
Ja, dat is een, ja, precies.
Dat is echt gewoon een tool wat gebruikt wordt nu
om het te bewaken zeg maar, die kennis en die expertise.
Ja, dat is wel leuk om te zien.
En even kijken hoor, want ja, iets wat op mij ook altijd,
de vraag die ik altijd bij mij opborrelt als ik zoiets lees
en dan begin ik het interessant te vinden.
Maar stel nou voor dat ik zou beginnen,
hoe begin ik met zoiets?
Met het maken van een DSL, dat bedoel je.
Het belangrijkste is dat je ziet of realiseert
dat er een domein is met een specifiek doel
waarmee je kunt helpen door een DSL te maken.
Dus als je bijvoorbeeld kijkt naar,
iemand heeft iets gemaakt in Excel, iets heel ingewikkelds.
Dat is voor mij meestal een teken van,
oké, Excel is niet de meest briljante tool voor programmeerwerk.
Het is ontzettend handig om snel iets in elkaar te kunnen zetten
dat je veel feedback geeft over wat je aan het doen bent.
Maar uiteindelijk kun je daar niet echt de software mee maken.
Maar er zit wel heel veel in de tool zelf
om dingen te realiseren.
Dus er zit een bepaalde mate van programmeermogelijkheden in.
Je kunt formules maken en dergelijke.
Dus als je iets groots en moeilijks in Excel gemaakt hebt,
dan is de kans heel groot dat je met een DSL
een betere softwareoplossing mee kunt maken.
En waar je dan mee zou moeten beginnen is
om te kijken wat zijn je onderliggende concepten,
je basisconcepten, je basisprincipes
die jij in je Excel sheet hebt gezet.
Dus als je financiële dingen hebt,
bijvoorbeeld je doet je financiële administratie in Excel
om maar iets te noemen.
De basisconcepten die je daar heel makkelijk in zou kunnen herkennen
is waarschijnlijk rekening, mutatie, facturen,
dat soort zaken.
Hoe heb je afschrijfbare aanschaffen gedaan,
dat soort zaken allemaal.
Dat zullen zeker de ZZP'ers onder ons herkennen,
dat soort dingen.
Dus dat zijn dan basisconcepten
waar je wat mee kunt doen.
En leent elke programmeertaal daarvoor,
om zoiets te bouwen?
Ja, in principe wel,
maar sommigen zijn wel wat geschikter dan anderen,
natuurlijk.
Want waar je uiteindelijk je domainexperts het meeste mee helpt
is een goede interface,
een goede gebruikersinterface,
om jou DSL Proza, noem ik het dan vaak in het Nederlands,
mee in te kunnen tikken.
Sommige programmeertaalen helpen je daar wat meer in dan anderen.
Bijvoorbeeld in het boek gebruik ik Javascript,
want Javascript zit in een browser,
en in een browser is het best makkelijk
om fatsoenlijke UIs te maken.
Oké, mooi.
En ik denk ook TypeScript dan?
Ja, in het boek toevallig niet.
Ik had het graag gebruikt,
maar ik heb maar dan eindig hoeveelheid pagina's,
dus ik moest een afweging maken tussen
hoeveel pagina's investeer ik in dingen met beeld van TypeScript uitleggen
en dus misschien potentieel iets over TypeScript moeten uitleggen.
Versus als ik het nou gewoon in zo'n vanille mogelijk Javascript doe,
hoeveel mis ik dan van TypeScript?
Ja, dat is ook zo.
Interessant.
Iets wat ik me nu afhaag,
de laatste heel wat jaren is ook steeds meer machine learning en AI in opkomst.
Zie je dat ook terug bij dit soort vrij domein specifieke oplossingen?
Dus, of moet het eigenlijk altijd echt heel erg specifiek gedefinieerd zijn
en blijft het daar ook bij?
Nou,
dat laatste sowieso, want dat is juist de kracht van DSL's,
dus het feit dat je dingen juist zo strikt en zo strak hebt vastgelegd,
dat maakt het juist mogelijk om ook daadwerkelijk dingen te genereren.
Wat het ook mogelijk maakt is juist dat het heel duidelijk is vastgelegd
van wat hetgene is wat er nou juist moet gebeuren.
Bijvoorbeeld, je gaat niet een stuk belastingwetgeving
met behulp van een neural netwerk uitvoeren.
Dat doe je sowieso niet, omdat je moet kunnen uitleggen wat er gebeurd is.
Niemand gaat akkoord met van ja, we hebben jouw belastingaangifte
door een neural netwerk gehaald en dit getal kwam eruit,
dus daar moet je het maar mee doen.
Dus de uitlegbaarheid van wat er gebeurt is heel belangrijk
en DSL's helpen daar juist bij omdat op een voor de MijnExpress
heel begrijpelijke manier staat vastgelegd van,
dit is hoe een bepaalde berekening gaat
en dan kun je tot een bepaalde precissing komen,
dus dat kun je gaan debuggen als het ware
en dat kun je debuggen met behulp van de taal en de concepten
die de MijnExpress gewend zijn.
Waar ik wel een mogelijkheid zie voor AI en machine learning
is in hoe je dan uiteindelijk tot die precieze omschrijving
met behulp van een stuk DSL Proza komt.
En daar zou AI best wel wat kunnen helpen,
dat is dan wel onderzoek dat allemaal in de kinderschoenen staat,
maar je kunt je bijvoorbeeld best voorstellen
dat het voor een AI oplossing makkelijker is
om datgene wat de AI leert,
leert tussen aanhalingshaken of herkent in een bepaalde situatie
om daar een stuk DSL Proza voor te genereren
dan bijvoorbeeld voor een algemeen stukje programmeertaal.
We hadden laatst die, hoe heet dat ding nou?
Die G3T.
Dat je maar gewoon een beetje begint te tikken
en dat dat ding met wat programmeertalcode
of wat algemene programmeertalcode terugkomt
en zo, of een geïmplementeerde UI.
Dat soort dingen, dat is een soort van gimmick,
maar ik denk als je dat als doel maakt
om daar een stuk DSL Proza van te maken
dat dat ook voor domeinen specifiek best heel nuttig kan zijn.


