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