Erlang

Tags:

Concurrency is easy

세간의 화제, Ericsson Computer Science Laboratory에서 만든 Erlang에 대한 글입니다. concurrency를 위한 multithreading이 그 자체의 본질적인 어려움에서 허덕이는 와중에, multicore cpu나 distributed computing이 점차 널리 퍼짐에 따라, multithreading이 지고 프로세스 기반의 프로그래밍 언어가 스포트라이트를 받고 있는 듯 합니다. – 아카데미에서 그렇다라거나 제가 생각하기에 그렇다는 말은 아닙니다.. 제가 하는 여기서의 multithreading에 대한 입지가 좁아진다는 말은, 그냥 세간의 화제가 그렇게 흐른다는 말일뿐.

Erlang의 주목을 받는 이유는, 아마도
1) 쉬운 프로세스 생성
2) 쉬운 메시지 전달
3) 자동적인 프로세스 정리
정도?

그리고 옵션으로,
4) functional programming
을 들 수 있습니다. 마치 LISP처럼 코딩할 수 있어요.. 그것도 괄호의 압박 없이!!!

1번은, 예를들어, 어떤 프로세스를 생성한다고 할 때 spawn(function_name) 이런식으로 하면 새로운 프로세서가 생겨나고 그 프로세서는 function_name으로 주어진 함수를 실행한다는 것이 쉬운 프로세스 생성이고, 2번의 메시지 전달이 쉬운거야 요즘 안그런 언어 없으니 대충 넘기고, 링크된 글에서는 3번을 설명하는데, 자동으로 잘못된 프로세스를 정리해준다는 것이 중요한 점인 듯 합니다.

그런데 이정도야 한 머신에서야 그렇지, 다수의 머신에서 서로간에 누가 살았나 죽었나를 어떻게 coordination 하는지까지 설명하는 글은 아직 보지 못했습니다. 제대로 된 다른 언어와의 비교도 보지 못했습니다.

만약 이것을 Ruby에서 복제한다고 할 때, 1번의 특징을 별도의 컨테이너 없이 구현하기란 힘들지 않을까 예상되는군요. 만약 별도의 프로세서 없이 잘 해낸다면, 혹은 그 컨테이너가 쓸만하다면 당장 digg나 reddit 첫페이지는 따놓은 당상인데… 사는게 바쁘군요;;;