행위자 모델
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
행위자 모델은 "모든 것이 행위자"라는 철학을 기반으로 하는 동시성 모델이다. 1973년 칼 휴잇, 피터 비숍, 리처드 슈타이거에 의해 처음 제안되었으며, 일반 상대성 이론, 양자역학 등 물리학과 Lisp, 시뮬라 등의 프로그래밍 언어, 패킷 스위칭 등에서 영감을 받았다. 액터 모델은 행위자 간 비동기 메시지 전달을 통해 상호 작용하며, 액터 내의 병렬 처리, 동적 생성, 주소 포함 등의 특징을 가진다. 확장성, 투명성, 비일관성 등의 문제를 해결하고자 하며, 다양한 프로그래밍 언어와 프레임워크에서 구현되어 병렬 시스템 모델링 및 개발에 활용된다.
더 읽어볼만한 페이지
행위자 모델 |
---|
2. 역사
칼 휴이트를 비롯한 여러 연구자들이 액터 모델을 제안했으며, 일반 상대성이론, 양자역학, 리스프, 시뮬라, 초기 버전의 스몰토크 등 다양한 분야에서 영감을 받았다.
칼 휴이트에 따르면, 액터 모델은 이전의 계산 모델과 달리 물리학에서 영감을 받았다. 또한 리스프, 시뮬라, 초기 버전의 스몰토크, 역량 기반 시스템, 패킷 스위칭 프로그래밍 언어의 영향을 받았다. 이 모델의 개발은 "각각 자체 로컬 메모리와 통신 프로세서를 가지고 고성능 통신 네트워크를 통해 통신하는 수십, 수백 또는 심지어 수천 개의 독립적인 마이크로프로세서로 구성된 고도로 병렬 컴퓨팅 머신에 대한 전망에 의해 동기 부여되었다."[2] 이후, 멀티코어 및 매니코어 컴퓨터 아키텍처를 통한 대규모 동시성의 출현으로 액터 모델에 대한 관심이 다시 높아졌다.
2. 1. 초기 역사
칼 휴이트, 피터 비숍, 리처드 슈타이거가 1973년에 발표한 논문에서 액터 모델이 처음으로 제안되었다.[2] 아이린 그레이프는 박사 학위 연구의 일환으로 액터 모델에 대한 조작적 의미론을 개발했다.[3] 헨리 베이커와 칼 휴잇은 행위자 시스템에 대한 일련의 공리적 법칙을 발표했다.[4][5] 윌리엄 클린저는 멱영역을 기반으로 하는 지시적 의미론을 소개했고,[2] 굴 아가는 클린저의 모델을 보완하는 전환 기반 의미 모델을 개발했다.[6]2. 2. 발전 과정
매사추세츠 공과대학교(MIT) 메시지 전달 의미론 그룹의 러시 앳킨슨, 주세페 아타르디, 헨리 베이커, 게리 바버, 피터 비숍, 피터 드 종, 켄 칸, 헨리 리버만, 칼 매닝, 톰 라인하르트, 리처드 슈타이거, 댄 테리얼트 등이 액터 모델 소프트웨어 구현 연구를 수행하였다.[2] 캘리포니아 공과대학교(Caltech)의 척 세이츠와 MIT의 빌 댈리가 이끄는 연구 그룹은 액터 모델의 메시지 전달을 더욱 발전시킨 컴퓨터 아키텍처를 구축했다.교토 대학교 토코로 연구소, 마이크로일렉트로닉스 및 컴퓨터 기술 공사(MCC), MIT 인공지능 연구소, SRI, 스탠퍼드 대학교, 일리노이 대학교 어배너-섐페인,[7] 피에르 및 마리 퀴리 대학교(파리 6 대학교), 피사 대학교, 도쿄 대학교 요네자와 연구소, 센트룸 위스켄데 & 인포르마티카(CWI) 등에서 액터 모델 연구가 수행되었다.
일본에서는 요네자와 아키노리 등의 연구가 액터 모델 발전에 기여했다.
3. 기본 개념
액터 모델은 "모든 것은 액터이다"라는 철학을 바탕으로 한다. 이는 일부 객체 지향 프로그래밍 언어에서 사용되는 "모든 것이 객체이다"라는 철학과 유사하지만, 액터 모델은 본질적으로 병행성을 가진다는 차이점이 있다.
액터는 메시지를 받고, 그 메시지에 응답하여 동시에 다음을 수행할 수 있는 계산 실체이다:
- 다른 액터에게 유한한 수의 메시지를 보낸다.
- 유한한 수의 새로운 액터를 생성한다.
- 다음에 수신할 메시지에 대한 동작을 지정한다.
이러한 동작들은 순서가 정해져 있지 않으며 병렬로 수행될 수 있다.
액터 간의 통신은 비동기 통신 방식으로 이루어지며, 메시지 전달 순서는 보장되지 않는다. 액터는 주소(메일 주소)를 통해 식별되며, 다음 경우에만 다른 액터와 통신할 수 있다:
- 메시지에 포함된 주소를 통해
- 이미 알고 있는 주소를 통해
- 자신이 생성한 액터의 주소를 통해
액터 모델은 액터 내 및 액터 간의 고유한 동시성, 액터의 동적 생성, 메시지에 액터 주소 포함, 그리고 메시지 도착 순서에 대한 제한 없이 직접적인 비동기 메시지 전달을 통해서만 상호 작용한다는 특징을 갖는다.
액터 모델은 일반 상대성 이론과 양자역학을 포함한 물리학에서 영감을 받았다.[2] 또한 Lisp, 시뮬라, 초기 버전의 스몰토크, 역량 기반 시스템, 그리고 패킷 스위칭 프로그래밍 언어의 영향을 받았다.
3. 1. 핵심 특징
액터 모델은 본질적으로 병행성을 가지는 계산 모델이며, 다음과 같은 핵심 특징을 갖는다:- 병행성 (Concurrency): 각 액터는 독립적으로 동작하며 메시지를 동시에 처리한다. 이는 객체 지향 소프트웨어가 순차적으로 실행되는 것과 대조적이다.
- 비동기 통신 (Asynchronous Communication): 액터 간 통신은 비동기적이다. 즉, 메시지를 보낸 후 응답을 기다리지 않고 다음 계산을 수행한다.
- 메시지 전달 (Message Passing): 액터 간 상호 작용은 메시지 전달을 통해서만 이루어진다.
- 캡슐화 (Encapsulation): 액터는 자신의 상태를 외부에 숨기고, 메시지를 통해서만 상태를 변경할 수 있다.
- 동적 생성 (Dynamic Creation): 액터는 실행 중에 새로운 액터를 유한하게 생성할 수 있다.
- 가변 토폴로지 (Variable Topology): 메시지에 액터 주소(우편 주소)를 포함하여 액터 간 관계가 동적으로 변경될 수 있다.
- 국소성 (Locality): 액터는 자신이 알고 있는 주소로만 메시지를 보낼 수 있다. 주소는 메시지를 통해 얻거나, 직접 생성한 액터의 주소를 사용한다.
이러한 특징들은 액터 모델을 멀티코어 및 매니코어 환경에서 대규모 병렬 처리에 적합하게 한다.
4. 정규 시스템
시간이 지남에 따라 액터 모델의 시스템에 대한 추론을 가능하게 하는 다양한 정규 시스템들이 개발되었다. 여기에는 다음이 포함된다:
- 운용 의미론[95][96]
- 액터 시스템을 위한 법칙[97]
- 표시적 의미론[98][99]
- 변이 의미론[100]
메시지의 보장된 전달을 형식화하지 않아 액터 모델에 완전히 충실하지 않은 형식은 다음과 같다 (액터 의미론과 대수 및 선형 논리의 관계 시도 참조):
- 몇 가지 다른 액터 대수[11][12][13]
- 선형 논리[14]
4. 1. 메시지 전달 의미론
액터 모델은 메시지 전달의 의미에 관한 것이다.액터 모델은 이전의 계산 모델들과는 달리, 물리 법칙을 발상의 기본으로 하고 있다. 이 외에도, LISP 언어, Simula 언어, 케이퍼빌리티 시스템, 패킷 통신, 초창기 Smalltalk 등의 영향을 받았다. 액터 모델은 "수백, 수천 개의 마이크로프로세서로 구성되어 개별적으로 로컬 메모리를 가지며, 고성능 통신 네트워크로 통신을 수행하는 병렬 컴퓨터가 가까운 미래에 등장할 것이라는 예측"에서 개발되었다[85]. 그 후, 웹 서비스와 메니코어 아키텍처를 활용한 초병렬성으로 범위를 넓혀왔다.
칼 휴잇의 1973년 논문에 이어, 아이린 그레이프는 액터 모델의 조작적 의미론을 개발했다[86]. 2년 후, 헨리 베이커와 휴잇는 액터 시스템의 공리적 법칙군을 발표했다[87]. 1981년, 윌리엄 클린저는 Power Domains에 기반한 액터 모델의 표시적 의미론을 발표했다[85]. 1985년, 굴 아가는 클린저의 의미론에 기반한 전이 기반의 의미론 모델을 구축하여[88] 액터 모델 이론을 완성했다.
액터 모델을 소프트웨어로 구현하는 작업은 MIT의 Message Passing Semantics Group에서 진행되었다. 또한, 캘리포니아 공과대학교의 Chuck Seitz와 MIT의 빌 댈리가 이끄는 팀은 액터 모델에 기반한 메시지 패싱을 사용한 컴퓨터 아키텍처를 구축했다.
일본에서는, 요네자와 아키노리 등의 연구가 유명하다.
4. 1. 1. 무제한 비결정성 논쟁
에츠허르 데이크스트라는 무제한 비결정성(무제한 불확정성이라고도 함)에 관한 논란을 야기했는데, 이는 동시성의 속성으로, 공유 자원에 대한 경합 중재의 결과로 요청을 처리하는 데 걸리는 시간이 무제한적으로 길어질 수 있지만, 여전히 해당 요청이 결국 처리될 것을 보장하는 것이다.[21] 칼 휴잇은 액터 모델이 서비스 보장을 제공해야 한다고 주장했다. 데이크스트라의 모델에서는 컴퓨터에서 순차적 명령의 실행 사이에 무제한의 시간이 걸릴 수 있지만, 잘 정의된 상태에서 시작된 (병렬) 프로그램은 제한된 수의 상태에서만 종료될 수 있었다. 결과적으로 그의 모델은 서비스 보장을 제공할 수 없었다. 데이크스트라는 무제한 비결정성을 구현하는 것은 불가능하다고 주장했다.휴잇은 반대로 아비터라고 하는 계산 회로가 정착하는 데 걸리는 시간에 제한을 둘 수 없다고 주장했다(metastability (electronics) 참조).[21] 아비터는 컴퓨터 클럭이 외부 입력(예: 키보드 입력, 디스크 접근, 네트워크 입력 등)에 대해 비동기적으로 작동하는 상황을 처리하기 위해 컴퓨터에서 사용된다. 따라서 컴퓨터로 전송된 메시지를 수신하는 데 무제한의 시간이 걸릴 수 있으며, 그동안 컴퓨터는 무제한의 상태를 거칠 수 있다.
액터 모델은 윌 클링어가 도메인 이론을 사용하여 수학적 모델로 포착된 무제한 비결정성을 특징으로 한다.[2]
4. 1. 2. 직접 통신과 비동기성
액터 모델에서 메시지는 버퍼링될 필요가 없는데, 이는 이전의 동시 계산 모델들과는 다른 점이다. 버퍼링이 없다는 점은 초기에 많은 오해를 낳았고, 여전히 논란거리이다. 일부 연구자들은 메시지가 "에테르"나 "환경"에 버퍼링된다고 주장하기도 했다. 하지만 액터 모델에서 메시지는 IP의 패킷처럼 단순히 전송되며, 수신자와 동기적인 핸드셰이크는 필요하지 않다.[8]4. 1. 3. 가변 토폴로지
메시지에 액터 주소를 포함함으로써 액터 간의 관계가 동적으로 변경될 수 있다. 이는 패킷 교환의 영향을 받은 것으로, 휴잇은 통신에 필수 필드가 전혀 없을 수 있는 새로운 동시 계산 모델을 제안했다. 즉, 통신이 비어 있을 수도 있다. 물론, 통신을 보내는 측에서 받는 측이 이미 가지고 있지 않은 주소에 접근할 수 있도록 하려면 해당 주소를 통신에 포함하여 보내야 한다.예를 들어, 행위자가 나중에 응답을 받을 것으로 예상되는 수신자 행위자에게 메시지를 보낼 필요가 있지만, 실제로 응답은 응답을 수신하고 처리하도록 구성된 세 번째 행위자 구성 요소(예: 옵저버 패턴을 구현하는 다른 행위자)에 의해 처리될 수 있다. 원래의 행위자는 보내고 싶은 메시지와 함께 응답을 처리할 세 번째 행위자의 주소를 포함하는 통신을 보냄으로써 이를 수행할 수 있다. 응답을 처리할 이 세 번째 행위자를 '재개'(때로는 연속체 또는 스택 프레임이라고도 함)라고 한다. 수신 행위자가 응답을 보낼 준비가 되면 원래 통신에 포함된 '재개' 행위자 주소로 응답 메시지를 보낸다.
따라서 행위자가 통신을 교환할 수 있는 새로운 행위자를 생성하는 능력과 메시지에 다른 행위자의 주소를 포함하는 능력은 행위자에게 서로 임의로 가변적인 토폴로지 관계를 생성하고 참여할 수 있는 능력을 제공한다. 이는 Simula 및 기타 객체 지향 프로그래밍 언어의 객체가 메시지를 교환하는 가변적인 토폴로지로 관계적으로 구성될 수 있는 방식과 매우 유사하다.
4. 1. 4. 본질적 병행성
액터 모델은 순차적 프로세스의 조합이 아닌, 본질적으로 병행성을 갖는 모델이다. 액터 모델에서 순차성은 액터 모델 이론에서 설명하는 것처럼 병렬 계산에서 파생된 특수한 경우이다.[8]액터 모델의 기본은 "모든 것은 액터이다"라는 철학이다. 이는 객체 지향 프로그래밍에서의 "모든 것은 객체이다"라는 생각과 비슷하지만, 객체 지향 소프트웨어는 기본적으로 순차적으로 실행하는 데 반해, 액터 모델은 본질적으로 병행성을 갖는다는 점이 다르다.
액터는 병행적으로 수신하는 메시지에 대응하는 다음과 같은 행동을 갖춘 계산 실체(Computational Entity)이다:
- (다른) 액터에게 유한 개의 메시지를 보낸다.
- 유한 개의 새로운 액터를 생성한다.
- 다음에 수신할 메시지에 대한 동작을 지정한다.
이러한 행동에는 순차성이 전제되지 않으며, 병렬적으로 이를 실행한다.
다른 액터와의 통신은 비동기적으로 발생한다(즉, 송신 측 액터는 메시지가 수신되기를 기다리지 않고 다음 계산으로 넘어간다).
메시지를 보내는 상대 액터는 주소에 의해 지정된다(이를 액터의 "메일 주소"라고도 부른다). 결과적으로, 액터는 주소가 있는 액터와만 통신이 가능하며, 다른 액터의 주소는 다음과 같은 방법으로 획득된다:
- 수신한 메시지 내에 주소가 적혀 있다.
- 해당 액터가 어떤 방법으로 이미 상대의 주소를 알고 있다.
- 해당 액터가 생성한 액터이다.
액터 모델은 액터 자체 및 액터 간의 계산의 본질적인 병행성을 특징으로 하며, 메시지 내에 액터의 주소를 포함하고, 상호 작용은 도착 순서가 보장되지 않는 직접적인 비동기 메시지 전달뿐이다.
4. 1. 5. 메시지 도착 순서
액터 모델에서는 메시지가 전송된 순서대로 도착해야 한다는 요구 사항은 없다. 휴이트는 출력 메시지 순서가 필요한 경우, 이 기능을 제공하는 큐 액터를 사용하면 된다고 주장했다. 큐 액터는 도착한 메시지를 FIFO 순서로 큐에 넣어, 메시지를 순서대로 검색할 수 있게 한다. 따라서 액터 `X`가 액터 `Y`에게 메시지 `M1`을 보내고, 이후 `X`가 `Y`에게 다른 메시지 `M2`를 보냈을 때, `M1`이 `M2`보다 먼저 `Y`에 도착한다는 보장은 없다.이러한 점은 액터 모델이 패킷 교환 시스템을 반영한다는 것을 보여준다. 패킷 교환 시스템에서는 전송된 순서대로 패킷을 수신한다는 보장이 없다. 이러한 전달 순서 보장이 없기 때문에 패킷 교환은 패킷 버퍼링, 여러 경로를 통한 패킷 전송, 손상된 패킷 재전송 등 다양한 최적화를 수행할 수 있다.
예를 들어, 액터는 메시지 처리를 파이프라인화할 수 있다. 즉, 액터가 메시지 `M1`을 처리하는 동안 다음 메시지를 처리하는 데 사용할 동작을 지정하고, 실제로 `M1` 처리를 완료하기 전에 다른 메시지 `M2` 처리를 시작할 수 있다. 그러나 액터가 메시지 처리를 파이프라인화할 수 있다고 해서 반드시 파이프라인화해야 하는 것은 아니다. 메시지 파이프라인화 여부는 엔지니어링적인 트레이드오프 문제이다. 외부 관찰자는 액터가 메시지 처리를 파이프라인화했는지 여부를 알 수 없으며, 파이프라인화 가능성으로 인해 액터 정의에 모호함이 생기지도 않는다. 물론, 일부 구현에서 파이프라인 최적화를 잘못 수행하면 예상치 못한 동작이 발생할 수 있다.
4. 1. 6. 국소성
액터는 자신이 알고 있는 주소로만 메시지를 보낼 수 있다. 이는 액터가 메시지를 보낼 수 있는 상대가 주소를 알고 있는 액터로 제한된다는 것을 의미한다.[8]또한, 여러 위치를 동시에 변경하는 일이 없다는 점도 국소성이라고 칭한다. 이 점은 다른 병행성 모델과는 다르다. 예를 들어, 페트리넷 모델에서는 토큰이 동시에 여러 위치에서 삭제되고, 다른 여러 위치에 배치된다.
4. 1. 7. 합성성
합성성이란 액터 시스템의 집합으로부터 더 큰 시스템을 구성할 수 있음을 의미한다. 이는 모듈성의 관점에서 중요하며, 굴 아가(Gul Agha)의 학위 논문[6] 및 굴 아가, 이안 메이슨(Ian Mason), 스콧 스미스(Scott Smith), 캐롤린 탤컷[9]에서 전개되었다.4. 1. 8. 행동
액터는 메시지를 받으면 동시에 다음과 같은 행동을 할 수 있는 계산 개체이다:- 다른 액터에게 유한한 수의 메시지를 보낸다.
- 유한한 수의 새로운 액터를 만든다.
- 다음에 받을 메시지를 처리할 행동을 지정한다.
이러한 행동은 순서가 정해져 있지 않으며, 병렬로 수행될 수 있다.
액터 간의 통신은 비동기 통신(즉, 메시지를 보낸 액터는 응답을 기다리지 않고 다음 행동을 한다) 방식으로 이루어진다. 메시지를 받는 액터는 "메일 주소"라고 불리는 주소로 식별된다. 액터는 다음과 같은 방법으로 다른 액터의 주소를 알 수 있다:
- 받은 메시지에 주소가 포함된 경우
- 이미 상대 액터의 주소를 알고 있는 경우
- 자신이 직접 생성한 액터인 경우
액터 모델은 액터와 액터 간 계산의 본질적인 병행성을 특징으로 한다. 또한, 메시지에 액터 주소를 포함할 수 있으며, 메시지 전달을 통한 상호작용은 도착 순서가 보장되지 않는다.
행동(behavior)의 도입으로 액터의 메시지 처리는 수학적 함수로 표현될 수 있으며, 이는 병행성 환경에서의 공유 문제를 수학적으로 모델링하는 메커니즘을 제공한다.
5. 응용 분야
액터 모델은 다양한 동시 시스템을 모델링하고 이해하며 추론하기 위한 프레임워크로 사용될 수 있다.[15] 예를 들면 다음과 같다.
- 이메일: 전자 메일(이메일)은 액터 시스템으로 모델링할 수 있다. 계정은 액터로, 이메일 주소는 액터 주소로 모델링된다.
- 웹 서비스: 웹 서비스는 액터로 모델링할 수 있으며, SOAP 엔드포인트는 액터 주소로 모델링할 수 있다.
- 락이 있는 객체: 자바 및 C#과 같이 락이 있는 객체는 메시지가 계속 도착할 수 있도록 구현된 경우(내부 큐에 저장되는 경우) ''serializer''로 모델링할 수 있다. 시리얼라이저는 새로운 메시지 도착에 지속적으로 사용할 수 있다는 속성을 가진 중요한 종류의 액터이다. 시리얼라이저로 전송된 모든 메시지는 도착이 보장된다.[16]
- TTCN: 테스트 및 테스트 제어 표기법(TTCN, TTCN-2와 TTCN-3)은 액터 모델을 매우 밀접하게 따른다. TTCN에서 액터는 테스트 구성 요소, 즉 병렬 테스트 구성 요소(PTC) 또는 주 테스트 구성 요소(MTC)이다. 테스트 구성 요소는 원격 파트너(피어 테스트 구성 요소 또는 테스트 시스템 인터페이스)와 메시지를 주고받을 수 있으며, 후자는 주소로 식별된다. 각 테스트 구성 요소에는 동작 트리가 바인딩되어 있다. 테스트 구성 요소는 병렬로 실행되며 상위 테스트 구성 요소에 의해 동적으로 생성될 수 있다. 내장된 언어 구문을 통해 내부 메시지 큐에서 예상 메시지를 수신할 때 다른 피어 엔티티로 메시지를 보내거나 새로운 테스트 구성 요소를 생성하는 등 취할 조치를 정의할 수 있다.
다른 동시성 시스템 (예: 프로세스 대수)은 2단계 커밋 프로토콜을 사용하여 액터 모델로 모델링할 수 있다.[22]
6. 다른 동시성 모델과의 비교
칼 휴잇에 따르면, 행위자 모델은 통신 순차 프로세스(CSP), π-계산법, 페트리 망 등 다른 동시성 모델과 비교하여 다음과 같은 특징을 갖는다.
- 비동기 메시지 전달: 액터 모델은 보낸 사람을 전송된 통신에서 분리하여 비동기 통신과 메시지 전달 패턴으로서의 제어 구조를 가능하게 했다.[8] 이는 토니 호어가 발표한 최초의 CSP 모델이 프로세스 이름을 기반으로 동기 메시지 전달을 사용한 것과 대조된다.[24]
- 무제한 비결정성: 액터 모델은 메시지 도착 순서에 대한 제한이 없는 직접적인 비동기 메시지 전달을 통해 상호 작용한다. 현대의 이론적 CSP는 명시적으로 무제한 비결정성을 제공하지만, 페트리 망과 그 확장은 기본적인 처리 단계(전이)와 메시지 저장소(장소)의 고정된 토폴로지를 정의한다는 점에서 초기 CSP와 유사하다.
- 가변 토폴로지: 액터 모델은 액터의 동적 생성과 메시지에 액터 주소 포함을 통해 액터 간의 연결 구조(토폴로지)가 동적으로 변할 수 있다. 이는 로빈 밀너의 초기 병렬 처리 연구나 초기 CSP 모델이 고정된 토폴로지의 고정된 수의 프로세스를 기반으로 한 것과 차이가 있다.[23][24]
7. 프로그래밍 언어 및 프레임워크
행위자 모델은 다양한 프로그래밍 언어와 프레임워크에서 지원되거나 구현되어 사용되고 있다.
액터 모델을 직접 지원하는 프로그래밍 언어는 다음과 같다:
- ABCL
- 앰비언트토크[34]
- 액섬[35]
- CAL 액터 언어
- D
- 다트
- E
- 엘릭서
- 얼랭
- 판톰
- 휴머스[36]
- Io
- LFE
- 앙코르[37]
- 포니[38][39]
- 프톨레마이오스 프로젝트
- P[40]
- P#[41]
- 레베카 모델링 언어
- 레이아
- 루비[42]
- 살사[43]
- 스칼라[44][45]
- 스위프트[46]
- TNSDL
또한, 액터 스타일 프로그래밍을 지원하지 않는 언어를 위한 액터 라이브러리 및 프레임워크도 다수 존재한다.
7. 1. 액터 프로그래밍 언어
다음은 액터 모델 또는 그 변형을 사용하는 프로그래밍 언어들이다.7. 2. 액터 라이브러리 및 프레임워크
액터 모델 프로그래밍을 지원하기 위해 만들어진 라이브러리 및 프레임워크는 다음과 같다.이름 | 상태 | 최신 릴리스 | 라이선스 | 언어 |
---|---|---|---|---|
Otavia | 2024-01-02 | Apache 2.0 | 스칼라 | |
Abstractor | 2024-03-04 | Apache 2.0 | 자바 | |
Xcraft Goblins | 2022-08-30 | MIT | 자바스크립트 | |
ReActed | 2022-11-30 | Apache 2.0 | 자바 | |
Acteur | 2020-04-16[47] | Apache-2.0 / MIT | 러스트 | |
Bastion | 2020-08-12[48] | Apache-2.0 / MIT | 러스트 | |
Actix | 2020-09-11[49] | MIT | 러스트 | |
Aojet | 2016-10-17 | MIT | 스위프트 | |
Actor | 2017-03-09 | MIT | 자바 | |
Actor4j | 2020-01-31 | Apache 2.0 | 자바 | |
Actr | 2019-04-09[50] | Apache 2.0 | 자바 | |
Vert.x | 2018-02-13 | Apache 2.0 | 자바, Groovy, 자바스크립트, 루비, 스칼라, Kotlin, Ceylon | |
ActorFx | 2013-11-13 | Apache 2.0 | .NET | |
Akka (toolkit) | 2022-09-06[51] | Commercial[52] (from 2.7.0, Apache 2.0 up to 2.6.20) | 자바, 스칼라 | |
Akka.NET | 2020-08-20[53] | Apache 2.0 | .NET | |
Apache Pekko | 2023-07-26[54] | Apache 2.0 | 자바, 스칼라 | |
Dapr | 2019-10-16 | Apache 2.0 | 자바, .NET Core, Go, 자바스크립트, Python, 러스트, C++ | |
DOTNETACTORS | 2021-06-14 | MIT | .NET, C#, Azure Service Bus | |
Remact.Net | 2016-06-26 | MIT | .NET, 자바스크립트 | |
Ateji PX | ? | ? | 자바 | |
czmq | 2016-11-10 | MPL-2 | C | |
F# MailboxProcessor | F#과 동일 (내장 코어 라이브러리) | Apache License | F# | |
Korus | 2010-02-04 | GPL 3 | 자바 | |
Kilim[55] | 2018-11-09[56] | MIT | 자바 | |
ActorFoundry (Kilim 기반) | 2008-12-28 | ? | 자바 | |
ActorKit | 2011-09-13[57] | BSD | Objective-C | |
Cloud Haskell | 2024-04-30[58] | BSD | Haskell | |
CloudI | 2023-10-27[59] | MIT | ATS, C/C++, 엘릭서/얼랭/LFE, Go, Haskell, 자바, 자바스크립트, OCaml, Perl, PHP, Python, 루비, 러스트 | |
Clutter | 2017-05-12[60] | LGPL 2.1 | C, C++ (cluttermm), Python (pyclutter), Perl (perl-Clutter) | |
NAct | 2012-02-28 | LGPL 3.0 | .NET | |
Nact | 2018-06-06[61] | Apache 2.0 | 자바스크립트/ReasonML | |
Retlang | 2011-05-18[62] | New BSD | .NET | |
JActor | 2013-01-22 | LGPL | 자바 | |
Jetlang | 2013-05-30[63] | New BSD | 자바 | |
Haskell-Actor | 2008 | New BSD | Haskell | |
GPars | 2014-05-09[64] | Apache 2.0 | Groovy | |
OOSMOS | 2019-05-09[65] | GPL 2.0 및 상업적 (이중 라이선스) | C, C++ 친화적 | |
Panini | 2014-05-22 | MPL 1.1 | 자체 프로그래밍 언어 | |
PARLEY | 2007-22-07 | GPL 2.1 | Python | |
Peernetic | 2007-06-29 | LGPL 3.0 | 자바 | |
Picos | 2020-02-04 | MIT | KRL | |
PostSharp | 2014-09-24 | 상업용 / Freemium | .NET | |
Pulsar | 2016-07-09[66] | New BSD | Python | |
Pulsar | 2016-02-18[67] | LGPL/Eclipse | Clojure | |
Pykka | 2019-05-07[68] | Apache 2.0 | Python | |
Termite Scheme | 2009-05-21 | LGPL | Scheme (Gambit 구현) | |
Theron | 2014-01-18[70] | MIT[71] | C++ | |
Thespian | 2020-03-10 | MIT | Python | |
Quasar | 2018-11-02[72] | LGPL/Eclipse | 자바 | |
Libactor | 2009 | GPL 2.0 | C | |
Actor-CPP | 2012-03-10[73] | GPL 2.0 | C++ | |
S4 | 2012-07-31[74] | Apache 2.0 | 자바 | |
C++ Actor Framework (CAF) | 2020-02-08[75] | Boost Software License 1.0, BSD 3-Clause | C++11 | |
Celluloid | 2018-12-20[76] | MIT | 루비 | |
LabVIEW Actor Framework | 2012-03-01[77] | [http://www.ni.com/legal/license/ National Instruments SLA] | LabVIEW | |
LabVIEW Messenger Library | 2021-05-24 | BSD | LabVIEW | |
Orbit | 2019-05-28[78] | New BSD | 자바 | |
QP 프레임워크(QP frameworks) 실시간 임베디드 시스템용 | 2019-05-25[79] | GPL 2.0 및 상업용 (이중 라이선스) | C, C++ | |
libprocess | 2013-06-19 | Apache 2.0 | C++ | |
SObjectizer | 2024-11-02[80] | New BSD | C++17 | |
rotor | 2022-04-23[81] | MIT License | C++17 | |
Orleans | 2023-07-11[82] | MIT License | C#/.NET | |
Skynet | 2020-12-10 | MIT License | C/Lua | |
Reactors.IO | 2016-06-14 | BSD License | 자바/스칼라 | |
libagents | 2020-03-08 | Free software license | C++11 | |
Proto.Actor | 2021-01-05 | Free software license | Go, C#, Python, 자바스크립트, Kotlin | |
FunctionalJava | 2018-08-18[83] | BSD 3-Clause | 자바 | |
Riker | 2019-01-04 | MIT License | 러스트 | |
Comedy | 2019-03-09 | EPL 1.0 | 자바스크립트 | |
VLINGO XOOM Actors | 2023-02-15 | Mozilla Public License 2.0 | 자바, Kotlin, JVM languages, C# .NET | |
wasmCloud | 2021-03-23 | Apache 2.0 | WebAssembly (러스트, TinyGo, Zig, AssemblyScript) | |
ray | 2020-08-27 | Apache 2.0 | Python | |
cell | 2012-08-02 | New BSD License | Python | |
go-actor | 2022-08-16 | MIT License | Go | |
Sento | 2022-11-21 | Apache 2.0 | Common Lisp | |
Tarant | 2023-04-17 | MIT | Typescript, 자바스크립트 |
8. 액터 모델의 중요성 및 과제
액터 모델은 확장성, 위치 투명성, 비일관성 등 현대 컴퓨팅 환경의 주요 과제를 해결하는 데 기여할 수 있다.
칼 휴잇에 따르면, 액터 모델은 컴퓨터 및 통신 아키텍처, 병행 프로그래밍 언어, 웹 서비스와 관련된 다음과 같은 문제들을 해결한다.[2]
- 확장성: 로컬 및 비로컬 병행성을 모두 확장하는 과제.
- 위치 투명성: 로컬 및 비로컬 병행성 사이의 격차를 해소하는 것. 투명성은 현재 논란이 되고 있는 문제이다. 일부 연구자들은 자바 및 C 샤프와 같은 병행 프로그래밍 언어를 사용한 로컬 병행성과 웹 서비스에 SOAP를 사용한 비로컬 병행성 간의 엄격한 분리를 옹호한다. 엄격한 분리는 웹 서비스에 대한 로컬 및 비로컬 접근 간의 변경이 필요할 경우 문제를 일으키는 투명성 부족을 초래한다(분산 컴퓨팅 참조).
- 비일관성: 비일관성은 인간 정보 시스템 상호 작용에 대한 모든 매우 큰 지식 시스템이 비일관적이기 때문에 일반적이다. 이 비일관성은 내부적으로 일관성이 없는 매우 큰 시스템(예: Microsoft Windows 소프트웨어 등)의 문서 및 사양으로 확장된다.
액터 모델의 아이디어는 멀티 에이전트 시스템에도 적용되고 있다.[2] 에이전트 시스템은 (대부분의 정의에서) 액터에 추가적인 제약을 가하며, 일반적으로 약속과 목표를 사용하도록 요구한다는 점이 주요 차이점이다.
8. 1. 한국의 관점
이전 답변에서 언급했듯이, 주어진 원본 소스에는 '한국의 관점'에 대한 내용이 포함되어 있지 않습니다. 따라서 해당 섹션을 작성하는 것은 불가능합니다. 원본 소스에 한국 관련 내용이 있어야만 지시에 따라 해당 내용을 바탕으로 섹션을 구성하고 위키텍스트 형식으로 출력할 수 있습니다. 현재로서는 원본 소스에 없는 내용을 추가할 수 없습니다.참조
[1]
논문
A Universal Modular Actor Formalism for Artificial Intelligence
IJCAI
[2]
논문
Foundations of Actor Semantics
MIT
1981-06
[3]
논문
Semantics of Communicating Parallel Processes
MIT
1975-08
[4]
논문
Laws for Communicating Parallel Processes
IFIP
1977-08
[5]
웹사이트
Laws for Communicating Parallel Processes
http://dspace.mit.ed[...]
1977-05-10
[6]
논문
Actors: A Model of Concurrent Computation in Distributed Systems
MIT Press
[7]
웹사이트
Home
http://osl.cs.uiuc.e[...]
Osl.cs.uiuc.edu
[8]
간행물
Viewing Control Structures as Patterns of Passing Messages
https://web.archive.[...]
1977-06
[9]
논문
A Foundation for Actor Computation
1993-01
[10]
논문
What is Commitment? Physical, Organizational, and Social
http://www.pcs.usp.b[...]
2006-04-27
[11]
서적
Formal Methods for Open Object-Based Distributed Systems
University of Bologna
1997-05
[12]
논문
An Algebra of Actors
Formal Methods for Open Object Based Systems
[13]
논문
An Algebraic Theory of Actors and Its Application to a Simple Object-Based Language
http://formal.cs.uiu[...]
From OO to FM (Dahl Festschrift) LNCS 2635
[14]
논문
Formalizing Actors in Linear Logic
International Conference on Object-Oriented Information Systems
[15]
웹사이트
What is the Actor Model & When Should You Use it?
https://mattferderer[...]
2021-08-25
[16]
웹사이트
Why Akka and the actor model shine for IoT applications
https://www.infoworl[...]
2017-07-25
[17]
서적
The Origins of Concurrent Programming: From Semaphores to Remote Procedure Calls
Springer
[18]
논문
Monitors and Concurrent Pascal: A Personal History
1996
[19]
논문
Monitors: An Operating System Structuring Concept
1974-10
[20]
서적
Operating System Principles
Prentice-Hall
1973-07
[21]
서적
A Computable Universe: Understanding Computation & Exploring Nature as Computation. Dedicated to the memory of Alan M. Turing on the 100th anniversary of his birth.
World Scientific Publishing Company
2012
[22]
간행물
A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992
https://www.research[...]
[23]
문서
Processes: A Mathematical Model of Computing Agents in Logic Colloquium 1973
[24]
간행물
Communicating sequential processes
http://portal.acm.or[...]
1978-08
[25]
논문
Elements of interaction
[26]
웹사이트
How Twitter Is Scaling « Waiming Mok's Blog
https://waimingmok.w[...]
Waimingmok.wordpress.com
2009-06-27
[27]
간행물
Actor-Based Programming with the Asynchronous Agents Library
https://msdn.microso[...]
MSDN
2010-09
[28]
논문
A Preview of Act 1
MIT AI memo 625
1981-06
[29]
논문
Thinking About Lots of Things at Once without Getting Confused: Parallelism in Act 1
MIT AI memo 626
1981-06
[30]
간행물
Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999.
http://citeseerx.ist[...]
[31]
간행물
A Computational Theory of Animation
https://dspace.mit.e[...]
MIT EECS Doctoral Dissertation
1979-08
[32]
간행물
Cantor: An Actor Programming System for Scientific Computing
http://resolver.calt[...]
Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
[33]
간행물
Developing InfoSleuth Agents Using Rosette: An Actor Based Language
https://pdfs.semanti[...]
Proceedings of the CIKM '95 Workshop on Intelligent Information Agents
1995
[34]
문서
Ambient-oriented Programming in AmbientTalk
In "Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP), Dave Thomas (Ed.), Lecture Notes in Computer Science Vol. 4067, pp. 230-254, Springer-Verlag.", 2006
[35]
웹사이트
Microsoft Cooking Up New Parallel Programming Language
http://www.eweek.com[...]
Eweek.com
2009-04-17
[36]
웹사이트
Humus
http://www.dalnefre.[...]
Dalnefre.com
2012-12-02
[37]
논문
Parallel objects for multicores: A glimpse at the parallel language encore.
Springer International Publishing
2015
[38]
웹사이트
The Pony Language
http://www.ponylang.[...]
2016-03-21
[39]
서적
Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control - AGERE! 2015
[40]
웹사이트
The P Language
https://github.com/p[...]
2019-03-08
[41]
웹사이트
The P# Language
https://github.com/p[...]
2019-03-12
[42]
웹사이트
class Ractor
https://docs.ruby-la[...]
Ruby-lang.org
2022-03-02
[43]
논문
Programming Dynamically Reconfigurable Open Systems with SALSA
[44]
논문
Event-Based Programming without Inversion of Control
http://lampwww.epfl.[...]
Proc. JMLC 2006
2006-09
[45]
논문
Actors that Unify Threads and Events
https://web.archive.[...]
Technical report LAMP 2007
2007-01
[46]
웹사이트
Swift Language Guide - Concurrency
https://docs.swift.o[...]
2022-03-11
[47]
웹사이트
acteur - 0.9.1· David Bonet · Crates.io
https://crates.io/cr[...]
crates.io
2020-04-16
[48]
웹사이트
Bastion on Crates.io
https://crates.io/cr[...]
2019-12-15
[49]
웹사이트
actix - 0.10.0· Rob Ede · Crates.io
https://crates.io/cr[...]
crates.io
2021-02-28
[50]
웹사이트
Releases · zakgof/actr · GitHub
https://github.com/z[...]
Github.com
2019-04-16
[51]
웹사이트
Akka 2.6.20 Released · Akka
https://akka.io/blog[...]
Akka
2022-09-06
[52]
웹사이트
Akka License FAQ · @lightbend
https://www.lightben[...]
2022-09-24
[53]
간행물
GitHub - akkadotnet/akka.net: Port of Akka actors for .NET.
https://github.com/a[...]
Akka.NET
2020-10-01
[54]
간행물
Apache Pekko (Graduated)
https://incubator.ap[...]
Apache Software Foundation
[55]
학회자료
Kilim: Isolation-Typed Actors for Java
http://www.malhar.ne[...]
2016-02-25
[56]
웹사이트
Releases · kilim/kilim · GitHub
https://github.com/k[...]
Github.com
2019-06-03
[57]
웹사이트
Commit History · stevedekorte/ActorKit · GitHub
https://github.com/s[...]
Github.com
2016-02-25
[58]
웹사이트
Hackage: The Haskell Package Repository
https://hackage.hask[...]
2024-05-01
[59]
웹사이트
CloudI: A Cloud at the lowest level · Activity
https://sourceforge.[...]
sourceforge.net
2024-01-03
[60]
웹사이트
Tags · GNOME/clutter · GitLab
https://gitlab.gnome[...]
gitlab.gnome.org
2019-06-03
[61]
웹사이트
Releases · ncthbrt/nact · GitHub
https://github.com/n[...]
2019-06-03
[62]
웹사이트
Changes - retlang - Message based concurrency in .NET - Google Project Hosting
https://code.google.[...]
2016-02-25
[63]
웹사이트
jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - Message based concurrency for Java - Google Project Hosting
https://code.google.[...]
2012-02-14
[64]
웹사이트
GPars Releases
https://github.com/G[...]
GitHub
2016-02-25
[65]
웹사이트
Releases · oosmos/oosmos · GitHub
https://github.com/o[...]
GitHub
2019-06-03
[66]
웹사이트
Pulsar Design and Actors
https://web.archive.[...]
[67]
웹사이트
Pulsar documentation
https://web.archive.[...]
[68]
웹사이트
Changes – Pykka 2.0.0 documentation
https://www.pykka.or[...]
pykka.org
2019-06-03
[69]
웹사이트
Theron – Ashton Mason
http://www.ashtonmas[...]
2018-08-29
[70]
웹사이트
Theron - Version 6.00.02 released
https://web.archive.[...]
Theron-library.com
2016-02-25
[71]
웹사이트
Theron
https://web.archive.[...]
Theron-library.com
2016-02-25
[72]
웹사이트
Releases · puniverse/quasar · GitHub
https://github.com/p[...]
2019-06-03
[73]
웹사이트
Changes - actor-cpp - An implementation of the actor model for C++ - Google Project Hosting
https://code.google.[...]
2012-12-02
[74]
웹사이트
Commit History · s4/s4 · Apache
https://web.archive.[...]
apache.org
2016-01-16
[75]
웹사이트
Releases · actor-framework/actor-framework · GitHub
https://github.com/a[...]
Github.com
2020-03-07
[76]
웹사이트
celluloid | RubyGems.org | your community gem host
http://rubygems.org/[...]
RubyGems.org
2019-06-03
[77]
웹사이트
Community: Actor Framework, LV 2011 revision (version 3.0.7)
https://decibel.ni.c[...]
Decibel.ni.com
2011-09-23
[78]
웹사이트
Releases · orbit/orbit · GitHub
https://github.com/o[...]
GitHub
2019-06-03
[79]
웹사이트
QP Real-Time Embedded Frameworks & Tools - Browse Files at
https://sourceforge.[...]
Sourceforge.net
2019-06-03
[80]
웹사이트
Releases · Stiffstream/sobjectizer · GitHub
https://github.com/S[...]
GitHub
2022-05-11
[81]
웹사이트
Releases · basiliscos/cpp-rotor· GitHub
https://github.com/b[...]
GitHub
2022-05-17
[82]
웹사이트
Releases · dotnet/orleans · GitHub
https://github.com/d[...]
GitHub
2022-09-21
[83]
웹사이트
FunctionalJava releases
https://github.com/f[...]
GitHub
2018-08-23
[84]
논문
A Universal Modular Actor Formalism for Artificial Intelligence
1973
[85]
논문
Foundations of Actor Semantics
https://dspace.mit.e[...]
1981-06
[86]
논문
Semantics of Communicating Parallel Processes
1975-08
[87]
논문
Laws for Communicating Parallel Processes
1977-08
[88]
논문
Actors: A Model of Concurrent Computation in Distributed Systems
https://dspace.mit.e[...]
MIT Press
1986
[89]
논문
An Algebra of Actors
University of Bologna
1997-05
[90]
논문
An Algebra of Actors
Formal Methods for Open Object Based Systems
1999
[91]
논문
An Algebraic Theory of Actors and Its Application to a Simple Object-Based Language
http://formal.cs.uiu[...]
From OO to FM (Dahl Festschrift) LNCS 2635
2004
[92]
문서
[93]
논문
A Foundation for Actor Computation
1993-01
[94]
저널
A Universal Modular Actor Formalism for Artificial Intelligence
IJCAI
[95]
저널
Semantics of Communicating Parallel Processes
MIT
1975-08
[96]
저널
A Foundation for Actor Computation
1993-01
[97]
저널
Laws for Communicating Parallel Processes
IFIP
1977-08
[98]
저널
Foundations of Actor Semantics
https://dspace.mit.e[...]
MIT
1981-06
[99]
저널
What is Commitment? Physical, Organizational, and Social
https://web.archive.[...]
COIN@AAMAS
2006-04-27
[100]
저널
Actors: A Model of Concurrent Computation in Distributed Systems
https://dspace.mit.e[...]
MIT Press
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com