referentially opaque
숙어C2formal동일한 대상을 가리키는 표현을 바꾸어 넣어도 의미나 진리값이 보존되지 않는
phrase
- 1
논리학·철학·언어학에서, 같은 지시 대상을 가진 표현으로 치환해도 전체 문장의 진리값이나 의미가 반드시 보존되지 않는 맥락을 나타내는 말C2
in logic, philosophy, and linguistics, describing a context in which substituting co-referential expressions does not necessarily preserve the truth value or meaning of the whole sentence
The sentence “Lois believes that Superman can fly” is often treated as referentially opaque, because replacing “Superman” with “Clark Kent” may change what Lois is said to believe.
“Lois believes that Superman can fly”라는 문장은 흔히 referentially opaque한 것으로 다루어진다. “Superman”을 “Clark Kent”로 바꾸면 로이스가 믿는 내용이 달라질 수 있기 때문이다.
Quotation creates a referentially opaque context: “Cicero” has six letters, but “Tully” does not, even though Cicero and Tully refer to the same person.
인용은 referentially opaque한 맥락을 만든다. Cicero와 Tully가 같은 사람을 가리키더라도 “Cicero”는 여섯 글자지만 “Tully”는 그렇지 않다.
- 2
컴퓨터 과학에서, 표현식을 그 결과값으로 바꾸어도 프로그램의 동작이 그대로 유지되지 않는 성질을 나타내는 말C2
in computer science, describing an expression that cannot be replaced by its resulting value without potentially changing a program’s behavior
A function that prints to the console or changes a global variable is not purely referentially transparent; it may be described as referentially opaque.
콘솔에 출력하거나 전역 변수를 바꾸는 함수는 순수하게 referentially transparent하지 않으며, referentially opaque하다고 설명될 수 있다.
Because the expression depends on the current time, it is referentially opaque: replacing it with one fixed value would change later evaluations.
그 표현식은 현재 시간에 의존하므로 referentially opaque하다. 하나의 고정된 값으로 바꾸면 나중의 평가 결과가 달라질 수 있다.
뉘앙스 · 쓰임
referentially opaque는 단순히 ‘모호한’이라는 뜻의 ambiguous와 다르다. 표현의 뜻이 애매하다는 말이 아니라, 같은 대상을 가리키는 표현으로 바꾸는 논리적 치환이 안전하지 않다는 뜻이다. 반대말인 referentially transparent는 그런 치환이 의미나 결과를 바꾸지 않는 경우를 말한다.
일상 회화에서는 거의 쓰지 않는 학술적·전문적 표현이다. 보통 a referentially opaque context, referentially opaque expression, referentially opaque operator처럼 명사를 꾸미는 형용사구로 쓴다. 철학·논리학에서는 진리값 보존 문제를, 프로그래밍에서는 값 대체 가능성이나 부작용 문제를 말할 때 쓰므로 분야에 따라 예시가 달라질 수 있다.
유의어 뉘앙스 비교
- intensional
- 의미·믿음·가능성 등 내포적 맥락을 가리키는 더 넓은 전문 용어로, referentially opaque와 겹치지만 완전히 같은 말은 아니다.
- non-extensional
- 외연만으로 진리값이 결정되지 않는다는 점을 강조하는 논리학적 표현이다.
- referentially non-transparent
- referentially opaque와 거의 같은 뜻이지만 덜 흔하고 설명적인 표현이다.
- not referentially transparent
- 가장 직접적인 설명식 표현으로, 기술 문서에서 명확하게 반대 개념을 나타낼 때 쓴다.
- context-dependent
- 문맥이나 상태에 따라 결과가 달라진다는 일반적 의미가 강하며, 논리적 치환 가능성까지 항상 뜻하지는 않는다.
- side-effecting
- 부작용을 일으킨다는 프로그래밍상의 원인을 강조하는 표현으로, 모든 referentially opaque한 경우가 반드시 side effect 때문인 것은 아니다.
반의어
- referentially transparent
- 표현식을 그 값으로 바꾸어도 프로그램의 의미나 동작이 변하지 않는 성질을 말한다.
- extensional
- 표현의 지시 대상이나 외연에 의해 진리값이 결정된다는 점을 강조한다.
- pure
- 함수형 프로그래밍에서 같은 입력에 같은 출력을 내고 부작용이 없다는 점을 강조한다.
어원 · 암기 팁
[English]referentially는 ‘가리키다, 참조하다’를 뜻하는 reference에서 온 부사이고, opaque는 라틴어 opacus에서 온 말로 ‘불투명한’이라는 뜻이다. 논리학과 분석철학에서 ‘참조가 투명하게 드러나지 않는 맥락’이라는 비유로 쓰이면서 전문 용어가 되었다. 이후 함수형 프로그래밍과 의미론에서도 반대 개념인 referentially transparent와 함께 널리 사용되었다.
💡 opaque가 ‘불투명한’이라는 뜻이므로, referentially opaque는 ‘참조 관계가 투명하게 보여서 마음대로 바꿀 수 있는 상태가 아니다’라고 기억하면 좋다. 즉 ‘같은 것을 가리키는 말이어도 바꿔 넣으면 문제가 생길 수 있다’로 연상한다.