Leertaak 1
Abrupte terminatie in Java
Achtergrond
Formele semantiekbeschrijving is nuttig bij het documenteren
van (ontwerpen van) programmeertalen, maar semantische technieken komen ook
van pas bij het ophelderen van verbanden tussen verwante mechanismen in bestaande
talen.
Om een bepaald effect te modelleren zal er vaak een aanpassing
van het formele systeem nodig zijn, bijvoorbeeld met aanvullende afleidingsregels
of extra parameters. Vaak zijn die aanpassingen ook in compilers voor de betreffende
taal terug te vinden.
We bekijken het verschijnsel 'abrupte terminatie' in de
programmeertaal Java.
Leerdoel
Na het voltooien van deze taak kunt u
- de werking van constructies rond abrupte terminatie ('completion') in Java
uitleggen, in het bijzonder de afbreking (break, continue) en exceptions (try-catch,
throw);
- de constructies modelleren in (een uitbreiding van) natuurlijke semantiek;
- aan de hand van de semantiekbeschrijving de essentiële verschillen
en overeenkomsten tussen de programmaconstructies aanduiden;
- reflecteren op de gekozen beschrijvingstechniek (keuze beargumenteren; adequaatheid,
efficiëntie en helderheid bediscussiëren).
Instructie
- Bestudeer het verschijnsel 'abrupt completion' en de taalconstructies
break,
continue,
throw en
try-catch
in de Java
Language Specification. (Mocht Oracle de documenten weer op een andere plaats hebben gezet kunt u ook hier een PDF van deze specificatie vinden.)
- Maak een overzicht van de syntaxis en (informele) semantiek van de genoemde
taalconstructies. Zorg dat we de essentie ervan kunnen bestuderen zonder gehinderd
te worden door Java-specifieke randverschijnselen: formuleer de constructies
als uitbreidingen van de programmeertaal While.
- Geef een formele semantiek voor de constructie 'continue'. (De 'break' doen
we samen op het college.)
- Geef een formele semantiek voor de constructies 'try-catch' en 'throw'.
(Op het college maken we een begin.)
- Bespreek de verbanden tussen de besproken taalconstructies. Zijn ze onafhankelijk
en/of 'stapelbaar'? Hoe kunnen de semantiekbeschrijvingen gecombineerd worden
als we meer dan één van de constructies willen toevoegen?
Product
- Overzicht van syntaxis en informele semantiek van de genoemde statements.
- Beschrijving van de semantiek van 'continue'.
- Beschrijving van de semantiek van het exceptie-mechanisme.
- Beschouwing van de constructies en gebruikte technieken.
Reflectie
- Is de syntaxis voldoende ontdaan van typische Java-dingen die er niet toe
doen? Is de semantiek helder geformuleerd? Zou een plaatje helpen bij het
verduidelijken?
- Zijn de afleidingsregels eenduidig geformuleerd? Is het verband met de informele
semantiek duidelijk?
- Beschrijft en motiveert u uw aanpassingen aan de basisconcepten van natuurlijke
semantiek, zoals het begrip 'state'?
- Is uw beschouwing te volgen voor mensen die uw semantiekbeschrijving begrijpen
en enige ervaring met Java-programmering hebben?