Web サービスを構築するのに適した関数型言語は何ですか?[閉まっている]
-
01-07-2019 - |
質問
Web サービスを構築するための優れたサポートとツールを備えた関数型言語はありますか?私は Scala (JVM にコンパイルされ、Java ライブラリを使用できる) と F# (.NET) を検討してきましたが、これらはまだ開発されていないため、いくつかの非効率性があります。特に Scala は、自己再帰関数を除いて末尾呼び出しの削除をサポートしていないため、実行できる構成の種類が制限されます (これは JVM の基本的な制限です)。F# は非常に新しく、まだ完全にはサポートされていないようです。そのため、従来の言語よりもリスクが高くなります。
Haskell、ML、またはその他の伝統的な関数型言語を使用して Web サービスを構築することは可能ですか? それとも、Scala または F# を使用する方が良いでしょうか?他に何か提案はありますか?
解決
.NET がプラットフォームのオプションである場合、F# が若いからといって F# を軽視しないでください。公式製品に近づくにつれ、Visual Studio との統合がますます強化され、.NET によってもたらされるすべての利点が継承されています。
また、Microsoft と熱心なコミュニティの両方によるアクティブでアクセスしやすいサポートもあります。
他のヒント
Ocaml は オシゲン/エリオム...使ったことがあるとは言えませんが。それも初期段階にあります。
アーラン、付き ヨーズ. 。これは楽しくて強力な言語で、拡張性に優れており、100 または 1000 のプロセスを安全かつ簡単に使用できます。そして、楽しいです。
(私も綺麗だと思います。)
この紹介文をお読みください F# と ASP.NET 良いスタートが切れるでしょう。
Web アプリケーションで F# が使用されている例が Web 上にいくつかあります。そのうちの 1 つは、たとえば、 オートコンプリーター Tomas Petricek の記事を自分の記事への応用例として構築したもの 「F# Web ツール:Ajax アプリケーションをシンプルに」. 。私自身も Web サービスの一部として F# を使用したことがありますが、それがうまく機能することを保証します :)。
堅牢性や職場のためではなく、楽しみのためにこれを行っている場合は、調査してみるとよいでしょう。 アーク. 。これは未完成の進行中の言語であり、それが意味する長所と短所があります。
免責事項:ARC またはポール・グラハムとは関係ありません
Reddit は Lisp に基づいて構築されていますよね?そして ポール・グレアムは非常に高く評価しています 特に Web アプリでの俊敏性を評価します。
Clojure を検討するかもしれません。これは非常に新しい言語ですが、スケーラブルな同時実行アプリケーションにとって非常に有望であり、非常に優れた JVM 統合と (Scala と同様に) すべての Java ライブラリへのアクセスという利点があります。
Clojure には、末尾再帰問題を回避するかなりの数の設計機能もあります (特別な再帰構造、多くのコア関数が反復的に実装されるなど)。
まだ遊んでいる最中なのでお勧めできませんが、Erlang は非常に強力です。
Clojure の推奨には同意しなければなりません。の負荷テストを終えたところです Clojure で書かれたニュース フィード サービス これにより、m1.medium EC2 インスタンス上で実行されている Clojure Web サーバーごとに 1 秒あたり 80 件のアウトバウンド アクティビティ ポストが維持されました。
前世代の関数型言語には、Ocsigen (OCaml 用) や HApps (Haskell 用) などのツールがありますが、実質的にユーザーはいません。これらは完全にテストされていないソフトウェアです。
対照的に、Scala と F# は、Java と .NET の非常によくテストされたコードに基づいて構築されています。特に、F# は製品化されているため、過去 1 年間にわたって Microsoft によって非常に重点的に開発されてきました。これほどのレベルの支援を受けた関数型言語は他にありません。そのため、F# はすでに非常に使いやすいものになっています (開発ツールの点では Haskell のような言語よりはるかに先を行っています)。