2011-08-09 3 views
7

지난 몇 주 동안 나는 Clojure와 Erlang을 배우고 실험 해왔다. 내가 아는 바로는 두 가지 모두 동일한 유형의 문제를 해결하지만 다른 접근 방식을 사용합니다. 이것이 맞다면 Clojure는 Erlang과 같이 채팅 애플리케이션이나 티커 플랜트와 같은 실시간 시스템을위한 옵션이 될 수 있습니까? 서로 다른 환경에서 비록실시간 기능?

+3

채팅 앱 및 티커 플랜트는 소프트 실시간으로 모든 언어가 의미합니다. –

답변

6

모두 주소를 병행 프로그래밍 :

  • Clojure의는 공유 메모리 동시 프로그래밍 정말 좋다. 하나의 큰 메모리 덩어리 (힙)에서 작동하는 많은 스레드가 있고 그 메모리 내의 공유 객체에 대한 액세스를 조정해야하는 곳.
  • 얼랭 (Erlang)은 을 전혀 공유하지 않습니다. 분산 된 컴퓨팅은 프로세스가 많은 컴퓨터에서 실행되고 독립적 인 메모리 공간에서 작업 할 수 있어야합니다. 그들은 객체에 대한 공유 액세스를 조정하지 않습니다.

이들 시스템은 모두 "실시간 실시간"이며 채팅 및 제어 시스템과 같은 시스템에는 적합하지 않지만 하드 실시간 요구 사항이있는 시스템에는 적합하지 않습니다.

+0

설명해 주셔서 감사합니다. 후속 조치로서, 지금까지 읽은 것부터 Erlang은 프로세스 (스레드) 관리가 OS에 의존하지 않으므로 어떻게 든 더 효율적/효과적이게한다는 사실을 강조합니다. 이 경험이 있습니까? – kin1

+0

네트워크를 통해 직접 기능을 파이프 할 수 있기 때문에 erlang은 이기종 네트워크에서 실제로 효과적입니다. 메시지 전달만으로 작업을 수행 할 수 있다면 –

7

Clojure까지는 기본 Java VirtualMachine만큼 많은 실시간 기능을 제공 할 수 있습니다.

JVM을 사용하여 하드 실시간 시스템을 만들 수 있지만 Clojure가 제공하는 언어 구문을 뛰어 넘어야합니다. 당신이 조정할 필요가가는 것처럼

은 실시간 요구 사항에 따라, JVM이 (A는 이미 IBM Works article 또는 Fiji JVM

에 관한 ERLAND 같은 특정 JVM을 사용하는이 좋은 여기 보이는 관련 questions on SO

채팅 및 시세 식물 응용 프로그램은 두 언어로 달성 될 수 있지만, 개인적으로는 특히 클라우드 제공 (Heroku) 및 일반 호스팅 서비스를보고 Clojure를 함께 배포 할 쉬울 것 생각한다.

1

예, Clojure는 (소프트) 실시간 응용 프로그램을위한 매우 실용적인 옵션입니다.

기본적으로 JVM에서 다른 것과 동일한 실시간 성능을 얻을 수 있습니다. 사람들이 실시간 거래 플랫폼 (예 : These guys)에 JVM을 사용하고 있기 때문에 채팅이나 주식 시세 표시기로는 괜찮을 것이라고 확신합니다. 이 코어 스레드/많은 수의 많은 수에 특히 확장 아주 좋은 model of Software Transactional Memory이 있기 때문에

Clojure의이 상태 공유에 액세스 높은 동시 응용 프로그램에 특히 좋다. Rich Hickey 어딘가에 768 코어 Azul 시스템 박스에서 Clojure 어플리케이션을 동시에 시연하는 비디오가있다.

을 공유하지 않는 매우 분산 된 액자 에 대해 설계된 얼랑 (Erlang)과 대조 할 수 있습니다. 이것은 Erlang 어플리케이션에 기계 클러스터 전반에 걸친 엄청난 중복성과 확장 성을 제공하지만 각 프로세스는 자체 독립 상태를 관리하게됩니다.