미래 투자 : Erlang 대 Scala
동시 프로그래밍이 점점 더 중요해지기 때문에 그 점에서 Erlang과 Scala에 대해 어떻게 생각하는지 궁금합니다. Scala는 Erlang보다 더 큰 사용자 기반과 잠재적으로 더 밝은 미래를 가지고있는 것 같습니다. 또한 Scala는 일종의 자바입니다.
나는 이러한 질문이 항상 약간 주관적이라는 것을 알고 있지만 더 나은 미래 투자는 무엇일까요 : Erlang 또는 Scala. 아니면 다른 언어?
Erlang은 동시 내결함성 통신 시스템을 위해 설계되었습니다. 많은 수의 네트워크 연결을 처리하는 서버를 쉽게 작성할 수 있으며 (Erlang 프로세스 당 하나의 가비지 수집기 덕분에) 서버는 소프트 실시간 특성을 유지할 수 있습니다 (즉, GC가 완료 될 때까지 전체 서버가 일시 중지되지 않음). 또한 Erlang 코드를 핫스왑하거나 여러 노드에 배포하는 등의 작업을 수행 할 수 있습니다. 이것이 가장 확장 성이 뛰어난 XMPP 서버 (ejabberd)가 Erlang으로 작성된 이유입니다. Yaws (웹 서버)는 Erlang이 뛰어난 또 다른 예입니다. http://www.sics.se/~joe/apachevsyaws.html을 참조 하십시오 . Riak / Couch는 Erlang을 사용한 NoSQL DB 빌드의 예입니다. 이것은 Erlang이 훌륭한 선택이되는 문제입니다.
그러나 Erlang VM은 원시 계산 측면에서 JVM만큼 빠르지 않으므로 계산 집약적 인 (예 : 재무 모델링) 작업을 수행해야하는 즉시 JVM이 선호되는 플랫폼이 될 것입니다. 또한 Erlang의 동시성 모델 (액터)은 언어로 구워집니다. 이것이 해결하려는 문제에 맞지 않으면 Erlang에 만족하지 않을 것입니다.
Scala는 동시성, 수평 확장 성 또는 내결함성이 언어의 일부가 아니라는 점에서보다 '일반적인'언어입니다. 라이브러리 수준에서 해결됩니다 (이것이 Scala에 최소 3 개의 액터 구현이있는 이유입니다). 좋은 점은 도메인에 맞는 동시성 모델을 선택할 수 있다는 것입니다. 예를 들어 소프트웨어 트랜잭션 메모리 (STM)가 필요한 경우 Akka를 선택하기 만하면됩니다 ( http://akka.io/ ).
또한 Scala를 사용하면 "JVM 투자"와 다양한 JVM 라이브러리를 활용할 수 있다는 전체적인 주장이 있습니다.
두 언어로 작성하려는 소프트웨어의 종류에 대한 정보를 제공하지 않았기 때문에 확실한 답을 제공하기가 어렵습니다. 위의 모든 것을 감안할 때 Scala는 Erlang보다 "안전한"투자 일 수 있습니다 (Erlang / OTP를 전혀 강타하지 않고 훌륭한 언어 / 플랫폼입니다).
BTW. 단일 머신 동시성이 중요하다면 Clojure ( http://clojure.org/ )를 간과해서는 안됩니다 (JVM 언어도 포함).
UPDATE1 : Erlang이 제공하는 것이 마음에 들지만 구문이 아니라면 elixir-lang.org를 살펴보십시오.
UPDATE2 : STM이 Akka에서 제거되었습니다. 이제 배우 (타이핑되지 않거나 입력 된)와 스트림 사이에서 선택 (믹스 / 매치) 할 수 있습니다.
상관 없어 그냥 하나만 골라 잠시만 놔둬 몇 가지를 배우고 멋진 것을 만들고 그 언어로 계속 진행하거나 다른 언어로 이동하십시오.
동시 프로그래밍 학습과 관련하여 어느 쪽이든 괜찮습니다. 여기서 핵심은 당신이 새로운 것을 배우게 될 것이고, 특히 Erlang을 사용하는 채용을 위해 채용하려는 구인이 없다면, 그것은 정말로 중요하지 않습니다. 게다가 그 오프닝에 Erlang이 필요하더라도 Scala를 정말 잘 알고 있다면 여전히 좋은 기회가있을 것입니다.
새로운 언어를 선택하려고했던 모든 시간을 방금 선택하고 이미 지금까지 배우기 시작했다면 더 나은 시간을 보냈을 것입니다.
핵심적으로 두 언어는 배우기가 어렵지 않으며 제공하는 동시성 기능도 배우기 어렵지 않습니다. 사실, Scala 액터는 Erlang 액터의 영향을받습니다. 나는 그들 모두에게 가서 그들의 구조를 살펴보고 동시성 문제에 대한 몇 가지 테스트를 수행하는 등 시간을 할애 할 것입니다.
Java를 알고 있다면 Erlang이 프롤로그와 비슷하기 때문에 Scala가 더 자연 스러울 것입니다. 반대로, 수학적 또는 논리적 언어 유형에 더 집중되어 있다면 Erlang으로 시작하십시오.
참고 URL : https://stackoverflow.com/questions/6820195/future-investment-erlang-vs-scala
'Nice programing' 카테고리의 다른 글
Java에서 contains ()에 대한 가장 빠른 데이터 구조? (0) | 2020.11.20 |
---|---|
용어 설명 : 엔티티 "수화": DB에서 속성 가져 오기 (0) | 2020.11.20 |
마이크로 데이터 대 RDFa (0) | 2020.11.20 |
RuntimeWarning : 나누기에서 잘못된 값이 발견되었습니다. (0) | 2020.11.20 |
문자열에 배열의 값이 포함되어 있는지 확인 (0) | 2020.11.20 |