Functioneel
Programmeren
Functioneel
Programmeren

Functioneel Programmeren

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

Deze cursus wordt in het najaar van 2019 voor het eerst aangeboden.

Hoewel het kernprogramma imperatief programmeren als uitgangspunt neemt, hebben leerlingen de mogelijkheid om zich te verdiepen in alternatieve programmeerparadigma’s in een keuzethema. Een goede kandidaat hiervoor is functioneel programmeren.

Functioneel programmeren stelt ons in staat om op declaratieve wijze een programma te schrijven. Dat wil zeggen: we vertellen de computer niet hoe we ons doel willen bereiken (imperatief), maar simpelweg wat we willen bereiken. Dit zorgt voor een heldere en compacte programmeerstijl.

Door gebruik te maken van pure functies en onveranderlijke datastructuren weten we dat onze programma’s geen onverwachte zijeffecten kunnen vertonen. Zo is het onmogelijk om globale variabelen aan te passen, waardoor het programma zich ineens anders gaat gedragen. Het gevolg is dat we makkelijker over onze programma’s kunnen redeneren

In deze cursus bestuderen we deze ideeën en bekijken we welke gevolgen dit heeft op onze manier van denken over programma’s en onze manier van programmeren. We passen deze manier van denken toe bij het maken van volledig operationele web applicaties in de pure functionele taal Elm (elm-lang.org). We laten zien dat Elm simpel en gebruiksvriendelijk genoeg is voor middelbare scholieren om mee aan de slag te gaan.

Concepten

  • expressies
  • (hogere orde) functies
  • partiële functie applicatie (currying)
  • annonieme functies (lambdas)
  • (algebraïsche) data types
  • herschrijven
  • onveranderlijkheid (immutability)
  • puurheid
  • referentiële transparantie
  • recursie
  • type systemen en type inferentie
  • polymorfie

Voorkennis

Enige ervaring met imperatieve programmeertalen, HTML en CSS komen van pas maar zijn niet noodzakelijk.

Logo in4all_sidebar