날짜 : 2003 년 7 월 23 일 수요일 09:33:31 -0800받는 사람 : Stefan Ram [개인 정보 보호를 위해 제거됨] 보낸 사람 : Alan Kay [개인 정보 보호를 위해 제거 된 경우] 제목 : Re : "개체 지향"에 대한 설명
안녕 스테판-
지연해서 죄송하지만 휴가 중이었습니다.
오후 6시 27 분 +0200 7/17/03에 Stefan Ram은 다음과 같이 썼습니다.
박사님,
주제에 대한 튜토리얼 페이지에서 "객체 지향 프로그래밍"이라는 용어에 대해 권위있는 단어를 갖고 싶습니다. 내가 "권한있는"것으로 간주하는 유일한 두 가지 소스는 "ISO / IEC 2382-15"에서 "객체 지향"을 정의하는 국제 표준기구 (International Standards Organization)입니다.
내가했다고 확신합니다.
불행히도, 해당 용어에 대한 정의 나 설명이있는 웹 페이지 나 소스를 찾기가 어렵습니다. "상속성, 다형성 및 캡슐화"와 같이 이와 관련하여 말한 내용에 대한 몇 가지 보고서가 있지만 이는 직접적인 소스가 아닙니다. 또한 나중에 "메시지"에 더 중점을두고 있음을 알고 있습니다. 그러나 여전히 "개체 지향"에 대해 알고 싶습니다.
기록, 내 튜토리얼 페이지 및 추가 배포 및 출판에 대해서는 다음을 설명하십시오.
"객체 지향"이라는 용어가 언제 어디서 사용 되었습니까?
11 월 66 일 유타에서 Sketchpad, Simula, ARPAnet, Burroughs B5000의 디자인, 생물학 및 수학 배경에 영향을 받았을 때 나는 프로그래밍을위한 아키텍처를 생각했습니다. 1967 년에 누군가 내가 무엇을하고 있는지 물었을 때 아마도 "개체 지향 프로그래밍"이라고 말했다.
그것의 원래 개념은 다음과 같은 부분을 가졌습니다.
나는 객체가 네트워크의 생물학적 세포 및 / 또는 개별 컴퓨터와 같고 메시지와 만 통신 할 수 있다고 생각했습니다. (메시징은 처음에 시작되었습니다. 유용한).
나는 데이터를 제거하고 싶었다. B5000은 거의 믿을 수없는 HW 아키텍처를 통해 거의이 작업을 수행했습니다. 셀 / 전체 컴퓨터 메타포가 데이터를 제거하고 "<-"는 또 다른 메시지 토큰 일 뿐이라는 것을 깨달았습니다 (이 심볼을 모두 이름으로 생각했기 때문에 이것을 생각하는 데 꽤 오랜 시간이 걸렸습니다. 기능과 절차.
나의 수학 배경은 각 물체가 그것에 관련된 대수학을 가질 수 있다는 것을 깨달았고, 이것들의 패밀리가있을 수 있으며, 그것들은 매우 유용 할 것입니다. "다형성 (polymorphism)"이라는 용어는 훨씬 후에 부과되었으며 (Peter Wegner가 생각합니다) 실제로 함수의 명명법에서 비롯된 것이므로 함수보다 더 많은 것을 원했습니다. 나는 일반적인 대수를 준 대수 형태로 다루기 위해 "일반성"이라는 용어를 만들었습니다.
나는 Simula I 또는 Simula 67이 상속을받는 방식이 마음에 들지 않았습니다 (Nygaard와 Dahl이 엄청난 사상가와 디자이너라고 생각했지만). 그래서 상속을 더 잘 이해할 때까지 상속 기능을 기본 제공 기능으로 사용하지 않기로 결정했습니다.
이 아키텍처에 대한 나의 원래 실험은 van Wijngaarten과 Wirth의 "Algol의 일반화"및 Wirth의 오일러에서 개조 한 모델을 사용하여 수행되었습니다. 둘 다 LISP와 비슷하지만보다 일반적인 읽기 쉬운 구문이 있습니다. 그때 나는 유형 금속 언어에 대한 괴물 LISP 아이디어를 이해하지 못했지만 Irons의 IMP를 포함한 다양한 소스에서 나오는 확장 가능한 언어에 대한 아이디어와 거의 비슷했습니다.
이것의 두 번째 단계는 LISP를 최종적으로 이해 한 다음이 이해를 사용하여 훨씬 더 좋고 작고 강력하며 더 늦은 기반 구조를 만드는 것입니다. Dave Fisher의 논문은 "McCarthy"스타일로 수행되었으며 확장 가능한 제어 구조에 대한 그의 아이디어는 매우 도움이되었습니다. 이 시점에서 또 다른 큰 영향은 Carl Hewitt의 PLANNER였습니다 (Prolog를 얼마나 잘, 얼마나 빨리 예측할 수 있었는지에 따라 인정을받지 못했습니다).
Xerox PARC의 원래 스몰 토크는 위의 내용에서 나왔습니다. 그 이후의 스몰 토크는 역사 장의 끝에서 불평합니다 : 그것들은 시뮬 라쪽으로 밀려 났고 확장 메커니즘을 유용한 곳으로 더 안전한 것으로 대체하지 않았습니다.
"객체 지향 [프로그래밍]"은 무엇을 의미합니까? (자습서와 같은 소개는 필요하지 않으며 가능한 경우 독자에게 친숙한 다른 개념으로 "상속, 다형성 및 캡슐화로 프로그래밍"과 같은 간단한 설명 만 있으면됩니다. 또한 "개체를 설명 할 필요는 없습니다. "Smalltalk의 초기 역사"에서 "개체"에 대한 설명이있는 소스가 이미 있기 때문입니다.)
(나는 형식에 반대하지 않지만 완전히 고통스럽지 않은 형식 시스템을 알지 못하므로 여전히 동적 입력을 좋아합니다.)
나에게 OOP는 메시징, 로컬 보존 및 상태 프로세스 숨기기 및 모든 것의 극단적 인 바인딩을 의미합니다. 스몰 토크와 LISP에서 수행 할 수 있습니다. 이것이 가능할 수있는 다른 시스템이있을 수 있지만 나는 그것들을 모른다.
[또한] 언급 한 것 중 하나는 Simula가 촉매 작용을하는 두 가지 주요 경로가 있다는 것입니다. 초기는 (우연히 우연히) 내가 가져간 bio / net 비 데이터 절차 경로였습니다. 연구 대상으로 조금 후에 온 다른 하나는 추상적 데이터 유형이었고, 이것은 훨씬 더 많은 놀이를 얻었습니다.
우리가 전체 역사를 살펴보면, 우리는 프로토 -OOP 재료가 ADT로 시작했고, 내가 "개체"라고 부르는 것에 약간의 포크가 있었는데, 이것이 스몰 토크 등을 야기 시켰지만 작은 포크 후에는 CS 설립은 ADT를 거의 수행했으며 데이터 절차 패러다임을 고수하기를 원했습니다. 역사적으로, USAF Burroughs 220 파일 시스템 (Smalltalk 기록에서 설명)은 MIT (AED 및 이전)의 Doug Ross의 초기 작업 인 데이터 구조의 내장 프로 시저 포인터 인 Sketchpad ( 완전 다형성-예를 들어 데이터 구조에서 동일한 오프셋은 "표시"를 의미하고 구조가 나타내는 객체 유형 등에 대한 적절한 루틴에 대한 포인터가 있으며, Burroughs B5000, 프로그램 참조 테이블은 "큰 객체"이고 "data"와 "procedures"에 대한 포인터를 포함하지만 데이터를 추적하고 프로 시저 포인터를 찾은 경우 올바른 작업을 수행 할 수 있습니다. 초기 유타 문제로 해결 한 첫 번째 문제는 메서드와 개체 만 사용하여 "데이터가 사라지는"문제였습니다. 60 년대 말 Bob Balzer는 "Dataless Programming"이라는 아주 멋진 논문을 썼고, 그 후 John Reynolds는 똑같이 멋진 논문 인 "Gedanken"(1970 년에 람다 사용)을 썼다. 올바른 방법으로 표현하면 절차에 의해 데이터를 추상화 할 수 있습니다. 그러나 데이터를 따르고 프로 시저 포인터를 찾은 경우 종종 올바른 일을 할 수 있습니다. 초기 유타 문제로 해결 한 첫 번째 문제는 메서드와 개체 만 사용하여 "데이터가 사라지는"문제였습니다. 60 년대 말 Bob Balzer는 "Dataless Programming"이라는 아주 멋진 논문을 썼고, 그 후 John Reynolds는 똑같이 멋진 논문 인 "Gedanken"(1970 년에 람다 사용)을 썼다. 올바른 방법으로 표현하면 절차에 의해 데이터를 추상화 할 수 있습니다. 그러나 데이터를 따르고 프로 시저 포인터를 찾은 경우 종종 올바른 일을 할 수 있습니다. 초기 유타 문제로 해결 한 첫 번째 문제는 메서드와 개체 만 사용하여 "데이터가 사라지는"문제였습니다. 60 년대 말 Bob Balzer는 "Dataless Programming"이라는 아주 멋진 논문을 썼고, 그 후 John Reynolds는 똑같이 멋진 논문 인 "Gedanken"(1970 년에 람다 사용)을 썼다. 올바른 방법으로 표현하면 절차에 의해 데이터를 추상화 할 수 있습니다.
데이터가 아닌 개체를 좋아하는 사람들은 더 적었고, 나 자신, Carl Hewitt, Dave Reed 및 기타 몇 명을 포함했습니다.이 그룹의 대부분은 ARPA 커뮤니티에서 왔으며 기본 계산 단위가 전체 컴퓨터 인 ARPAnet → 인터넷 설계. 그러나 70 년대와 80 년대에 걸쳐 어떤 아이디어가 완고하게 매달려있을 수 있는지를 보여주기 위해 많은 사람들이 객체와 메시지를 생각하는 대신 "원격 프로 시저 호출"을 시도했습니다. Sic 대중 교통 gloria mundi.
건배,
앨런 케이