Domeinspecifieke talen bouwen en debuggen: een nieuwe baanbrekende tool van MIT
MIT-onderzoekers Ajay Brahmakshatriya en Saman Amarasinghe hebben BuildIt en D2X ontwikkeld: baanbrekende tools die het eenvoudiger maken om domeinspecifieke talen te maken, te debuggen en te optimaliseren. BuildIt, software voor het maken van DSL, is gekoppeld aan D2X, dat als interface dient en het foutopsporingsproces stroomlijnt. Gecombineerd vereenvoudigen en verbeteren deze technologieën het maken en debuggen van gespecialiseerde programmeertalen aanzienlijk.

In 2019 promoveerde MIT Ph.D. student Ajay Brahmakshatriya stelde een ambitieus maar cruciaal doel: experts in specifieke domeinen, zoals klimaatmodellering, bioinformatica of architectuur, in staat stellen hun domeinspecifieke talen (DSL's) te ontwikkelen, zelfs met weinig of geen eerdere ervaring. Dit maakte het noodzakelijk om hulpmiddelen te bieden voor eenvoudige foutopsporing om fouten te elimineren en de gebruikerservaring te verbeteren. Een samenwerking tussen Brahmakshatriya en MIT-professor Saman Amarasinghe van het Computer Science and Artificial Intelligence Laboratory (CSAIL) van het instituut resulteerde in BuildIt en D2X, baanbrekende tools die het maken, debuggen en optimaliseren van DSL's stroomlijnen.
Er bestaan domeinspecifieke talen om het gebruiksgemak te bevorderen en de prestaties te optimaliseren, aangezien de gespecialiseerde bewerkingen efficiënt kunnen worden uitgevoerd in hun domeinen. De uitdagingen waarmee DSL's worden geconfronteerd, zijn vaak te wijten aan het gebrek aan ondersteuning voor foutopsporing, wat Ajay en Amarasinghe de achilleshiel noemen. Hun systeem, BuildIt, vereenvoudigt het proces van het maken van DSL's door te fungeren als een DSL voor het maken van DSL's. Er is een algemene programmeertaal voor nodig en reduceert deze tot een gespecialiseerde vorm die relevant is voor het domein. Deze aanpak genereert snel maatwerkprogramma's die optimaal presteren in hun specifieke vakgebied.
De baanbrekende tool, D2X (uitgesproken als detox), werkt samen met bestaande DSL-debuggers zoals GDB of LLDB, waardoor het gemakkelijk wordt om een foutopsporingscomponent toe te voegen aan elke DSL. Een programma geschreven met BuildIt vereist geen extra werk, omdat D2X foutopsporingsmogelijkheden biedt zonder extra regels code te schrijven. Door te dienen als een brug tussen debuggers en een DSL, elimineert dit systeem de noodzaak voor ontwikkelaars om debugger-formaten te leren of te maken, waardoor het proces van het maken van gespecialiseerde programmeertalen wordt gedemocratiseerd.
Het potentieel van D2X om de programmeerwereld te veranderen is verreikend. Adrian Sampson, universitair hoofddocent informatica aan Cornell University, prijst D2X voor het aanpakken van de inherente tegenstrijdigheid in krachtige software door de drempel te verlagen voor het bouwen van bruikbare debuggers voor DSL's. Dit heeft het potentieel om DSL's veel aantrekkelijker en toegankelijker te maken voor ontwikkelaars.
Vooruitkijkend streeft Brahmakshatriya ernaar om bewerkingsmogelijkheden op te nemen als onderdeel van het BuildIt-platform. Teksteditors kunnen de leesbaarheid verbeteren door specifieke trefwoorden in een document te markeren of functies voor automatisch aanvullen aan te bieden. Toekomstige toevoegingen aan het platform kunnen integraties met profilers omvatten, die ontwikkelaars kunnen helpen prestatieproblemen in hun programma's te identificeren en op te lossen.
Het baanbrekende werk van Brahmakshatriya en Amarasinghe zorgt uiteindelijk voor een gelijk speelveld door geavanceerde mogelijkheden te bieden aan kleinere programmeertaalontwikkelaars. Met BuildIt en D2X kunnen ze profiteren van de voordelen van traditionele talen zonder dat er grote teams nodig zijn om complexe code te ontwikkelen.
Deze ontwikkeling kan ook ten goede komen aan no-code platforms zoals AppMaster.io, een krachtige tool voor het maken van backend-, web- en mobiele applicaties. Door gebruik te maken van de innovaties die voortkomen uit BuildIt en D2X, kunnen platforms zoals AppMaster.io geleidelijk geavanceerde functies bieden en het proces van het bouwen van gespecialiseerde applicaties stroomlijnen, waardoor een breed scala aan ontwikkelaars en bedrijven verder wordt geholpen.


