Nederlandstalige blogposts over Ada
===================================
2020-09-05
Dertien jaar geleden leerde ik Ada kennen. Enthousiast
geworden door een artikel van Koen Vervloesem [1] las ik met
een slapeloze baby op de arm het Wikibook [2]. Ik raakte
gefascineerd door deze vrij onbekende programmeertaal en
besloot er dieper in te duiken.
Ada is een fijne taal als je betrouwbare en snelle software
wil bouwen. Daarom wordt ze ook veel gebruikt in sectoren
waar er veel op het spel staat zoals in de luchtvaart, bij
de spoorwegen, ruimtevaart en bij medische toepassingen. De
taal is al sinds 1983 volledig geformaliseerd in
ISO-standaarden, maar heeft mede door haar leeftijd een
stoffig imago. Een vooroordeel dat ik met deze serie
blogposts hoop recht te zetten :-)
Tot voor kort gebruikte ik Ada alleen in hobbyprojectjes,
maar eindelijk heb ik de kans om haar ook voor mijn werk te
gaan gebruiken. Daarom leek het me aardig om deze serie
blogposts te wijden aan Ada. Normaal gesproken blog ik [in
het Engels](
https://jelle.sdf.org), maar ik merkte dat er in
het Nederlands eigenlijk vrij weinig over deze taal wordt
geschreven. Vandaar dat ik heb besloten om me voor dit
onderwerp tot mijn moerstaal te beperken.
Toen ik in 2007 Ada leerde kennen werkte ik voornamelijk in
PHP. Ik was vrij ontevreden over de veiligheids- en
prestatieproblemen van deze scriptingtaal en Ada sprak me
eigenlijk gelijk al aan. Ze adresseert de problemen die ik
had met PHP en de syntax deed me op een prettige manier
denken aan Turbo Pascal, waarmee ik in de jaren negentig
leerde programmeren. Ada is echter strikter en beter
georganiseerd, wat moet leiden tot betrouwbaardere code. Ik
nam me voor om ook professioneel met de taal te gaan werken,
maar door de waan van de dag en de simpele noodzaak om de
huur te betalen bleef ik voornamelijk broodprogrammeren in
populairdere talen.
In de jaren na mijn kennismaking werkte ik afwisselend in
loondienst en als freelancer. Ik leerder allerhande nieuwe
talen kennen, maar Ada bleef beperkt tot wat
hobbyprojectjes. Als ik Ada echt serieus meer wou gaan
gebruiken, dan zou ik daar echt zelf voor moeten kiezen, en
dat moment is nu eindelijk gekomen.
Ik werk tegenwoordig weer een tijdje als freelancer dus ben
ik vrij om mijn werk in te richten zoals ik wil. Ik heb de
luxe dat mijn klanten vooral prijs stellen op mij en niet
zozeer de taal die ik gebruik, dus dit houdt de mogelijkheid
open om weer te kijken naar minder populaire talen.
Ik heb even overwogen om alles te switchen naar Haskell. Ik
heb hier succesvol een aantal apps en webapplicaties in
gebouwd en Haskell heeft me eigenlijk nooit teleurgesteld.
Het is een fijne, strikte programmeertaal die een grote
nadruk legt op goed nadenken over hoe de data door je
software stroomt. Dit wordt mede afgedwongen door het feit
dat het een pure functionele programmeertaal is, dus alle
neveneffecten van je software moeten strikt gereguleerd
worden.
Ik voel veel liefde voor Haskell, maar ben wat huiverig om
het als standaard broodbeleg te gaan gebruiken. Er is een
actieve online gemeenschap en er is een bloeiende wereld aan
vrije en open source bibliotheken waarmee je je code kunt
verrijken. Desalniettemin is Haskell ook een ietwat
academische taal. Het is ontzettend gemakkelijk om een eigen
domeinspecifieke taal (DSL) te maken in Haskell en dit
gebeurt dan ook vaak. Dit leidt er toe dat bij het ontdekken
van een nieuwe bibliotheek je regelmatig eerst de
bijbehorende DSL moet zien te doorgronden en overzicht moet
krijgen over mogelijke nieuwerwetse
computerwetenschapconcepten die er zijn toegepast. Haskell
is namelijk naast een praktische taal ook een soort zandbak
voor computerwetenschappers die door middel van extensies
allerhande leuks toevoegen aan de meest populaire compiler
(GHC). Dit is prachtig, maar de keerzijde is dat je
regelmatig in onderzoeksmodus moet floepen om te blijven
begrijpen wat de software doet.
Daarnaast beschouwt Haskell de computer die alles uitvoert
het liefst als een black box. Je zweeft als programmeur hoog
in de ether en denkt meer in abstracte mathematische
concepten dan in de instructies en registers die het echte
werk doen. Dit maakt het werken in Haskell tegelijkertijd
een hele prettige cognitieve ervaring, maar ook ietwat
losgezongen van de machinetechnische werkelijkheid.
Ada staat in tegenstelling tot Haskell wat meer in de
werkelijkheid. Toch heeft ze veel van Haskells goede
eigenschappen. Ada heeft een sterk statisch typesysteem
(strong static typing), maar is niet dwingend over je
programmeerstijl. Je mag van Ada object geörienteerd
programmeren zoals in Java of C# , of je kunt kiezen voor
een meer procedurele aanpak zoals in C. Daarnaast bestaat
ook functioneel programmeren zoals in Haskell tot de
mogelijkheden, maar dan wel minder elegant. Het is in dat
geval iets meer militaire parade en iets minder salsa, maar
soit. Ook heeft Ada ingebouwde ondersteuning voor
contractgestuurd programmeren wat helpt met de
betrouwbaarheid van je code. Ada is een vrij grote taal en
ik hoop in deze blog te laten zien waarom dat in
tegenstelling tot bijvoorbeeld C++ een echt voordeel kan
zijn.
In mijn volgende blogbericht lees je meer over de redenen
waarom het een goed idee is om voor Ada te kiezen.
Hyperlinks:
[1]:
https://bits-chips.nl/artikel/open-source-maakt-het-luchtruim-veilig/
[2]:
https://en.wikibooks.org/wiki/Ada_Programming
-----------------------------------------------------------
Tags: ada, nederlands