28
  1. 関数型言語は Web アプリケーション開発に適していますか?
  2. 関数型言語はビジネス/ ERP / CRMタイプのアプリケーションに適していますか?
4

10 に答える 10

30

あなたが説明する種類の関数型言語は汎用プログラミング言語であり、Webアプリやビジネスアプリを含むあらゆる種類のものに使用されます。(私はHaskellを使用しています)。

gaborが示唆するように、最終的にはライブラリに帰着します。ScalaにはWebフレームワークがあります:リフト。Haskellにはhappstackと、あらゆる種類の物事のためのHackage上の2100 4400(2010 2012年)ライブラリがあります。

特定の特殊なドメインを検討する場合、ツールチェーンほど言語の問題ではありません。

于 2009-05-04T17:54:18.820 に答える
17

関数型言語は、使用したいあらゆる用途に適しています。

ただし、最近のアプリケーションの開発は、プログラミング言語を使用するほど単純ではありません。Java や C# などの利点は、ビジネス ソフトウェアを構築するときに絶対に必要な大規模なライブラリやその他の優れた環境が付属していることです。ほとんどの関数型言語には、その優れたサポートがありません (まだ?)。

F# は .NET 環境にあり、そこで利用可能なツールを利用できるため、有望かもしれません (間違っていたら訂正してください)。

この記事では、初期の関数型言語である Lisp を使用して Web ベースのアプリケーションを作成する方法について説明します。

于 2009-05-04T17:48:36.820 に答える
11

関数型言語は Web アプリケーション開発、特に Scala に適しています。

詳細については、Liftフレームワークをご覧ください。

于 2009-05-04T17:48:20.520 に答える
9

2) 関数型言語はビジネス/ERP/CRM タイプのアプリケーションに適していますか?

ビジネス/ERP/CRM アプリに関する 2 番目のポイントに対処するには、個人的には、これらを Haskell のような「純粋な」関数型言語や、Clojure のような動的な関数型言語で実装するつもりはありません。一方、私現在、Scala で ERP を実装しています。これはもちろん、ハイブリッド OOP/FP であり、静的にコンパイルされています。

私がこれを言う理由は、ERP のようなビジネス アプリは基本的にレコード指向であるためです。さまざまなレコード タイプを表現するデータ スキーマがあり、アプリのロジックは、それらのレコードを CRUD してカスタム ビジネス ワークフローを適用することを中心にほぼ完全に設計されています。基本的に、この種のデータ中心のビジネス アプリが機能モデルに適しているとは思えません。

人々は OOP とリレーショナルの不一致について好きなように話すことができますが、最終的には OOP とデータベースの両方がレコード指向です。優れた ORM を備えた OOP 言語を使用すると、これらの異なるデータ モデルをコードにマップし、コードを添付してそれぞれを処理できます。モデル。そして、これを静的に型付けすると (理想的には Scala の squeryl のような強く型付けされた ORM を使用して)、実行時エラーや、コードを通じて適切に適用されないデータ モデルの 1 つへの変更などの可能性が大幅に減少します。

誤解しないでほしいのですが、私は FP の大ファンです (Haskell でシステム プログラミングを行うことが増えています) が、OOP のレコード指向のアプローチは、関数指向のアプローチよりも理にかなっています。ビジネスERPなどのデータオブジェクトをラングリングするためのFPの。(Scala はこのルールの優れた例外です。なぜなら、レコード操作のために高品質の ORM を備えた OOP パラダイムを使用できるだけでなく、一般的なアプリ プログラミングに FP の利点も使用できるからです。)

于 2011-09-04T01:59:24.413 に答える
8
  1. はい、Nitrogen は機能的な Web フレームワークの良い例です。スケールもします。

http://窒素プロジェクト.com/

于 2009-05-04T18:42:18.203 に答える
4

Yawsは、Erlang 用の素晴らしい Web サーバーです。

于 2009-05-04T20:09:52.003 に答える
3

特定の関数型言語がWeb開発を行うために調整されているとは言いませんが、関数型言語を使用してWeb開発を行うことができないとも言えません。これは、選択した言語で使用できるWebフレームワークと、その言語をサポートするWebサーバーがあるかどうかに完全に依存すると思います。

たとえば、IISでASP.Netと一緒にF#を使用して、Web開発を行うことができると確信しています。テンプレートエンジンでF#がサポートされているかどうかは疑問ですが、F#でビジネスロジックを記述できることは間違いありません。

同様に、mod_haskellApacheもあります。これにより、haskellで動的出力を比較的簡単に行うことができます。でも、個人的に使ったことはありません。同時に、mod_(erlang or scala)Apacheがあれば、それらの言語でも同様に簡単です。

最終的には、関数型言語のステートレスの性質により、ステートレスのMVCスタイルのWebフレームワークに適していると思います。ただし、これらの言語で作業するときに生活を楽にするために利用できるツールとフレームワークが本当に重要だと思います。たとえば、Rubyは、Railsが普及するまで、Web開発であまり人気がありませんでした。また、djangoを見つけるまで、PythonでWebbyを行うのは好きではありませんでした。

于 2009-05-04T17:53:14.687 に答える
3

ほとんどの関数型言語、つまりあなたが含めたものは、汎用言語と見なされます。Web 開発では、Clojure または Scala の使用を深く検討します。どちらも非常に優れた Web フレームワークを備えており、JVM 上で実行されます。私は Clojure と Scala を完全にお勧めできますが、他の人にはあまりお勧めできません。

Haskell には Web フレームワークがありますが、私は使用したことがありません。

ビジネスアプリケーション?もちろん。関数型言語は、ほぼ何にでも最適です。

于 2009-05-06T14:49:03.240 に答える
-2

関数型言語の支持者が主張する最大の利点の 1 つは、並列実行できるプログラムを簡単に作成できることです。しかし、Web アプリケーションでは通常、並列処理に問題はありません。通常、Web サーバー/アプリケーション サーバーはスレッドのプールを維持し、各ユーザー要求は異なる物理プロセッサで実行できる異なるスレッドに割り当てられます。したがって、あまり問題なく複数のプロセッサを利用できます。秘訣は、Web アプリは多数の小さな要求によって特徴付けられ、そこではスレッドと命令型言語がうまく機能することです。命令型言語が機能しなくなるのは、計算コストの高いリクエストが少数の場合です。

関数型言語のもう 1 つの大きな利点は、関数には副作用がないため、テストが容易になることです。いくつかの入力に対して各機能を個別にテストすると、システムが機能することがわかります。しかし、落とし穴があります。操作に入力または出力が含まれる場合、関数ではなくモナドを使用すると、コードのその部分に対するこのテスト容易性の利点が失われます。

ただし、通常、Web アプリケーションには、要求からの情報の読み取り、データベースへの要求の作成、データベースからの応答の読み取り、および応答のフォーマットが含まれます。これは非常に多くの IO またはモナドであり、関数の機会はほとんどありません。

Web アプリケーションのこれらの特性を考えると、関数型言語は Web アプリケーション プログラミングにどのような利点をもたらすでしょうか?

于 2009-05-04T19:04:32.817 に答える