多くの人が関数型プログラミングのクールさ、LISPやHaskellやF#の素晴らしさなどについて話しているのを見ていますが、実際には使用されているとは思いません。私のコンピューター上のほぼすべてのプログラムは、Cファミリー、Delphi、またはPythonのいずれかで記述されています。関数型言語を使用して複雑な数学の問題を実行するのがいかに簡単かについて話しているチュートリアルを見ていますが、ビジネスアプリケーションやゲームなど、ほとんどの人が実際にコンピューターの使用に関心を持っていることを実行するためにそれらを使用することについて話している人はいません。
関数型言語で書かれた、実際に聞いて使用しているプログラムの例はありますか?私が頭の中で思い浮かぶのは、ほぼ15年前の Abuse だけです。 (コアプログラムがCで記述されており、関数型言語のスクリプトレイヤーが上にあるEmacsのようなものはカウントされません。)
私は関数型言語で書かれたゲームやエンドユーザーアプリケーションの多くを知りませんが、いくつかあると確信しています。ゲームとエンドユーザーアプリケーションは、ソフトウェア市場の重要で目に見える部分ですが、その一部にすぎません。エンドユーザーアプリケーションやゲームインターフェースを持たないプロセスを調整しているため、見たことのないソフトウェアが巨大な量存在することを覚えておいてください。
たとえば、F#は、Credit Suisseで定量分析で人気があります。
http://blogs.msdn.com/b/dsyme/archive/2010/07/15/f-jobs-at-credit-suisse-london.aspx
そこで作業しない限り、おそらくそのソフトウェアのユーザーインターフェイスを見ることはないでしょう。
または、Erlangは携帯電話のスイッチを制御するソフトウェアの作成で人気があります。
http://en.wikipedia.org/wiki/Erlang_(programming_language )
あなたはおそらくアプリケーションとして電話をかけることを考えていませんが、誰かがスイッチを制御するソフトウェアを書かなければなりませんでした。
最新のWebサイト、たくさんのJavascript、jQueryを使用するたくさんの人を使用したことがありますか?
まあそれは事実上、関数型言語、クロージャー、ファーストクラスのオブジェクトとしての関数などです。
どこでも、毎日何百万ものユーザーがいます。
LISP方言は至る所で使用されていますが、実際には主流ではありません...
Jak and Daxter (YouTube demo) はGOAL( Game Oriented Assembly LISP )を使用して作成されました。 Gamasutraレビューから 、引用します(明確にするために強調が追加されています):
5。 GOALルール!実質的にすべてのランタイムコード(約50万行のソースコード)は、Naughty Dog独自の内部開発言語であるGOAL(ゲームオブジェクトアセンブリLISP [頭字語は正しい?])で記述されています。 LISPプログラミング言語に基づいてでした。私たちを夢中にさせる前に、カスタムコンパイラを使用することの多くの利点を検討してください。
LISPには、リストの作成と評価を含む非常に一貫性のある構文規則の小さなセットがあります。コードを表すリストは、リスト内のアイテムを評価することによって実行されます。リストの先頭が関数(またはその他のアクション)である場合、リスト内の他の項目はその関数のパラメーターであると考えることができます。 LISP構文のこの単純さにより、C++を使用して実装することが困難または不可能である強力なマクロを作成することは簡単になります。
その他 Common LISPを使用して記述されたソフトウェア に含まれるもの:
リストは続く。 LISPは完全に主流の言語ではありませんが、多くの困難な問題をきちんとエレガントな方法で確実に解決します。
Orbitz LISPを広範囲に使用 フライト検索エンジン用。
関数型プログラミングは特定の言語に限定されているわけではなく、私の心の中でスタイルのコーディングのスタイルでもあります。
スタイルを言うときはもちろん、状態を含めないという「純粋な」機能要件は無視しています。
その意味で、日常生活でよく使われているのではないでしょうか。
例をあげると、最近のプロジェクトでは、「機能的」スタイルのプログラミングを使用して、URLを動的なサイトマップ(ツリー構造)に即座に変換しました。これは、問題をより小さな関数に分解し、それを組み合わせて最終的なソリューションを作成することによって行われました:データ入力->関数(F1 + F2 + Fn)->ツリー
Xmonad 、ウィンドウマネージャはHaskellで書かれています。
業界で使用方法を理解し、それを使用する機会を持つ少数派によって使用されています。プログラマーの大多数は、再帰やファーストクラスの関数のようなものを理解していないため、関数を値として扱い、リストに格納できます。私はエリート主義のように聞こうとはしていませんが、実際には関数型言語の使用は制限されています。確かに多くの人がJavaScriptを使用していますが、Javascriptを機能的に使用するかどうかは別の問題です。
とにかく、ここに関数型言語を使用/使用しているいくつかの組織/人々のリストがあります:
しかし結局のところ、使用されている言語はプロジェクトの結果にほとんど影響を与えません。世界で最も優れたプログラミング言語は、設計と要件が数か月続き、その後、3か月で1000000行のドキュメントが機能し、テストされたコードに変換されることを期待する、悪い管理を実装する悪い管理からあなたを救うことはできません。
以前はAPLで多くの財務分析が行われていましたが、以前の回答から、今日はF#に移行したようです。
Igor Engraver (楽譜作成プログラム)はLISPで記述されています。
おそらく純粋に関数型の言語ではないかもしれませんが、pythonとjavascriptを書くときは常に関数型のパラダイムを使用しています。