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).

Vragen en antwoorden

V: Wat is referentiële transparantie?


A: Referentiële transparantie is een kenmerk van onderdelen van computerprogramma's waarbij een onderdeel van het programma kan worden vervangen door de waarde die het teruggeeft zonder dat het gedrag van het programma verandert.

V: Wat is het tegenovergestelde van referentiële transparantie?


A: Het tegenovergestelde van referentiële transparantie is referentiële ondoorzichtigheid.

V: Zijn alle functies in de wiskunde referentieel transparant?


A: Ja, alle functies in de wiskunde zijn referentieel transparant, omdat een wiskundige functie alleen waarden kan aannemen en een waarde kan uitgeven.

V: Hoe helpt referentiële transparantie programmeurs en compilers?


A: Dankzij referentiële transparantie kunnen programmeurs en compilers code beschouwen als een herschrijfsysteem - iets dat een uitdrukking neemt en vervangt door iets anders. Dit helpt bij taken zoals bewijzen dat het programma of de code correct is, een algoritme eenvoudiger maken, het gemakkelijker maken om code te veranderen terwijl u er nog steeds zeker van bent dat het doet wat het moet doen, en de code sneller laten lopen of minder geheugen laten gebruiken.

V: Wat zijn enkele technieken om code sneller te laten werken of minder geheugen te laten gebruiken?


A: Enkele technieken om code sneller te laten werken of minder geheugen te laten gebruiken zijn memoïsatie (antwoorden opslaan na de eerste keer), eliminatie van gemeenschappelijke subuitdrukkingen (uitzoeken of het de moeite waard is om twee delen van de code die hetzelfde zijn te combineren), luie evaluatie (het antwoord pas vinden als de code het echt nodig heeft) en parallellisatie (werken aan meerdere problemen tegelijk).

V: Is er een verschil tussen functies in programmeren en functies in wiskunde?


A:Ja, er is een verschil tussen functies in programmeren en die in wiskunde -In programmeren kan een functie ook uitzoeken welke dag van het jaar het is of een bericht op het scherm afdrukken, terwijl dit niet mogelijk is met wiskundige functies.

AlegsaOnline.com - 2020 / 2023 - License CC3