웹 서비스를위한 Haskell vs Erlang


30

나는 기능적 언어를 사용하여 실험 프로젝트를 시작하고 Erlang과 Haskell 사이를 결정하려고 노력하고 있으며, 둘 다 내가 정말 좋아하는 점이 있습니다.

하스켈의 강력한 타입 시스템과 순도를 좋아합니다. 정말 안정적인 코드를 작성하는 것이 더 쉬워 질 것 같습니다. 그리고 Haskell의 힘이 내가하고 싶은 일을 훨씬 쉽게 해줄 것이라고 생각합니다.

마이너스 측면에서 나는 Yesod와 같은 Haskell에서 웹 작업을 수행하기위한 일부 프레임 워크가 Erlang 카운터 부분만큼 진보되지 않았다고 생각합니다.

오히려 스레드와 결함 허용에 대한 Erlang 접근 방식을 선호합니다. Erlang의 확장 성이 큰 장점이 될 수 있다고 생각합니다.

내 질문으로 이어지는 것은 Haskell과 Erlang에서 웹 애플리케이션 백엔드를 구현하는 데 사람들의 경험이었습니다. Haskell이 Erlang에있는 경량 스레드 및 액터를 제공하기위한 패키지가 있습니까?


4
요구 사항을 지정하지 않으면 말할 수 없습니다. 동전이나 그와 비슷한 것을 던지십시오.
Vitor Py

1
이 결론에 대한 증거는 없지만 Facebook의 Erlang 사용은 강력하고 신뢰할 수 있음을 나타냅니다.
Matthew 읽기

1
@Matthew : Facebook은 채팅 시스템에 Erlang을 사용합니다.
Robert Harvey

3
예, Lisssssssp를 사용 하십시오 .
Mark C

8
오래된 Commodore 64 잡지에는 가짜 언어에 관한 기사가있었습니다. 가장 좋은 것은 '리프 (Lithp)'인데 's'문자가 제외 된 것을 제외하고는 lisp와 똑같습니다. 이로 인해 모든 'lithp'개발자는 's'를 'th'로 대체해야했습니다. :)
Berin Loritsch

답변:


17

내가 가진 유일한 질문은 웹 서비스가 무엇을하고 있습니까? 웹 서비스가 실제로 기능적인 문제라면 Haskell이 더 적합 할 것입니다.

Erlang은 반드시 기능적인 언어는 아닙니다. 대규모 병렬 시스템에 대한 매우 강력한 실행 모델을 가진 절차 적 언어입니다. 통신 산업을 위해 설계되었으며 웹 서비스 요청에 응답하는 데 매우 적합합니다.

절차 적 프로그래밍과 기능적 프로그래밍의 차이점에 대한 개요는 이 페이지를 참조하십시오 . (청록색 페이지에 못생긴 검은 색에 대해 미리 사과드립니다).

웹 서비스가 상당한 양의 패턴 일치 및 규칙 적용을 수행하는 경우 Haskel이 선택됩니다. 이미 알고있는 언어와 크게 다르지 않은 확장 가능한 인프라를 원한다면 Erlang을 선택하십시오.

(* Wayback machine을 통한 링크. 원본 파일이 제거되었습니다)


그것은 소셜 네트워크처럼 보이는 것입니다. 이 시점에서 haskell에서 90 %의 확률로 완료 될 것입니다.
Zachary K

12
Erlang 은 절차 적 언어가 아닌 기능적 언어입니다. 패턴 매칭에 대한 뛰어난 지원과 비트 당 고유 한 패턴 매칭으로 네트워크 서비스를 수행 할 때 매우 유용합니다.
Jonas

@Berin은 항상 외부 링크의 문제이므로 죽었습니다.
thecoshman

@thecoshman, My appologies ... 3 년이 지나도 페이지에 있던 내용을 기억조차 할 수 없습니다.
Berin Loritsch

전혀 걱정할 필요가 없습니다. D ¬_¬는 절대 다시는 일어나지 않습니다. (사람들이
놀라기

11

언급 한 두 가지 사이에서 Haskell은 학문적이며 Erlang은 실제 고 확장 성 프로젝트에 사용됩니다. 웹 서비스를위한 두 가지 중 하나는 Erlang을 선택합니다.

그러나 나는 당신이 세 번째 선택을 할 것이라고 말하고 싶습니다 : 스칼라 는 언어 하스켈과 얼랭에 의해 큰 영향을받습니다. Twitter 또는 Foursquare와 같은 최고 수준의 웹 서비스를 구축하는 데 사용됩니다. Rails와 Django에서 영감을 얻은 웹 프레임 워크 인 Lift 도 있습니다 . Foursquare가 Lift를 사용하고 있습니다.


2
마지막 문장을 제외하고 답변에 동의하십시오. 리프트는 레일과 매우 다릅니다. 레일은 모듈 식이며 리프트는 모 놀리 식입니다. Rails는 MVC 프레임 워크이며 Lift는 그렇지 않습니다. 레일은 객체 지향적이며 리프트는 더욱 기능적입니다.
dbyrne

@dbyrne : 좋아, 편집 됨
vartec

3
웹 서비스를위한 스칼라의 문제점은 가장 널리 사용되는 Java 응용 프로그램 서버가 Erlang 및 Haskell로 작성된 서버와 비교할 때 실제로 확장이 어렵다는 것입니다.
Jonas

1
@Jonas : 예를 들어 vert.x vertx.io
vartec

리프트는 더 이상 스칼라의 기본 프레임 워크가 아닙니다. 이제 Play 이며 완전히 MVC이며 상태가 없습니다. 답변에 동의합니다. 스칼라는 현실 세계에 더 나은 선택입니다. Erlang 및 Haskell보다 Scala 개발자를 쉽게 확보 할 수 있습니다.
Jus12

7

일반적으로 나는 말합니다 : "편안함에서 가능한 한 멀리 배우십시오. 실제로 사용하지 않더라도 더 나은 프로그래머가 될 것입니다."

이 경우 아마도 하스켈을 의미 할 수 있습니다. 그러나 Erlang은 거의 사회적으로 수용 가능할뿐만 아니라 ; 그러나 주요 포인트 (경량 프로세스, 메시지 전달, 확장 성)는 다른 많은 '실제'플랫폼에서 나오고 있으므로 배운 교훈은보다 '실제적인'작업에 즉시 적용 할 수 있습니다.

내 충고 : 재미 있다면 하스켈을하라. 훈련을 받으려면 Erlang으로 가십시오.


작업 유형 프로젝트에 적합합니다. 아마 그것이 Erlang 일 것이라고 생각하고 있지만 나는 haskell을 할 수 있습니다.
Zachary K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.