Referentiel gennemsigtighed

Referentiel gennemsigtighed er en egenskab ved dele af computerprogrammer. En del af et program kaldes "referentielt gennemsigtig", hvis den kan erstattes med den værdi, den giver tilbage, uden at programmets adfærd ændres. En referentielt gennemsigtig funktion skal være ren - den skal altid give det samme output, hvis den tager det samme input, og den må ikke have nogen sideeffekter - dele af programmet, der udfører en anden handling end at give en værdi tilbage. Det modsatte af referentiel gennemsigtighed er referentiel uigennemsigtighed.

I matematik er alle funktioner referentielt gennemsigtige, fordi en matematisk funktion kun kan modtage værdier og udlevere en værdi. I programmering er dette ikke altid sandt - en funktion kan også finde ud af, hvilken dag i året det er, eller udskrive en besked på skærmen. På grund af denne forskel bruger nogle mennesker andre navne for funktioner i programmering, f.eks. procedurer.

Referentiel gennemsigtighed gør det muligt for programmører og compilere at tænke på kode som et omskrivningssystem - noget, der tager et udtryk og erstatter det med noget andet. Dette kan hjælpe med flere opgaver, f.eks:

  • At bevise, at programmet eller koden er korrekt - at det gør præcis, hvad det skal, uanset hvad der sker.
  • Gør en algoritme mere enkel.
  • Det gør det nemmere at ændre koden og samtidig være sikker på, at den gør, hvad den skal.
  • Få koden til at køre hurtigere eller på en måde, der bruger mindre hukommelse.

Der er flere måder at udføre den sidste opgave på - de mest kendte er memoisering (gemme svarene efter første gang), eliminering af fælles underudtryk (finde ud af, om det er værd at kombinere to dele af koden, der er ens), doven evaluering (ikke finde svaret, før koden virkelig har brug for det) og parallelisering (arbejde på flere problemer på samme tid).

Spørgsmål og svar

Spørgsmål: Hvad er referentiel gennemsigtighed?


A: Referentiel gennemsigtighed er en egenskab ved dele af computerprogrammer, hvor en del af programmet kan erstattes med den værdi, den giver tilbage, uden at ændre programmets adfærd.

Spørgsmål: Hvad er det modsatte af referentiel gennemsigtighed?


Svar: Det modsatte af referentiel gennemsigtighed er referentiel uigennemsigtighed.

Spørgsmål: Er alle funktioner i matematikken referentielt gennemsigtige?


Svar: Ja, alle funktioner i matematik er referentielt gennemsigtige, fordi en matematisk funktion kun kan tage værdier ind og give en værdi ud.

Spørgsmål: Hvordan hjælper referentiel gennemsigtighed programmører og kompilatorer?


Svar: Referentiel gennemsigtighed gør det muligt for programmører og kompilatorer at tænke på kode som et omskrivningssystem - noget, der tager et udtryk og erstatter det med noget andet. Dette hjælper med opgaver som f.eks. at bevise, at programmet eller koden er korrekt, at gøre en algoritme mere enkel, at gøre det lettere at ændre kode, mens man stadig er sikker på, at den gør, hvad den skal, og at få koden til at køre hurtigere eller bruge mindre hukommelse.

Spørgsmål: Hvilke teknikker anvendes til at få kode til at køre hurtigere eller bruge mindre hukommelse?


Svar: Nogle af de teknikker, der bruges til at få kode til at køre hurtigere eller bruge mindre hukommelse, er memoisering (gemme svar efter første gang), eliminering af fælles underudtryk (finde ud af, om det er værd at kombinere to dele af koden, der er ens), doven evaluering (ikke finde svaret, før koden virkelig har brug for det) og parallelisering (arbejde på flere problemer på samme tid).

Spørgsmål: Er der nogen forskel på funktioner i programmering sammenlignet med funktioner i matematik?


A: Ja, der er en forskel mellem funktioner i programmering og funktioner i matematik - I programmering kan en funktion også finde ud af, hvilken dag i året det er, eller udskrive en meddelelse på skærmen, mens dette ikke er muligt med matematiske funktioner.

AlegsaOnline.com - 2020 / 2023 - License CC3