Referentiële transparantie

Referentiële transparantie is een kenmerk van onderdelen van computerprogramma's. Een onderdeel van een programma wordt "referentiële transparantie" genoemd als het kan worden vervangen door de waarde die het teruggeeft zonder het gedrag van het programma te veranderen. Een referentietransparante functie moet zuiver zijn - het moet altijd dezelfde uitgang geven als het dezelfde invoer neemt, en het mag geen neveneffecten hebben - delen van het programma die een andere actie uitvoeren dan het teruggeven van een waarde. Het tegenovergestelde van referentiële transparantie is referentiële opaciteit.

In de wiskunde zijn alle functies relatief transparant, omdat een wiskundige functie alleen waarden kan aannemen en een waarde kan uitspuwen. Bij het programmeren is dit niet altijd waar, een functie kan ook uitzoeken welke dag van het jaar het is, of een bericht op het scherm afdrukken. Vanwege dit verschil gebruiken sommige mensen andere namen voor functies in de programmering, zoals procedures.

Referentiële transparantie laat programmeurs en compilers denken aan code als een herschrijfsysteem - iets dat een uitdrukking neemt en vervangt door iets anders. Dit kan helpen bij verschillende taken, zoals:

  • Bewijzen dat het programma of de code correct is, dat het precies doet wat het moet doen, wat er ook gebeurt.
  • Een algoritme eenvoudiger maken.
  • Het maakt het makkelijker om de code te veranderen, terwijl je er toch zeker van bent dat het doet wat het moet doen.
  • De code sneller laten lopen of op een manier die minder geheugen verbruikt.

Er zijn verschillende manieren om de laatste taak te doen - de meest bekende zijn memoïsatie (het opslaan van antwoorden na de eerste keer), gemeenschappelijke subexpressie eliminatie (uitzoeken of het de moeite waard is om twee delen van de code te combineren die hetzelfde zijn) , luie evaluatie (het antwoord niet vinden totdat de code het echt nodig heeft), en parallellisatie (het werken aan meerdere problemen op hetzelfde moment).


AlegsaOnline.com - 2020 / 2021 - License CC3