성찰이 아니라 성찰을 성찰이라고 부르는 이유는 무엇입니까?


79

성찰이라는 용어의 기원은 무엇입니까? 자기 성찰처럼 보입니다. 왜 그렇게 부르지 않습니까?

자기 성찰 : 내부를 바라 보는 것; 구체적으로, 자기 검토의 행위 또는 과정.

반사 :

  1. 반영하는 행위 또는 반영된 상태.
  2. 이미지; 대표; 짝
  3. 무언가에 대한 생각의 고정; 신중한 고려
  4. 고려 또는 명상에서 발생하는 생각.

실제로 이것은 흥미로운 질문입니다. 나는 더 이상 어떤 차이를 볼 수 있는지 잘 모르겠습니다 : p
Johannes Schaub-litb dec

정의를 추가했습니다. 마음에 들지 않으면 제거 할 수 있습니다.
mmcdole

1
적어도 TCL에서는 차이가없는 것 같습니다
jk.

@ JohannesSchaub-litb :이 질문은 필수 / 탁월한 질문입니다. 이전에 요청한 내용을 찾지 못한 경우 게시 직전이었습니다. 그것은 우리가 주변의 사소한 세부 사항에주의를 기울이지 않고 인생에서 얼마나 많은 일을하는지 보여줍니다.
Veverke 2015 년

답변:


63

Reflection에 대한 프랑스어 wikipedia 기사에 흥미로운 답변이 있습니다 ( 여기 )

반사는 두 부분으로 분해 될 수 있습니다.

  • introspection : 프로그램은 자신을 검사 할 수 있습니다.
  • 중보기도 : 프로그램은 상태 / 의미를 수정할 수 있습니다.

따라서 성찰은 성찰보다 '강한'속성입니다. 그렇기 때문에 런타임에 유형을 알 수있는 능력에 대해 유형 검사 라고 말한 것입니다 (그리고이를 변경하는 것은 변환 / 캐스팅이라는 또 다른 작업입니다).

편집 : 실제로 나는 첫 번째 대답이 정확히 말하고 있다는 것을 깨달았습니다 ^^. 나 자신을 뽑을 시간 ...


2
프랑스어 위키피디아 기사를 읽은 나는 프랑스어에서 "반사"라는 용어가 영어보다 "반사성"이라는 개념과 더 밀접하게 관련되어 있다는 것을 깨달았습니다. 이것은 프로그래밍 언어에 적용되는 용어를 이해하는 올바른 방법 인 것 같습니다.
Jan Hettich

나는 아직도 이것이 질문에 어떻게 답하는지 볼 수 없다. 실제로, 위키피디아는 정보를 변경하지 않고 정보를 얻는 것만으로 "만족"한다는 점에서 유형 내성을 차별화하는 데 도움이된다 (다시 말하지만, 이것이 정확히 어떻게 관련이 있는가 ... 여러 번 리플렉션을 사용하여 이동 중에 유형을 인스턴스화합니다. 따라서 여기서 변경은 어디에서 발생 했습니까? 처음에는 새로 생성 된 객체가 없었으며 "존재하기"를 변경으로 간주하지 않는 한 다른 변경은 발생하지 않았습니다. . 변화는 (어느 정도 이해가되지 것)을 검사 한 대상 자체에 없었다
Veverke

따라서 성찰은 "성찰"보다 더 많은 단계를 포함하는 "과정"입니다. 반성에 찬성하는 설득력있는 주장은 어디에 있습니까?! 단어로서의 자기 성찰은 프로그래밍 맥락에서 용어가 나타내는 것과 밀접한 관련이 있습니다. 반면에 "반영"은 "내관"보다 "수정"에 더 가까운 명령어 / 유형을 반영하는 행위가 무엇입니까?
Veverke

27

성찰은 변화의 목적을 위해 자기 자신을 성찰하는 "자기 검토, 자기 수정 및 자기 복제"의 아이디어에서 비롯됩니다. 프로그래밍에서 리플렉션을 사용하여 프로그램을 검사하는 대신 사용하는 맥락에서 프로그램 자체의 구조를 검사합니다. 돌아 오는 것은 작동하는 데이터가 아니라 수정하는 데 사용할 수있는 프로그램의 표현입니다.

더 많은 정보는 wikipedia 기사에서 찾을 수 있습니다 . .


당신은 그의 질문에 전혀 대답하지 않았습니다. 자기 성찰 : 안을 들여다 보며; 구체적으로, 자기 검토의 행위 또는 과정.
mmcdole

@Simucal, 더 명확하지 않아서 죄송합니다. 나는 그것이 행동 의도를 가진 시험임을 명시하기 위해 대답을 편집했습니다.
tvanfosson

그는했다. 그는 자신을 수정하여 변화를 반영하는 프로그램의 능력에 따라 반영이라는 용어를 사용한다고 말했습니다.
Filip Dupanović

1
@kRON, 내 초기 답변은 구체적이지 않았습니다.
tvanfosson

나는 아직도 이것이 질문에 어떻게 답하는지 볼 수 없다. 실제로, 위키피디아는 정보를 변경하지 않고 정보를 얻는 것만으로 "만족"한다는 점에서 유형 내성을 차별화하는 데 도움이된다 (다시 말하지만, 이것이 정확히 어떻게 관련이 있는가 ... 여러 번 리플렉션을 사용하여 이동 중에 유형을 인스턴스화합니다. 따라서 여기서 변경은 어디에서 발생 했습니까? 처음에는 새로 생성 된 객체가 없었으며 "존재"를 변경으로 간주하지 않는 한 다른 변경은 발생하지 않았습니다. . 변화는 (어느 정도 이해가되지 것)을 검사 한 대상 자체에 없었다
Veverke

4

런타임에 객체의 유형을 결정하는 기능을 나타내는 유형 검사라는 또 다른 개념이 있습니다.

편집 : 귀하의 질문은 언어에 구애받지 않지만 Java에서는 리플렉션을 사용하여 객체가 어떤 멤버를 보유하고 있는지 식별하는 반면, 인트로 스펙 션을 사용하면 객체가 가진 JavaBeans 속성을 식별 할 수 있습니다. 이것이 인트로 스펙 션 클래스가있는 이유입니다. java.beans 패키지. 다른 언어에서는 용어의 정확한 차이가 뭔지는 모르겠지만


4

리플렉션이라는 용어는 http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-272.pdf 에서 찾을 수있는 Brian Cantwell Smith의 1982 년 PHD 논문에서 유래되었습니다 .

리플렉션이라고 불리는 것은 종종 단순히 자기 성찰, 즉 메타 데이터에 대한 접근입니다. 반영에 대한 Smith의 요구 사항에는 메타 데이터 의 인과 관계가 포함되어 있으며 이는 일반적으로 누락 된 구성 요소입니다. 반영을 상상하는 한 가지 방법은 구현에 대한 액세스이며, 단순히 계산의 일부 새 인스턴스의 구현이 아니라 자체 구현에 대한 계산의 액세스 입니다. 확실히 Java의 원래 리플렉션 API는 이러한 의미에서 리플렉션이 아니기 때문에 이름이 잘못되었습니다.


1

.Net에서 Reflection이라는 용어는 검사되는 유형 자체가 아니라 설명 일 뿐인 코드의 매니페스트이기 때문에 매우 적절하다고 생각합니다.


1

정의 3과 4의 의미에서 성찰은 내성적 일 수 있습니다. 즉, 성찰은 자기 자신에 대한 성찰이다. 자기 성찰은 그 단어가 더 구체적이기 때문에 코드 자체를 분석하는 행위에 사용하기에 더 좋은 단어라고 생각하지만, 성찰이 완전히 부적절하다고 생각하지는 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.