RSS

Online Ada boeken

Ik houd heel erg van boeken. Het liefst heb ik ze met echt papier, maar als het nodig is accepteer ik digitale alternatieven. Als ik een nieuwe programmeertaal leer dan begin ik ook het liefst met een boek in plaats van tutorials. Voor Ada is Programming in Ada 2012 van John Barnes het aangewezen standaardwerk. Deze en de Ada 2012 Reference Manual en de Rationale heb ik altijd binnen handbereik van mijn pc.
Hoe geweldig deze werken ook zijn, ze kunnen voor de beginner wel wat overweldigend zijn. De Reference Manual is bijvoorbeeld ruim 900 pagina’s en dat is niet iets dat je eenvoudig van kaft tot kaft doorleest. Daarom vind ik het vaak prettig om te kijken naar oudere boeken over een programmeertaal, toen het leven nog eenvoudiger was en het programmeren spartaanser. Gelukkig kan je nu via de Internet Archive en de Open Library een weelde aan oude Ada boeken lenen en lezen.

Een paar jaar geleden heb ik stevig ge-marie-kondoot en daarbij ook een hoop boeken weggedaan waarvan ik dacht dat ik ze niet meer nodig zou hebben. Daarbij heb ik ook een aantal oude Ada boeken naar de kringloop gebracht en daar heb ik achteraf spijt van gekregen. Toen ik weer begeesterd raakte door deze taal wou ik juist terug kunnen grijpen naar Ada’s geschiedenis. Daarom heb ik een paar maanden geleden de reference manual gekocht van wat later bekend zou worden als Ada 83. Het is een overduidelijk gefotokopieerd werkje van Springer-Verlag in hun Lecture Notes in Computer Science serie en inclusief appendices, index en bronnen is het slechts 244 pagina’s. Het aardige is dat je heel goed kunt zien dat Ada 83 al een complete taal was met alles erop en eraan. Ik zou nog steeds heel tevreden mijn werk kunnen doen als ik alleen Ada 83 zou mogen gebruiken. Weliswaar zou ik het zonder wat “quality of life” dingetjes moeten stellen waar ik aan gehecht ben geraakt, maar het is niet zoals bij een taal als PHP waarbij het verschil tussen zeg versie 3 en 8 dusdanig groot is dat je bijna van een andere taal kunt spreken.

Het grote voordeel van een taal in historisch perspectief te plaatsen is dat je je eigen kennis ook langzaam en doelmatig kunt opbouwen. Mijn ervaring is namelijk dat de dingen die je gaandeweg van een taal wenst vaak redelijk overeenkomen met de natuurlijke evolutie die een taal heeft doorgemaakt. Dit is niet zo vreemd natuurlijk, want het zijn juist de dingetjes waar mensen in de praktijk tegenaan lopen die de voortgang van een taal kunnen stuwen.

Toch is het niet altijd superhandig om al je kennis van een taal stapje voor stapje de evolutie te laten volgen, want er zijn aardig wat talen die zulke grote ontwikkelingen doormaken dat een programmeerstijl van 20 jaar geleden nu als naïef en primitief beschouwd zou worden. C++ en PHP zijn hier voorbeelden van. Wat nu wordt beschouwd als “moderne” C++ lijkt nauwelijks meer op de C++ die ik leerde toen ik de taal voor het eerst ontdekte. Maar ook bij C++ gaat niet iedereen mee met de vaart der volkeren en zijn er programmeurs als Casey Muratori die er expliciet voor kiezen om een eenvoudiger en oudere stijl aan te houden.

Ada is echter een taal waarbij je heel goed kunt starten met een oudere versie, zeg Ada 83 of Ada 95 en van daaruit je kennis kunt opbouwen. Ada wordt wel eens verweten dat het een bureaucratisch “designed by committee” moloch is, maar een voordeel ten opzichte van veel andere talen is dat het een hele logische en zorgvuldig opgebouwde featuregeschiedenis heeft. Zo zie je relatief weinig backwards compatibility brekende veranderingen, maar vaak geleidelijke uitbreidingen en opname van features uit andere of verwante talen.

Om deze taalontwikkeling nu helemaal na te lopen en te bekijken in zijn historische context hoef je nu niet meer peperdure tweedehandsversies op te snorren. Je kunt nu gewoon gebruik maken van de Open Library en dat lijkt me met het oog op het klimaat ook wel zo handig.