Haskell対WebサービスのErlang


30

関数型言語を使用して実験プロジェクトを開始することを検討しており、ErlangとHaskellの間で決定しようとしています。

Haskellの強力な型システムと純度が好きです。本当に信頼できるコードを簡単に書くことができると感じています。そして、Haskellの力は、私がやりたいことのいくつかをはるかに簡単にするだろうと思います。

マイナス面では、YesodのようなHaskellでWebを処理するためのフレームワークのいくつかは、Erlangのカウンターパートほど高度ではないと感じています。

スレッドとフォールトトレランスに対するErlangのアプローチが好きです。Erlangのスケーラビリティは大きなプラスになり得ると感じています。

それが私の質問につながります。HaskellとErlangの両方でWebアプリケーションのバックエンドを実装する際に人々が経験したことは何ですか。HaskellがErlangにある軽量スレッドとアクターのいくつかを提供するパッケージはありますか?


4
要件を指定しない場合、伝えることはできません。コインなどを投げるだけです。
ビトーパイ

1
私はこの結論の証拠を持っていませんが、FacebookのErlangの使用は、それが強力で信頼できることを私に示しています。
マシュー

1
@Matthew:FacebookはチャットシステムにErlangを使用していますが、これはおそらく非常に並列的な品質のためです。
ロバートハーベイ

3
はい、Lissssssspを使用します
マークC

8
古いCommodore 64雑誌に、偽の言語に関する記事がありました。最高のものは「Lithp」でした。これは、「s」文字が除外されていることを除いて、まさにLispに似ていました。そのため、すべての「lithp」開発者は「s」を「th」に置き換える必要がありました。:)
ベリン・ロリッチ

回答:


17

私が持っている唯一の質問は、あなたのウェブサービスが何をしているのですか?Webサービスが本当に機能的な問題であれば、Haskellの方が適しています。

Erlangは必ずしも関数型言語ではありません。超並列システム向けの非常に強力な実行モデルを備えた手続き型言語です。通信業界向けに設計されており、Webサービスリクエストへの応答に最適です。

手続き型プログラミングと関数型プログラミングの違いの概要については、このページ *を参照してください。(シアンのページのblackい黒については事前におAび申し上げます)。

Webサービスがかなりの量のパターンマッチングとルールの適用を行っている場合は、Haskelが最適です。既にご存知の言語とそれほど変わらないスケーラブルなインフラストラクチャが必要な場合は、Erlangを選択してください。

(*ウェイバックマシン経由のリンク。元のファイルは削除されました)


それはソーシャルネットワークによく似たものになるでしょう。この時点で、90%の確率でhaskellで実行されます。
ザカリーK

12
Erlangは関数型言語であり、手続き型言語ではありません。パターンマッチングを強力にサポートしており、ビットごとのユニークなパターンマッチングは、ネットワークサービスを行う際に非常に役立ちます。
ジョナス

@Berinは常に外部リンクの問題であるが、現在は死んでいる。
thecoshman

@thecoshman、私の謝罪... 3年後、私はページにあったものの内容を思い出すことさえできません。
ベリンロリチュ14年

まったく心配ありません:D¬_¬決して二度とそれを起こさせません。(人々が陥る前に、私は冗談)
thecoshman

11

あなたが言及する2つのうち、間違いなくHaskellはアカデミックであり、Erlangは現実の高拡張性プロジェクトで使用されています。Webサービスの2つのうち、Erlangを選択します。

しかし、3番目の選択肢があると思います。Scalaは、HaskellとErlangの両方の影響を強く受ける言語です。TwitterやFoursquareのような一流のWebサービスを構築するために使用されます。RailsとDjangoに触発されたWebフレームワークであるLiftもありますが、少し異なる、より機能的なアプローチがあります。FoursquareはLiftを使用しています。


2
最後の文を除き、あなたの答えに同意してください。LiftはRailsとは大きく異なります。Railsはモジュール式で、Liftはモノリシックです。RailsはMVCフレームワークですが、Liftはそうではありません。Railsはオブジェクト指向で、Liftはより機能的です。
-dbyrne

@dbyrne:OK、編集
バルテック

3
Webサービス用のScalaの問題は、ErlangとHaskellで書かれたサーバーと比較して、最も一般的なJavaアプリケーションサーバーのスケールが非常に悪いことです。
ジョナス

1
@ジョナス:たとえば、vert.x vertx.io
vartec

LiftはScalaの事実上のフレームワークではなくなりました。現在はPlayであり、完全にMVCであり、ステートレスです。私は答えに同意します。Scalaは実世界に適した選択肢です。ErlangやHaskellよりもScala開発者を取得しやすい。
Jus12 14年

7

通常、私は言う:「あなたの快適なゾーンから可能な限り物事を学ぶ、それはあなたが実際にそれを使用していなくてもあなたをより良いプログラマにするでしょう」。

この場合、それはおそらくHaskellを意味する可能性があります。しかし、アーランはほとんどになっているだけではありません社会的に受け入れられる。しかし、主要なポイント(軽いプロセス、メッセージの受け渡し、巨大な拡張性)は他の多くの「実用的な」プラットフォームに来ているので、学んだ教訓はより「実際の」作業に大きくかつ即時に適用できます。

私のアドバイス:それが楽しみのためなら、Haskellをしてください。トレーニング用の場合は、アーランに行きます。


作業タイプのプロジェクト用です。多分アーランになると思うが、ハスケルするかもしれない。
ザカリーK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.