otp - Erlang이 할 수있는 일은 Elixir가 할 수있는 일입니까, 또는 그 반대일까요?




(4)

TL, DR - Elixir로 시작

Erlang은 Elixir에 비해 가파른 학습 곡선을 가지고 있습니다. 일단 엘릭서 학습을 시작하면 얼랑 학습을 자동으로 시작하게됩니다. 그러므로, Elixir로 시작하십시오. Elixir는 Erlang과 Elixir로 작성되었습니다. Github의 배포판을보십시오 (Elixir는 매크로 프로그래밍으로 가득 찼기 때문에).

Erlang과 Erlang을 함께 사용할 수 있으므로 20 년 이상 된 Erlang 생태계 전체를 사용할 수 있습니다.

Erlang Solutions의 자세한 내용

Elixir의 생산성은 공구 조작과 데이터 조작 표현의 편리성에 중점을 둠으로써 이루어집니다. Elixir와 Erlang에서는 시스템 디자인이 동일하지만 Elixir는 많은 상용구 코드를 제거하고 확장하기 쉽습니다. 상용구를 제거하면 생산성이 향상되고 프로그래머는 제품을 최대한 빨리 시장에 내놓고 싶을 때 피드백을 신속하게 얻을 수 있습니다. 덜한 상투적 인 표현은 행복한 개발자에게도 도움이되며 행복한 개발자는 놀랍지 않게 생산적인 개발자입니다.

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

Elixir에 대해 배우기 위해 여기에서 시작하십시오 - 시작하기

일단 자신이 잘 진행되고 있다고 느끼면 운동다른 자원 에 대한 연습으로 나아가십시오 .

이 질문은 튜링 언어가 할 수있는 일반적인 문맥이 아니라 빔 VM과 그것이 제공하는 기능의 맥락에서 나온다. 순수 얼랑 (Erlang)이나 엘릭서 (Elixir) 중 하나를 배우기 위해 시간을 투자하고 싶습니다. 나는 두 가지 사이의 기본적인 차이점을 얻었고, 매크로, 더 나은 구문과 빠른 언어 개발로 인해 Elixir에 기대고있다.

내 질문은 : 내가 엘 릭셔를 선택하면 내가 할 수없는 일에 비틀 거릴 것이지만 얼랑에서 할 수 있겠는가? 내가 모든 OTP 물건, 모든 Erlang 도서관, 코드 재 장전 등을 Elixir와 함께 사용할 수 있습니까?

나는 둘 사이의 누군가의 선호를 요구하지 않는다. 언어의 가능성에 관한 사실들. 가급적 생산에서 둘 다 사용하는 사람으로부터.


Erlang에서 Elixir 코드를 자유롭게 호출 할 수 있고, 그 반대로도 호출 할 수 있기 때문에, 다른 코드에서 할 수없는 일은 할 수 없습니다. Erlang과 Elixir 파일을 하나의 프로젝트에서 쉽게 믹스 할 수 있습니다.

엘 릭셔 :

:erlang_module.erlang_function(args)

Erlang :

'Elixir.ElixirModule':elixir_function(args)

머리말을하기 위해서 - 나는 얼랭 (Erlang)이 아닌 프로덕션에서만 엘릭서 (Elixir)를 사용했습니다.

솔직히 엘릭서를 권하고 싶습니다. 이것은 제 의견이며, 반드시 당신에게 적합한 것은 아니지만, 아래에 왜 제가 그 이유를 열거 할 것입니까.

  1. 생산성 : 저는 Ruby / Rails 배경에서 왔습니다. 그래서 Elixir 문법과 스타일은 저에게 매우 친숙한 것입니다. 언어를 배우는지 여부를 결정하는 데 도움이되는 주요 요소 중 하나는 내가 루비를 선택한 이유입니다. 비약은 같습니다. 동시성과 패턴 매칭의 모든 부가적인 이점을 가진 루비만큼 빨리 작업 할 수 있습니다.
  2. Erlang : Elixir은 Erlang 위에 구축되어 erlang 및 beam vm으로 컴파일되므로 모든 erlang 모듈 및 패키지에 액세스 할 수 있습니다. 그래서 당신이 엘 릭서 사용에 대해 걱정하고 얼랑의 모든 기능을 놓치게된다면, 그렇게해서는 안됩니다. Elixir는 심지어 GenServer, GenEvent 등과 같은 더 큰 Erlang / OTP 기능을 자체적으로 구현했습니다.
  3. 커뮤니티 / 리소스 : Elixir 커뮤니티는 정말 훌륭한 커뮤니티입니다. 느슨한 채널은 초보자 용 질문에 대한 답변을 얻는 데 정말 인기가 있으며 좋은 방법입니다. Ruby Pickaxe의 저자 인 Dave Thomas (Programming Elixir 1.2)는 언어에 대한 글을 이미 정말 쉽게 읽을 수 있습니다.

정말로, 만약 당신이 둘을 가지고 혼란에 빠지면, Elixir가 Erlang + More의 모든 기능을 가진 훨씬 더 좋은 언어라는 동일한 결정을하게 될 것입니다. 증가하는 추세이지만 정확한 수치는 기억이 나질 않지만 패키지 다운로드의 상당한 증가에 대해 Hex 웹 사이트 (패키지 관리자)에서 읽은 것을 기억합니다.


Haskell을 사용하면 재귀에서 명시 적으로 생각할 필요가 없습니다.

factorCount number = foldr factorCount' 0 [1..isquare] -
                     (fromEnum $ square == fromIntegral isquare)
    where
      square = sqrt $ fromIntegral number
      isquare = floor square
      factorCount' candidate
        | number `rem` candidate == 0 = (2 +)
        | otherwise = id

triangles :: [Int]
triangles = scanl1 (+) [1,2..]

main = print . head $ dropWhile ((< 1001) . factorCount) triangles

위의 코드에서 @Thomas의 일반적인 목록 작업에 대한 응답에서 명시 적 재귀를 대체했습니다. 꼬리 재귀에 대해 걱정할 필요없이 코드는 여전히 똑같은 일을합니다. @Raedwulf 의 C 버전은 ~ 3.15s 까지 실행되는 반면, GHC 7.6.2를 사용하는 @Thomas의 응답 (~ 7.04s )의 버전보다 GHC 7.6.2의 버전보다 약 6 % 느립니다 (~ 7.49s ). GHC가 일 년 내내 개선 된 것 같습니다.

추신. 나는 그것이 오래된 질문이라는 것을 알고 있으며 나는 구글 검색 (나는 지금 무엇을 찾고 있는지 잊어 버렸다 ...)에서 우연히 발견한다. LCO에 관한 질문에 대해 논평하고 하스켈에 대한 내 감정을 전반적으로 표현하고 싶었습니다. 가장 좋은 답변에 대해 의견을 말하고 싶지만 주석은 코드 블록을 허용하지 않습니다.





erlang elixir otp