Clojure を適用するには? [closed] 質問する

Clojure を適用するには? [closed] 質問する

私はClojureを学んでいて、その機能のいくつかを本当に気に入っています。本当の「お気に入りのプロジェクト」を考える時期が来ていますが、実際にどうすればよいのかよくわからないことに気づきました。使用クロージュア。

多くの Web フレームワークやテンプレート フレームワーク (Compojure など) を見てきましたが、それが価値があるかどうか疑問に思っています。長期的には、Spring、Hibernate、および Java EE スタックの一部で対処する実際のアプリケーションのニーズを満たすことはできないと感じています。

一方、並行処理機能には大きな可能性があると考えていますが、実際にどのように使用すればよいかについてのアイデアが不足しています。

背景説明は十分です。私の質問は次のとおりです。

  • Clojure と関数型プログラミングの実現可能なアプリケーションは何ですか? 私が OO/Java EE で行ったことを別の構文に書き直すことにならない、個人的なプロジェクトのアイデアを提案できますか? 私は、Clojure の可能性を最大限に活用し、OO/構造化プログラミングよりもはるかに優れている (構文だけでなく) ソリューションにつながるものを探しています。
  • Clojure と Java を混在させることは一般的ですか、または少なくとも合理的ですか? つまり、95% が Java のプロジェクトで小さなライブラリに Clojure を使用するか、Clojure で記述されたコアの上に Java アプリを構築するかのどちらかです。

編集: 素晴らしい回答をありがとうございました。どれも本当に感動的です。他に何か追加したいことがあれば、どんどん投稿してください。1 つの回答が受け入れられたからといって、がっかりしないでください。

ベストアンサー1

質問の「背景」の部分に対する回答:

ヨルグ・W・ミッタクの答えSO の「現実世界の Haskell プログラミング」という質問に対する回答です。彼は、いくつかの優れた点を指摘しています。現実世界の FP 問題に関する私の見解については、以下をお読みください。実際の 2 つの質問に対する回答については、水平線をスクロールしてください。

FP 中心の企業には、本当に優れた仕事をしている企業がいくつかあります。たとえば、Jane Street (OCaml)、Galois (Haskell)、FlightCaster (バックエンドの重労働には Clojure を使用。フロントエンドは現在 Rails で実行されていると読んだことがあるような気がします) を Google で検索してみてください。自動取引戦略は FP 指向の言語でコーディングされていることが多いと言われています。確かにその通りですが、これを裏付ける内部データはありません。Clojure に関するその他の例については、以下を参照してください。成功事例ページに掲載されている企業リスト

RailsやDjangoなどで現実世界のアプリケーションのニーズに対応することにある程度成功している人もいるようです。彼らはJ2EEとその仲間に触れる必要性を感じていないようです。これらはFPとあまり関係ありませんが、のようにFPは何もない現在の「エンタープライズ言語」のようなものです。


実際の2つの質問について:

これまでやろうと思っていたことを何でも取り上げて、それを Clojure でやってみませんか? もちろん、何でも Java でできます (ほとんどのことはおそらくできています) が、より簡潔な言語を使用すると、製品がよりクリーンになり、エクスペリエンスがより快適になり、時間の節約になるなど、さまざまなメリットがあります。

Clojure と Java の混在について -- 私は、Java で直接コーディングされたクラスをいくつか使用している Clojure コードをかなり見てきました (理由は何であれ)。私は自分でその逆を試してみましたが、Clojure ではクラス継承よりもインターフェイス継承の方がはるかに簡単なので、少し面倒です。Java コードでの予期しない結合は、Clojure コードが最も自然な方法で物事を行う能力に深刻な影響を与える可能性があります。それでも、Java プログラムを Clojure で拡張することは完全に可能であり、心配している Java 開発者にとっては、特に安全で健全な実験方法のように思えます。

おすすめ記事