RSS

Nederlandstalige blogposts over Ada

Dertien jaar geleden leerde ik Ada kennen. Enthousiast geworden door een artikel van Koen Vervloesem las ik met een slapeloze baby op de arm het Wikibook. 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, 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.