Alternatieve
programmeermodellen
(Voorheen Functioneel Prog.)
Alternatieve
programmeermodellen
(Voorheen Functioneel Prog.)

Alternatieve programmeermodellen (Voorheen Basis Functioneel Programmeren)

Doelen

Na het voltooien van deze cursus kun je:

  • De kenmerken van imperatief en declaratief programmeren begrijpen.
  • Functionele programma’s evalueren en ontwikkelen.
  • Onderstaande concepten begrijpen en toepassen.

Inhoud

Hoewel het vo kernprogramma van informatica imperatief programmeren als uitgangspunt neemt, hebben vo-leerlingen de mogelijkheid om zich te verdiepen in alternatieve programmeerparadigma’s in een keuzethema. In deze cursus bestuderen we declaratieve programmeermodellen. Dat wil zeggen: programmeermodellen die de computer niet vertellen hoe we ons doel willen bereiken (imperatief), maar simpelweg wat we willen bereiken (declaratief). Dit zorgt voor een heldere en compacte programmeerstijl.

Na een overzicht van programmeermodellen in het algemeen, en de verschillen tussen imperatief en declaratief programmeren, duiken we in twee modellen in het bijzonder: functioneel programmeren en logisch programmeren.

Functioneel programmeren kenmerkt zich door het gebruik van pure functies en onveranderlijke datastructuren. Hierdoor weten we dat onze programma’s geen onverwachte zijeffecten kunnen vertonen. Het gevolg is dat we makkelijker over onze programma’s kunnen redeneren. Daarnaast zorgt een sterk typesysteem er voor dat geschreven programma’s van nature correct zijn, niet zullen falen tijdens de uitvoer, en dat herstructureren van code eenvoudiger is.

Logisch programmeren stelt ons in staat berekeningen te maken aan de hand van relaties. We schrijven programma’s door een databank van feiten en regels op te stellen, en deze databank vervolgens te ondervragen.

Beide programmeermodellen vereisen een radicaal andere manier van denken bij het ontwikkelen van en redeneren over programma’s. Vaardigheden die helpen bij het oplossen van een breed scala aan problemen. We sluiten de cursus af met het maken van een interactief spel in de pure functionele programmeertaal Elm.

Concepten

  • expressies, waardes
  • (hogere orde) functies
  • herschrijven
  • partiële functie applicatie (*currying*)
  • annonieme functies (*lambdas*)
  • (algebraïsche) data types
  • onveranderlijkheid (*immutability*)
  • puurheid, referentiële transparantie
  • recursie
  • type, type systeem, type inferentie
  • polymorfie
  • interactie
  • zijeffecten
  • model-view-update
  • commando’s, subscripties
  • relaties
  • feiten
  • regels
  • ondervragingen

Voorkennis

Ervaring met de basiselementen uit programmeertalen is gewenst. Het gaat om begrippen als keuze, herhaling, recursie, functie en procedure, zoals behandeld bij een cursus imperatief programmeren. Kennis van object-georiënteerd programmeren is zeker niet nodig. HTML en CSS komen van pas maar zijn niet noodzakelijk.

Literatuur

Richard Feldman (2020), *[Elm in Action](https://www.manning.com/books/elm-in-action),* Manning Publications, ISBN 9781617294044.

Docent

Tim Steenvoorden (OU).

Logo in4all_sidebar