Erlang의 프로세스 / 메시지와 Smalltalk의 개체 / 메시지의 차이점은 무엇입니까?


12

Smalltalk의 객체 / 메시지 와 Erlang의 프로세스 / 메시지의 차이점을 이해하려고합니다 . 나는 주제에 대한 다음 게시물을 읽었습니다 .

내가 이해하는 한 Smalltalk에서는 모든 것이 객체 이며 모든 것이 동일한 "객체 / 메시지"추상화를 갖습니다. 심지어 숫자 1는 메시지 전달을 통해서만 도달 할 수있는 객체입니다. 가 1얼랑 / 비약의 과정은? Erlang의 모든 것이 메시지 / 프로그램 패러다임에 대한 응답입니까? Erlang의 번호로 메시지를 보낼 수 있습니까?

고마워


정수 1은 프로세스가 아니므로 메시지를 보낼 수 없습니다. 반복 프로세스 내에서 정수 상태를 랩핑하고 해당 프로세스 메시지를 보낼 수 있습니다 (예 : 값을 늘리거나 줄이는 명령). 하지만 다시는 더 이상 여기에 비약의 예를 아래 값 1의 스크롤 없을 것 dantswain.herokuapp.com/blog/2015/01/06/...
GavinBrelstaff

답변 주셔서 감사합니다!
46 분에 완전한 기능

답변:


18

Erlang의 프로세스와 Smalltalk의 개체는 실제로 동일합니다.

얼랭은 놀랍지 않습니다. Erlang은 배우 모델 언어입니다. 액터 모델은 스몰 토크의 메시지 중심 평가 모델에 기반한 메시지 중심 평가 모델 인 Carl Hewitt가 발명했습니다. (실제로 Actor와 Objects는 동일합니다. 세부 사항 만 다릅니다.) Alan Kay는 스몰 토크를 디자인 할 때 Carl Hewitt의 PLANNER의 영향을 받았습니다.

따라서 액터와 오브젝트 사이에는 밀접한 관계가 있으므로 Erlang의 프로세스와 스몰 토크의 오브젝트가 너무 비슷하다는 것은 놀라운 일이 아닙니다.

한 가지를 제외하고 : Erlang의 디자이너들은 Actor Model에 대해 몰랐습니다 !!! 조 암스트롱 (Joe Armstrong)은 1990 년대 후반에 프로그래밍 패러다임에 관한 결정적인 책의 공동 저자 인 세이프 하리 디 (Seif Haridi)에 의해 박사 학위 논문을 썼을 때만 나중에 알게되었습니다.

Joe Armstrong은 OO에 대해 강력하게 옹호하는 기사를 작성 했지만 OO Sucks는 왜 Erlang이 실제로 객체 지향적이라는 것을 깨달았을 때 마음이 바뀌 었습니다. 사실, 그는 심지어 Erlang이 Joe Armstrong 및 Ralph Johnson과의 인터뷰 에서 유일한 객체 지향 언어 라고 주장하기까지했습니다 .

이것은 진화 생물 학자들이 수렴 진화 , 즉 유사한 외부 압력에 반응하여 유사하게 진화하는 두 개의 관련이없는 종이 라고 부르는 흥미로운 사례입니다 .

그러나 Erlang과 Smalltalk 사이에는 여전히 많은 관계가 있습니다.

Erlang은 Prolog의 동시 확장으로 시작했으며 (Erlang이 별도의 언어가 된 경우에도 첫 번째 구현은 Prolog로 작성 되었음) 여전히 오늘날까지 Prolog에 크게 뿌리를두고 있습니다. 프롤로그는 Carl Hewitt의 PLANNER의 영향을 많이받습니다.

스몰 토크는 또한 나중에 ARPANet (그리고 나중에 인터넷)이되는 것에 큰 영향을 받았다. Erlang은 네트워크 시스템을 위해 설계되었습니다.

그러나 Erlang과 Smalltalk의 중요한 차이점 중 하나는 모든 것이 프로세스가 아니라는 것입니다. 1프로세스가 아닌 숫자입니다. 번호로 메시지를 보낼 수 없습니다.

Erlang의 여러 "레이어"가 있습니다 :

  • Functional Erlang : 통일과 같이 Prolog에서 상속 된 일부 "oddities"를 가진 가장 일반적이고 동적으로 유형화 된 기능 언어입니다.
  • 동시 Erlang : 기능적 Erlang + 프로세스 및 메시지.
  • 분산 Erlang : 동시 Erlang + 원격 프로세스.
  • 내결함성 Erlang : OTP 라이브러리에 체계화 된 분산 Erlang + 특정 디자인 패턴 (예 : 감독자 트리 및) gen_server.

Erlang / OTP로 작성된 Fault-Tolerant 시스템은 일반적으로 "객체 지향"으로 인식 될 수 있습니다. 그러나 이러한 객체의 내부는 종종 객체 지향 스타일보다 더 기능적으로 구현됩니다.

흥미롭게도, Erlang이 겪었던 "진화적인 압력", 즉 Erlang의 설계자들이 해결하려고했던 문제 (신뢰성, 복제, 중복성 등)는 세포의 진화를 초래 한 것과 동일한 압력입니다. Alan Kay는 미생물학을 전공했으며 생물학적 세포에서 OO를 명시 적으로 모델링했습니다. 이것은 Erlang과 Smalltalk의 또 다른 유사점입니다.

나는 이것에 대해 또 다른 답변을 썼다 .


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