Standaardisatie van programmeertalen

Auteur: Jan Christiaan van Winkel, voorzitter 381022

De voordelen van standaarden kom je in het dagelijks leven overal tegen. Als we bij de doe-het-zelf winkel een doosje M5 boutjes kopen, passen ze op de M5 moertjes die we thuis nog hebben. En de pinpas past in elke pinautomaat – waar ook ter wereld. Dit zijn duidelijke voorbeelden, maar er worden ook andere belangrijke en minder zichtbare standaarden ontwikkeld. Denk daarbij aan standaarden voor programmeertalen. Wat is een programmeertaal, wat zijn de voordelen ervan en wat zijn de werkzaamheden van een normcommissie?

In een computer zit een processor die alleen maar nullen en enen (bits) kan verwerken. De instructies zijn dan ook groepen van nullen en enen en instructies kunnen ook symbolisch worden genoteerd. Liever zou je niet voor iedere processor een nieuwe taal moeten leren. Daarom kunnen we op een nog hoger abstractieniveau werken: een programmeertaal. Een programma geschreven in zo’n hogere programmeertaal moet natuurlijk uiteindelijk ook vertaald worden naar de reeks bits. Door een programmeertaal te gebruiken kunnen programmeurs beter nadenken over wat ze gedaan willen hebben en bovenal zijn ze niet meer afhankelijk van het merk processor.

Meerdere vertalers voor verschillende platformen

Het voordeel van hogere programmeertalen is dat ze programmeurs onafhankelijk maken van de onderliggende processor. Dat werkt alleen als de verschillende vertaalprogramma's voor die verschillende processoren hetzelfde gedefinieerd zijn. Er moeten dus afspraken gemaakt worden hoe je in een programmeertaal dingen opschrijft (syntax) en wat ze betekenen (semantiek).

De definitie van programmeertalen kan door een bedrijf gedaan zijn. In dat geval bepaalt het bedrijf hoe de programmeertaal werkt en op welke platformen de taal beschikbaar is. Zo zijn bepaalde programmeertalen beschikbaar voor Windows, maar niet voor Linux, Android of IOS. Het kan ook zijn dat een taal wordt ontwikkeld door iemand die die taal ’openbaar’ maakt. Zo is de taal Python openbaar gemaakt zodat iedereen kan meepraten over hoe de taal er uit zou kunnen zien. Een kleinere groep mensen neemt hierover de beslissingen.

Er kan ook een formelere structuur zitten achter de ontwikkeling van een programmeertaal. Zo zijn de talen FORTRAN, COBOL, C en C++ door ISO commissies gestandaardiseerd. Er zijn voor dit soort talen vaak meerdere leveranciers die voor verschillende platformen vertalers aanbieden. Zo zijn er voor C++ vertalers van Microsoft (alleen voor Windows), Intel, Edison Design Group (voor meerdere hardware platformen en besturingssystemen) en de open source vertalers GCC en Clang/LLVM (beide voor meerdere hardware platformen en besturingssystemen).

Standaardisatie van C++

De ISO commissie ISO/IEC JTC1/SC22 is de commissie die mondiale normen voor programmeertalen ontwikkelt. Onder subcommissie 22 (SC22) is werkgroep 21 (WG21) een groep van circa tweenhonderd mensen die de standaarden voor de taal C++ vorm geeft. De leden van de commissie kunnen individuele geïnteresseerden zijn, maar de meeste leden wonen in opdracht van hun werkgever de vergaderingen bij. Deze bedrijven hebben belang bij de manier waarop de taal wordt gedefinieerd, bijvoorbeeld omdat ze veel C++ programmatuur hebben of omdat ze leveranciers zijn van vertalers. Er is een Nederlandse groep experts die de belangen van Nederlandse organisaties vertegenwoordigt; de standaardisatiecommissie voor programmeertalen.

Werk aan standaarden

Normaliter komt de internationale werkgroep driemaal per jaar een week bij elkaar. Formele voorstellen worden in zogenaamde papers beschreven. In een later stadium wordt het voorstel vaak ook al geïmplementeerd in een vertaler om ervaring te krijgen met de nieuwe faciliteit en om te zien of er geen onverwachte neveneffecten zijn. Dit is een experimentele fase.

In deze fase maakt zo'n feature geen deel uit van de standaard taal. Pas als de leverancier van een vertaler de taal heeft ingebouwd, kan iedereen er gebruik van maken. Meestal moet je ’experimentele features’ expliciet aanzetten als optie. Deze experimentele features zijn een proefballonnetje en kunnen mogelijk verwijderd of aangepast worden. Als een voorstel helemaal is uitgekristalliseerd, wordt in een stemming aan het einde van de vergadering besloten het feature al dan niet op te nemen in het werkdocument (WD) waarin de taal beschreven wordt.

Na een stemming door deelnemende landen, gaat het werkdocument een volgende fase in en wordt het verder ontwikkeld tot de nieuwe standaard. Inmiddels is de C++ standaard een document van 1838 pagina's.

Soms is een nieuw ontwikkelde feature zo groot, dat men meer ervaring wil hebben met implementeren en gebruik van het feature. In dat geval wordt er een ’Technical Specification’ (TS) geschreven. Dit is een document dat in combinatie met de huidige standaard het feature beschrijft. Er wordt ook gestemd over een TS, maar het is een meer lichtgewicht proces. Pas als er voldoende vertrouwen is dat het een en ander voldoende is uitgekristalliseerd en er geen onverwachte neveneffecten zijn, wordt de TS met het standaard werkdocument samengevoegd. Na een positieve stemming komt het in de commissie terecht.

Werkgroepen

Met tweehonderd mensen tegelijk vergaderen is erg lastig. Daarom zijn er werkgroepen die zich richten op bepaalde delen van de taal. Zo is er een grote tweedeling tussen kern van de taal (‘core’) en de ondersteunende standaardbibliotheek met veelgebruikte faciliteiten (zoals toegang tot bestanden en wetenschappelijke rekenfuncties). Ook is er een groep van experts die zich richt op de educatie van C++; dit is de studygroup (SG) 20. C++ is één va de populairste talen, maar helaas wordt het niet veel onderwezen op hogescholen en universiteiten. Daar is Python populairder omdat de taal als makkelijker wordt ervaren. SG20 ontwikkelt een handboek over hoe les te geven in C++. Dit handboek wordt niet een curriculum op zich, maar bevat tips over de beste volgorde in onderwerpen voor het leren van C++.

Geïnteresseerd?

Ben je benieuwd geworden naar de normen voor programmeertalen? Wil je meewerken aan normen of wil je eerst even meer weten? Nieuwe leden zijn welkom bij de Nederlandse normcommissie. Voor meer informatie: neem contact met: Inge Piek, kid@nen.nl.

Voor meer informatie over het werk van de normcommissie, ga naar de webpagina.