엘릭서가 할 수 있지만 얼랭이 할 수없는 일이 있나요?


102

이 질문은 튜링 완성 언어가 할 수있는 일에 대한 일반적인 컨텍스트가 아니라 Beam VM과 그것이 제공하는 기능의 컨텍스트에 있습니다. 순수한 Erlang이나 Elixir를 배우기 위해 시간을 투자하고 싶습니다. 나는 둘 사이의 기본적인 차이점을 알고 있으며 오늘날 매크로, 더 나은 구문 및 언어의 빠른 개발로 인해 Elixir에 기대고 있습니다.

내 질문은 : 내가 Elixir를 선택하면 내가 할 수없는 일을 우연히 발견하게 될까요? 모든 OTP 항목, 모든 Erlang 라이브러리, 코드 다시로드 등을 Elixir에서 사용할 수 있습니까?

나는 둘 중 누군가의 선호를 요구하는 것이 아닙니다. 언어의 가능성에 대한 사실입니다. 프로덕션에 둘 다 사용하는 사람이 바람직합니다.


19
@hedgehog는 의견이 아닙니다. 질문은 "제가 Elixir를 선택하면 할 수 없지만 Erlang에서 할 수있는 일을 우연히 발견하게 될까요? 모든 OTP 항목, 모든 Erlang 라이브러리, 코드 재로드 등을 Elixir에서 사용할 수 있습니까?"입니다. 대답은 의견이 아닌 사실에 근거합니다.
Saša Šijak

4
그 질문에 대한 답은 Erlang에서 할 수있는 모든 것이 Elixir에서도 가능하다는 것입니다. 그러나 제목은 당신이 무엇에 투자해야 하는가에 대한 질문이고 여기서 대답은 "상황에 따라 다르다"는 것을 암시합니다. 뭐하고 싶어? 웹 애플리케이션의 경우 Elixir는이 문제를 해결하기 위해 만들어 졌기 때문에 훨씬 더 좋습니다. 어떤 종류의 분산 시스템의 경우 Erlang의 단순성이 우수하다는 것을 알 수 있습니다. 기능 부족은 종종 좋은 일입니다. 얼랭 만 배우면 가장 중요한 부분 인 OTP에 집중할 수 있습니다.
tkowal 2016-06-22

2
@ SašaŠijak 나는 질문의 제목을 IMO에 더 잘 반영하도록 변경했습니다. 동의하지 않으면 되돌립니다.
Paweł Obrok

2
PawełObrok 큰 편집 @, 그것은 당연히 내가 알고 관심이 있었는지 요약
사샤 Šijak에게

3
매번 내가 -10 downvotes를 얻을 질문에 이런 종류의를 만들
arisalexis

답변:


37

서문으로-나는 Erlang이 아닌 Elixir를 프로덕션에 사용했습니다.

솔직히 Elixir를 추천합니다. 이것은 내 의견이며 반드시 귀하에게 맞는 것은 아니지만 아래에 그 이유를 나열하겠습니다.

  1. 생산성 : 저는 Ruby / Rails 배경에서 왔으므로 Elixir 구문과 스타일은 저에게 매우 익숙한 것입니다. 언어 학습 여부를 결정하는 데 도움이되는 주요 요인 중 하나는 언어를 얼마나 생산적으로 할 수 있는지입니다. 주로 Ruby를 선택한 이유입니다. 엘릭서는 동일합니다. 동시성 및 패턴 일치의 모든 추가 이점으로 Ruby에서 할 수있는 것처럼 빠르게 작업 할 수 있습니다.
  2. Erlang : Elixir는 Erlang 위에 빌드되고 erlang 및 beam vm으로 컴파일되므로 모든 erlang 모듈 및 패키지에 액세스 할 수 있습니다. 따라서 엘릭서 사용에 대해 걱정하고 Erlang의 모든 기능을 놓친다면 그렇게해서는 안됩니다. Elixir는 GenServer, GenEvent 등과 같은 더 큰 Erlang / OTP 기능의 대부분을 자체적으로 구현했습니다.
  3. 커뮤니티 / 리소스 : Elixir 커뮤니티는 정말 훌륭한 커뮤니티입니다. Slack 채널은 초급 질문에 대한 답변을 얻을 수있는 매우 인기 있고 좋은 방법입니다. 이미 언어에 대해 쓰여진 정말 좋은 책들이 있습니다 (Programming Elixir 1.2-Ruby Pickaxe의 저자 Dave Thomas).

실제로, 둘이 엉망이된다면 Elixir가 Erlang + More의 모든 기능을 갖춘 훨씬 더 좋은 언어라는 동일한 결정을 내리게 될 것입니다. 또한 증가하고 있습니다. 정확한 숫자는 기억할 수 없지만 Hex 웹 사이트 (패키지 관리자)에서 패키지 다운로드의 상당한 증가에 대해 읽은 것을 기억합니다.


14
Elixir는 Erlang으로 컴파일되지 않고 BEAM 코드로 컴파일됩니다. Elixir는 coffeescript와 비슷하지 않습니다. al. 그냥 JS를 작성합니다.
Peter R

64

Erlang에서 Elixir 코드를 자유롭게 호출 할 수 있고 그 반대의 경우도 가능하기 때문에 다른 하나에서는 할 수없는 일을 우연히 발견해서는 안됩니다. 하나의 프로젝트에서 Erlang 및 Elixir 파일을 쉽게 혼합 할 수도 있습니다.

Elixir에서 :

:erlang_module.erlang_function(args)

얼랭 :

'Elixir.ElixirModule':elixir_function(args)

2
중첩 된 종속성 또는 기타 매우 특정한 경우를 사용하여 릴리스를 빌드 할 때 때때로 약간 까다로울 수 있지만 이것이 확실히 정답이라고 생각합니다. 참고 : 리소스가 매우 제한된 컴퓨터에서 실행하는 경우 Elixir 및 Elixir 종속성을 릴리스에 추가하면 메모리 측면에서 더 무거울 수 있습니다. 따라서 내가 착각하지 않았다면 순수한 Erlang을 고수하면 몇 메가 바이트의 메모리를 절약하는 이점이있을 수 있으므로 VM을 확장 할 공간이 남아 있지 않을 때 충돌을 더 쉽게 피할 수 있습니다.
Laymer

37

TL; DR- Elixir로 시작

Erlang은 Elixir에 비해 학습 곡선이 더 가파 릅니다. Elixir 학습을 시작하면 자동으로 Erlang 학습이 시작됩니다. 따라서 Elixir부터 시작하십시오. Elixir는 Erlang과 Elixir로 작성되었습니다. Github의 배포판을 참조하십시오 (Elixir는 매크로라고도 알려진 메타 프로그래밍으로 가득 차 있기 때문에). Elixir 프로젝트 코드 배포

Elixir를 Erlang과 함께 사용하거나 그 반대로 사용할 수 있으므로 20 년 이상의 라이브러리로 구성된 전체 Erlang 에코 시스템을 사용할 수 있습니다.

Erlang Solutions의 자세한 내용

Elixir의 '즉시 사용 가능한'생산성은 툴링과 데이터 조작 표현의 편리함에 중점을 두어 달성됩니다. 시스템 디자인은 Elixir와 Erlang에서 동일하지만 Elixir는 많은 상용구 코드를 제거하고 확장하기 쉽습니다. 상용구를 제거하면 생산성이 향상되고 프로그래머가 피드백을 더 빨리받을 수 있습니다. 제품을 최대한 빨리 출시하려는 경우 매우 중요합니다. 보일러 플레이트가 적 으면 행복한 개발자가되고 행복한 개발자는 놀라 울 정도로 생산적인 개발자입니다.

Elixir에 대한 Joe Armstrong 의 (Erlang 발명가) 블로그 게시물

Elixir에 대해 알아 보려면 여기에서 시작하세요- 시작하기

잘 진행되고 있다고 느끼면 Exercism기타 리소스 를 연습하기 위해 노력하십시오 .


3

몇 가지가 있습니다. Elixir에서는 재귀적인 anon 함수를 만들 수 없다고 생각합니다. 이제 공정하게 말하면, 이것은 Erlang의 8 년 이상 동안 내가 할 필요가 없다고 생각했던 것입니다. 그리고 만약 내가했다면 다른 방법으로 쉽게 할 수있었습니다. 솔직히 무시할 수있는 것과 같은 몇 가지 다른 것들이있을 것입니다.

일반적으로 대부분의 사람들이 Erlang에서 할 수있는 모든 것에 관심이있는 일에 대해 Elixir에서 할 수 있으며 그 반대의 경우도 마찬가지입니다. Elixir 쪽의 커뮤니티가 더 활동적인 것 같아서 거기서 시작하는 것이 좋습니다. 저는 최근에 Erlang에서 Elixir로 옮겼습니다. Proper의 몇 가지 멋진 기능을 제외하고는 꽤 쉬운 전환이라고 말할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.