Erlang은 실제로 배우 모델 언어입니까?


18

나는이 기사를 읽고 있었다 :

http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pjm2/

그리고 그것은 언급합니다 :

... 액터 모델에서 정수조차도 액터로 표현됩니다 ...

Wikipedia는 다음을 확인합니다.

액터 모델은 모든 것이 액터라는 철학을 채택합니다.

Erlang에는 많은 데이터 유형이 있으며 해당 유형은 내가 알 수있는 한 배우가 아닙니다.

Erlang이 액터 모델 언어가 아니라는 의미는 아닙니다. 예를 들어 Java는 특정 기능 프로그래밍 기능이 없기 때문에 기능 언어가 아닙니다.

추신 : Akka는 호스트 언어에서 오는 비 행위자 데이터 유형 외에도 상속 배우가 호스트 언어 기능을 통해 행동을 확장 할 수 있기 때문에 Akka는 배우 모델이 아닙니다.

답변:


39

액터 모델이 Erlang보다 오래되었지만 Erlang의 디자이너는 Erlang을 디자인 한 후에 만 ​​액터 모델에 대해 배웠으므로 약간의 차이가 예상됩니다.

Carl Hewitt는 스몰 토크의 의미를 전달하는 메시지를 기반으로 액터 모델을 만들었습니다. Alan Kay는 스몰 토크의 의미를 전달하는 메시지를 PLANNER의 목표 중심 평가에 기반을 두었습니다.

PLANNER는 Prolog의 선구자였습니다. Erlang은 원래 언어가 아니라 Prolog에서 내결함성 분산 프로그래밍을위한 라이브러리로 시작하여 나중에 Prolog의 영향을 받아 자체 언어가되기 전에 Prolog의 방언으로 발전했습니다. 또한 원래 Erlang 인터프리터는 Prolog로 작성되었습니다.

따라서 Erlang의 프로세스, OO의 오브젝트 및 액터 모델의 액터 간의 유사점은 우연의 일치와 다릅니다.

Erlang은 여러 계층의 언어로, 각 계층은 하위 계층의 상위 집합입니다. 가장 작은 레이어는 Functional Erlang 입니다. 이것은 바인딩 / 평등 대신 통합과 같이 Prolog에서 상속 된 일부 추가 기능이있는 표준 기능 언어입니다. 프로세스메시지 를 추가 하면 Concurrent Erlang이 발생 합니다. 원격 프로세스를 처리하면 분산 된 Erlang 을 얻게됩니다 됩니다. 이제 OTP에서 일부 라이브러리 및 디자인 패턴을 추가하면 내결함성이있는 Erlang이 있습니다.

프로세스는 액터입니다. (그 또한 객체입니다.) 내부 프로세스 는 액터 기반이 아니라 기능적입니다. OTP의 도구와 패턴을 사용하여 구성된 내결함성 Erlang 시스템의 구조는 종종 객체 지향적입니다.

따라서, 당신이보고있는 규모에 달려 있습니다.

일반적인 대형 Erlang 시스템에는 기능 프로그래밍을 사용하여 메시지 전달 행위자가 구현 된 객체 지향 아키텍처가 있습니다. OTP라고 부르는 것은 server객체와 밀접한 관련이 있으며 server프로세스 (액터)로 구성되며 프로세스는 내부적으로 함수를 사용합니다.

일반적으로 순수한 액터 언어가 연구를 떠난 것으로는 믿지 않습니다. 도대체 Carl Hewitt의 PLASMA ( 원래의 Actor Language)가 구현 된 것인지조차 모른다 .


4
Erlang은 또한 해결해야 할 문제가있는 사람들에 의해 설계되었으며, 그 위치에있을 때 실용의 제단에서 개념적 순결이 종종 희생됩니다.
Blrfl

흥미롭게도, 그들이 해결하려는 문제 (신뢰성, 복제, 중복성,…)는 세포가 진화했을 때 해결하려는 것과 같은 성질입니다. Alan Kay는 미생물학을 전공했으며 생물학적 세포에서 OO를 명시 적으로 모델링했습니다. 또 다른 병렬.
Jörg W Mittag

1
PLASMA는 MacLisp에서 구현되었습니다. 빠르게 발전하는 연구 언어였습니다.
Jerry101

1
이 답변을 정말로 즐겼습니다. @ JörgWMittag 감사합니다!
Felixyz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.