logo

U bent hier

Waarschuwingsbericht

Opgelet! Dit event heeft al plaatsgehad.

Modularizing Language Constructs: A Reflective Approach

dinsdag, 3 juli, 2007 - 17:00
Campus: Brussels Humanities, Sciences & Engineering campus
Faculteit: Science and Bio-engineering Sciences
D
0.08
Thomas Cleenewerck
doctoraatsverdediging

Programmeertalen zijn continu onderhevig aan veranderingen gestuurd door de
nieuwe behoeften van programmeurs. Hierdoor groeien ze omdat ze worden uitgebreid
met nieuwe taalconstructies zodat programmeurs hun problemen van een
bepaald domein beter kunnen uitdrukken. Als talen groeien, dan moeten uiteraard
hun implementaties meegroeien. Om dit te ondersteunen willen we de
implementaties van talen structureren op dezelfde wijze als talen gestructureerd
zijn, namelijk volgens hun taalconstructies. Taalimplementaties die op die manier
gestructureerd zijn, kunnen makkelijker en op een natuurlijke manier ontwikkeld
worden.

Taalimplementaties worden volgens taalconstructies gestructureerd door elke
taalconstructie te modulariseren in aparte taalmodules. Iedere taalmodule beschrijft
de syntax en de translationele semantiek (uitgedrukt in termen van een andere
taal) van één taalconstructie. Dit laat toe om talen en hun implementaties
samen te laten groeien door nieuwe taalmodules te ontwikkelen en/of bestaande
te selecteren en hun onderlinge interacties vast te leggen. Bovendien maakt deze
modularisatie taalimplementaties minder kwetsbaar voor de continue veranderingen.
Modularisatie van taalimplementaties werd grondig onderzocht in het onderzoeksveld
van compilertechnologie. De complexiteit van dit onderzoek ligt in
de intrinsieke verbanden tussen taalconstructies die modularisatie bemoeilijken.
We stellen echter vast dat de mechanismen aangeboden door de hedendaagse
spitstechnologieën voor taalontwikkeling niet volstaan om taalimplementaties te
structuren volgens de taalconstructies.

In deze verhandeling, definiëren we een formeel model van de modularisatie
van taalconstructies. Op basis van dit model leiden we een nieuw ontwerp af
dat een leidraad is voor de implementatie van talen en taalonwikkelingstechnologie.
Het ontwerp schrijft voor dat talen opgebouwd worden uit drie soorten
bekommernissen: de basis bekommernissen die de taalconstructies defini¨eren, de
taalspecificatie die de interacties tussen de taalconstructies realiseren met behulp
van speciale bekommernissen die op hun beurt de mechanismen defini¨eren om de
interacties te realiseren.

Als oplossing voor het formele model en het nieuwe ontwerp, stellen we een
open nieuwe taalontwikkelingstechnologie voor waarin talen ge¨ımplementeerd worden
als een verzameling interagerende taalmodules die linglets genoemd worden.
Elke linglet definieert, in totale afzondering van de rest van de taal en de andere
taalconstructies, de syntax en de translationele semantiek van één enkele
taalconstructie. De mechanismen om de interacties tussen de taalconstructies te
realiseren zijn gedefinieerd in interactiestrategieën. Deze worden gemodelleerd als
uitbreidingen van een specifiek gecreëerd metaobject protocol voor taalontwikkelingstechnologieën.

Linglets en interactiestrategie¨en kunnen hergebruikt worden in verschillende
taalimplementaties. Daarenboven kunnen nieuwe gedefinieerd worden en kunnen
bestaande gespecialiseerd worden zodat linglets kunnen interageren met andere
linglets en zodat interactiestrategieëen aangepast kunnen worden aan de uitdagingen
die een concrete taalimplementatie stelt.

De nieuwe aanpak om talen te implementeren die we voorstellen in dit werk
valideren we door een niet-triviale familie van domein-specifieke talen te implementeren
gebruikmakende van een gedeelde verzameling van taalconstructies en
interactiestrategieën.

Met onze aanpak is het nu mogelijk om de opdeling van taalimplementaties
in taalmodules, die elk een taalconstructie defini¨eren, te optimaliseren.