referentially transparent
숙어C2formal표현을 그 값으로 바꿔도 전체 의미나 결과가 변하지 않는
phrase
- 1
어떤 표현을 그 표현이 나타내는 값이나 지시 대상로 바꾸어도 전체 문장, 논리식, 프로그램의 의미나 결과가 변하지 않는C2
able to be replaced by the value or referent it denotes without changing the meaning, truth value, or observable result of the larger expression
In a referentially transparent expression, you can replace a calculation with its result and the program will behave the same way.
참조 투명한 표현에서는 계산식을 그 결과값으로 바꿔도 프로그램이 같은 방식으로 동작한다.
The function is referentially transparent because it always returns the same output for the same input and does not modify any external state.
그 함수는 같은 입력에 항상 같은 출력을 반환하고 외부 상태를 바꾸지 않기 때문에 참조 투명하다.
- 2
논리학·언어철학에서, 같은 대상을 가리키는 표현들끼리 바꾸어도 문장의 진리값이 변하지 않는 문맥을 나타내는C2
in logic and philosophy of language, describing a context in which co-referring expressions can be substituted for each other without changing the truth value of the statement
The sentence is referentially transparent if replacing one name with another name for the same person does not affect its truth.
같은 사람을 가리키는 다른 이름으로 바꾸어도 그 문장의 진리 여부가 달라지지 않는다면 그 문장은 참조 투명하다.
Belief reports are often not referentially transparent, because a person may know one description of an object but not another.
믿음에 관한 보고문은 어떤 사람이 한 대상의 한 가지 묘사는 알아도 다른 묘사는 모를 수 있기 때문에 흔히 참조 투명하지 않다.
뉘앙스 · 쓰임
pure는 프로그래밍에서 ‘순수 함수’를 가리키는 더 짧고 실용적인 말이며, referentially transparent는 치환 가능성이라는 논리적 성질을 더 엄밀하게 강조한다. deterministic은 ‘같은 입력에 같은 출력’만 뜻할 수 있어, 부작용이 없다는 조건까지 반드시 포함하지는 않는다. side-effect-free는 부작용이 없다는 점을 강조하지만, 참조 투명성은 값으로 바꿔도 전체 결과가 변하지 않는다는 더 넓은 개념이다.
일상 영어의 transparent처럼 ‘명백한, 투명한’이라는 뜻으로 쓰면 어색하다. 주로 학술 글, 프로그래밍 문서, 함수형 프로그래밍 설명에서 쓰는 전문 용어이며, 사람이나 일반 사물에 대해 쓰지 않는다. 명사형은 referential transparency이고, 반대 개념은 referentially opaque 또는 referential opacity이다.
유의어 뉘앙스 비교
- pure
- 프로그래밍에서 함수에 대해 더 흔히 쓰며, 부작용이 없고 입력에만 의존한다는 실용적 의미가 강하다.
- substitution-preserving
- 치환해도 성질이 보존된다는 설명적 표현으로, referentially transparent보다 덜 고정된 전문 용어이다.
- extensional
- 논리학에서 외연, 즉 실제 지시 대상이나 값에 의해 판단된다는 뜻으로 쓰이며, referentially transparent와 겹치지만 완전히 같은 말은 아니다.
반의어
- referentially opaque
- 같은 대상을 가리키는 표현을 바꾸면 진리값이 달라질 수 있는 문맥을 뜻한다.
- stateful
- 프로그래밍에서 내부 또는 외부 상태에 의존하거나 상태를 바꾸는 성질을 말하며, 항상 정확한 반의어는 아니지만 참조 투명성을 깨뜨리는 경우가 많다.
- intensional
- 표현의 지시 대상뿐 아니라 표현 방식, 의미, 믿음의 내용 등이 중요해지는 문맥을 가리킨다.
어원 · 암기 팁
[English]referential은 ‘가리킴, 지시, 참조’를 뜻하는 reference에서 온 말이고, transparent는 원래 ‘투명한’이라는 뜻이다. 철학과 논리학에서는 어떤 표현의 지시 대상이 문맥 안에서 ‘투명하게’ 드러나 치환이 가능하다는 의미로 발전했다. 이후 함수형 프로그래밍에서 표현을 그 값으로 바꾸어도 프로그램의 동작이 변하지 않는 성질을 설명하는 용어로 널리 쓰이게 되었다.
💡 reference는 ‘참조’, transparent는 ‘속이 보이는’이라고 기억하면 좋다. 즉 referentially transparent는 참조가 숨어 있지 않고 투명해서, 표현을 실제 값으로 바꿔도 문제가 없는 상태라고 연상할 수 있다.