Spisu treści:
Definicja - Co oznacza przejrzystość referencyjna?
Przezroczystość referencyjna jest właściwością określonej części programu lub języka programowania, szczególnie funkcjonalnych języków programowania, takich jak Haskell i R. O wyrażeniu w programie mówi się, że jest referencyjnie przezroczysty, jeśli można go zastąpić jego wartością, a wynikowe zachowanie jest tak samo jak przed zmianą. Oznacza to, że zachowanie programu nie ulega zmianie, niezależnie od tego, czy użytym wejściem jest odniesienie, czy rzeczywista wartość, na którą wskazuje odniesienie.
Techopedia wyjaśnia przejrzystość referencyjną
Referencyjna przejrzystość ma swoje korzenie w filozofii analitycznej, która jest gałęzią filozofii, która bada konstrukcje języka naturalnego, argumenty i stwierdzenia oparte na metodach matematyki i logiki i ma niewiele wspólnego z programowaniem, chociaż zostało przyjęte przez informatyków.
Pojęcie jest proste, „odnośnik”, rzecz, do której odnosi się wyrażenie, może być użyty do zastąpienia „odsyłacza” bez zmiany znaczenia wyrażenia. Na przykład stwierdzenie „Ojciec Luke'a jest złym człowiekiem”, „Ojciec Luke'a” nawiązuje do „Dartha Vadera” w tradycji Gwiezdnych Wojen. Stwierdzenie jest więc przejrzyste pod względem referencyjnym, ponieważ „ojca Luke'a” można w dowolnym momencie zastąpić „Darth Vader”, a stwierdzenie to nie zmieni znaczenia. Jednak w oświadczeniu „publiczność nie wiedziała, dopóki„ Imperium kontratakuje ”, że ojciec Luke'a faktycznie jest Darthem Vaderem”, nie jest wyrażeniem referencyjnie przejrzystym, ponieważ jeśli „ojca Luke'a” zastąpiono „Darthem Vaderem”, wyrażenie to staje się „ publiczność nie wiedziała aż do „Imperium kontratakuje”, że Darth Vader to tak naprawdę Darth Vader ”, co ma zupełnie inne znaczenie.
W odniesieniu do programowania koncepcja jest na pierwszy rzut oka taka sama, ale wielu filozofów nie zgadza się z tym, że koncepcja jest dobrze wdrażana lub przenoszona w językach programowania. Ale w programowaniu ogólnym oznacza to po prostu, że wyrażenie można zastąpić jego wynikową wartością, bez wpływu na zachowanie programu. Na przykład funkcja plusOne (x) po prostu dodaje jeden do dowolnej wartości x, więc jeśli wiemy, że x = 5, możemy bezpiecznie zastąpić funkcję wartością 6 w wyrażeniu, które daje to samo zachowanie, gdy używa się plusOne (x). Ale jeśli w wyrażeniu, które jest sterowane zewnętrznie, znajduje się zmienna zewnętrzna, powiedzmy w funkcji plusY (x), gdzie Y w obrębie funkcji jest kontrolowana zewnętrznie, wynikowe zachowanie może nie być takie samo - w tym przypadku nie jest to relatywnie przezroczysta wyrażenie.
