title: Programmeerparadigma
text: In de informatica zijn programmeerparadigma's denkpatronen of uitgesproken concepten van programmeren, die voornamelijk verschillen in de wijze van aanpak om het gewenste resultaat te kunnen behalen.
  
  Sommige programmeertalen zijn ontworpen om slechts één bepaalde paradigma te ondersteunen, maar er zijn ook andere programmeertalen die meerdere paradigma's ondersteunen (zoals C++, Java en Scala). Programma's die bijvoorbeeld geschreven zijn in C++ kunnen in het geheel procedureel zijn, geheel objectgeoriënteerd zijn of elementen van beide paradigma's bevatten.
  
  Gangbare paradigma's 
  De belangrijkste programmeerparadigma's zijn:
   Imperatief programmeren
   Functioneel programmeren
   Logisch programmeren
   Objectgeoriënteerd programmeren
  
  In imperatief programmeren is een programma in essentie een reeks instructies die het geheugen manipuleren en die op volgorde door de computer worden uitgevoerd. Deze stijl van programmeren staat dicht bij de werking van een computer en werden derhalve als eerste praktisch gerealiseerd.
  
  Functionele talen zijn gebaseerd op formalismen zoals de theorie van recursieve functies of de lambdacalculus-programma's. Hieronder worden wiskundige functies gedefinieerd die invoer naar uitvoer transformeren.
  
  Bij logisch programmeren, gebaseerd op (doorgaans) predicatenlogica, zijn het definities van predicaten die een bepaalde relatie tussen objecten in het geheugen uitdrukken.
  
  Objectgeoriënteerd programmeren (object oriented programming) verenigt berekening en de gegevens: deze worden verpakt in objecten, waarbij de details worden verborgen achter een algemene interface, vaak gerangschikt in een hiërarchie van klassen. Objecten sturen elkaar berichten (Smalltalk) of roepen elkaars methoden aan (C++, Java); alleen zo hebben ze toegang tot elkaars gegevens. De methoden/reacties op berichten zijn procedures die de interne gegevens van een object manipuleren.