Languagelabheid - Reisverslag uit Grimstad, Noorwegen van Christian Rooij - WaarBenJij.nu Languagelabheid - Reisverslag uit Grimstad, Noorwegen van Christian Rooij - WaarBenJij.nu

Languagelabheid

Door: Christian

Blijf op de hoogte en volg Christian

08 Juli 2014 | Noorwegen, Grimstad

Dingen gaan nog steeds best prima hier in Grimstad. In deze weblog dan eindelijk iets over mijn dagelijkse bezigheid aan de universiteit: het Language Lab project.

Het Language Lab project loopt al een aantal jaren, en door deze jaren heen hebben er al meerdere onderzoekers en studenten aan meegewerkt. Op het moment bestaat het team uit vier personen, inclusief mijzelf. Ten eerste hebben we Tsian: een typische informatica student, met een goede muzieksmaak. Direct succes. Regelmatig doen we een wedstrijdje wie het luidste zijn gewrichten kan kraken. Tsian en mijn directe begeleider is Terje: een onderzoeker aan de universiteit en min of meer 'vader' van het Language Lab project. Terje heeft een geheimzinnig PhD-verleden in Language Lab en is verder een erg coole gast met interessante anekdotes en een goed gevoel voor humor. Tenslotte hebben we Andreas: het enigszins chaotische hoofd van het informatica departement, met een niet altijd even fijn gevoel voor humor. Een voorbeeld van een combinatie van deze twee eigenschappen: normaal hebben we iedere dag om 8:30 (grmbl) projectoverleg in Andreas zijn kantoor. Echter, afgelopen donderdag was Andreas ruim drie kwartier te laat. Nadat het overleg was afgelopen - pas om 9:45, kregen we tegen 9:50 doodleuk een mailtje van Andreas dat het gesprek die dag pas om 9:30 zou plaatsvinden, omdat Andreas daarvoor nog een afspraak had die hij vergeten was door te geven. Ow ha ha. Wellicht hebben departementshoofden gewoon het privilege om dat soort dingen te flikken.

Het Language Lab project gaat over het ontwikkelen van een applicatie die het mogelijk maakt voor studenten om zelf een programmeertaal te modelleren, aan de hand van een meta-taal (meta-language). Het doel hiervan is om studenten beter het gehele concept achter het ontwerpen van programmeertalen te doen begrijpen. Volgt u het nog? Voor het gemak zal ik het project eerst op een iets simpelere manier uitleggen, waarna ik nog wat technische details zal geven voor degene die daar zin in heeft.

Wanneer je een nieuwe programmeertaal aan het modelleren bent, ben je als het ware bezig met het opstellen van de strikte constructies waaruit je taal zal bestaan. Een meta-taal is een soort set van abstracte begrippen, die je kunt gebruiken om meer specifieke begrippen te definiëren. Wanneer je gaat kijken naar meta-meta-talen, dan ga je nog een abstractielaag hoger, en heb je het dus als het ware over de eigenschappen-van-de-eigenschappen van een taal. Met behulp van een meta-taal kun je dus verschillende lagen van abstractie in je taal inbouwen. Als niet-geheel-correct voorbeeld zal ik nu de vergelijking maken met een 'mensen' taal. Wanneer je een nieuwe mensentaal wilt ontwerpen, kun je beginnen bij de absolute kern van een taal, zeg, een letter. Dit is iets wat iedere onderliggende taal gemeen zal hebben. Wanneer je het begrip 'letter' gebruikt als meta-taal voor je volgende- meer specifieke, abstractielaag, dan kun je met deze meta-taal nieuwe begrippen gaan definiëren, zoals het begrip 'woord' of 'leesteken'. Deze nieuw verworven abstractielaag kun je vervolgens ook weer gebruiken als meta-taal, om nog specifiekere begrippen uit te drukken. Uiteindelijk kom je op deze manier op de onderste abstractielaag van je taal uit, de daadwoordelijke uitvoering van je taal, geheel correct volgens de bovenliggende lagen. Bij een programmeertaal is dit de uitvoering van het programma dat gebruikmaakt van de programmeertaal. In ons voorbeeld zou dat bijvoorbeeld het opschrijven van de zin "Ik snap dit voorbeeld niet." zijn. Zoals inmiddels wel duidelijk is, is het modelleren van een programmeertaal niet makkelijk. Je bent al snel té specifiek of té abstract bezig. Language Lab heeft als doel om dit probleem uit te leggen, en om mensen te laten experimenteren met meta-talen.

Owkee, om de mensen die nog niet afgedwaald zijn nog wat verder te imponeren volgt nu een spelletje bingo! STREEP DE TECHNIEK AF DIE JE KENT! Let wel op, het gaat hier alleen maar over ambiguë termen en frustrerende afkortingen voor technieken uit de informatica, dus niet over internet slang of bijnamen voor geliefde bevolkingsgroepen. Indien je bingo hebt, stuur me een berichtje. Winnaars krijgen een welgemeend schouderklopje wanneer we elkaar weer zien.

TEF | OMG | BNF | E4 | meta-meta-language
XML | RAP | MPS | CORBA | genmodel
UML | MOF | RWT | Ecore | INDIGO
PDE | MDE | EMF | JUNO | meta-meta-meta language
RCT | SWT | OCL | LUNA | meta-language

Al met al is het gehele Language Lab project behoorlijk uitdagend, dus op zijn minst gezegd interessant. Ik heb het gevoel dat ik in de afgelopen weken al meer heb geleerd dan tijdens de gehele drie maanden na mijn afstuderen, wat deze stage en reis nu al de moeite waard maakt. Volgende keer: details over mijn andere bezigheden in Noorwegen: midzomernacht, Oslo, Kristiansand, Bergen en Stavanger!

  • 08 Juli 2014 - 20:45

    Christian Van Rooij:

    En, voor de meer technische mensen: Language Lab is geschreven in Java als een Eclipse plugin. Op deze manier heb je toegang tot een groot aantal features van Eclipse zelf, zoals text editors en andere plugins. Een van de modules die we gebruiken is het automatisch valideren van de taal die je zojuist hebt ontworpen. Hiermee kun je bijvoorbeeld tijdens runtime al de correctheid van je nieuwe taal controleren aan de hand van voorgedefinieerde constraints (die overigens op eenzelfde manier als de huidige taal kunnen worden gemodelleerd). Op de achtergrond werkt Language Lab met het Eclipse Modeling Framework, waarmee het mogelijk is om nieuwe classes, methods en hun bijbehorende code te genereren aan de hand van een model. Binnen Language Lab ben je als het ware direct bezig met het definiëren van nieuwe objects aan de hand van je meta-language (laten we dit niveau Mn+1 noemen). Wanneer je tevreden bent kun je via het Eclipse Modeling Framework je nieuw ontworpen taal (Mn) compileren en direct weer gebruiken op het onderliggende niveau (Mn-1) als de nieuwe meta-language. Hiermee begint het proces weer overnieuw, maar dan op een lager, meer specifiek niveau. Dit gaat zo door totdat je tevreden bent over de specifiekheid van je taal, waarna je daadwerkelijk een programma met de taal kunt schrijven (M0).

  • 09 Juli 2014 - 10:10

    Katy:

    Wat zit je daar geweldig, Christian! Leuk om je te volgen, en ik heb geprobeerd me in jouw taal te verdiepen; nou, ik snap er weinig van. En ik kan me voorstellen dat jouw ouders bijzonder trots zijn op hun zoon die dit
    zelf ontwerpt. Zo ben ik trots op mijn dochter Katja die taal-cursussen voor computergebruik maakt. Hé, heb het goed en blijf ook een beetje genieten van het prachtige land. Veel groetjes: Katy

  • 11 Juli 2014 - 07:41

    Christian Van Rooij:

    Hoi Katy, bedankt! Leuk dat je het volgt!

Reageer op dit reisverslag

Je kunt nu ook Smileys gebruiken. Via de toolbar, toetsenbord of door eerst : te typen en dan een woord bijvoorbeeld :smiley

Verslag uit: Noorwegen, Grimstad

Christian

Actief sinds 01 Juni 2014
Verslag gelezen: 331
Totaal aantal bezoekers 10060

Voorgaande reizen:

29 Mei 2014 - 28 Juli 2014

Reizen en werken in Europa

Landen bezocht: