[解決済み] なぜ関数型言語なのか?[クローズド]
質問
ここで関数型言語とかの話をよく見かけるけど なぜ、伝統的な言語ではなく、関数型言語を使うのでしょうか? 何が優れているのでしょうか? 何が苦手なのでしょうか? 理想的な関数型プログラミングのアプリケーションは何ですか?
どのように解決するのか?
関数型言語は、命令型言語やオブジェクト指向言語とは異なるパラダイムを使用しています。言語の基本的な構成要素として副作用のない関数を使用する。このことは、多くのことを可能にし、多くのことを難しくしている(あるいは、ほとんどの場合、人々が慣れていることとは異なっている)。
関数型プログラミングの最大の利点は、副作用のない関数の実行順序が重要でないことです。例えば、Erlangではこれを利用して、非常に透過的な方法で並行処理を可能にしています。 また、関数型言語の関数は数学の関数と非常によく似た振る舞いをするので、数学の関数を関数型言語に翻訳するのは簡単です。場合によっては、これによってコードをより読みやすくすることができます。
従来、関数型プログラミングの大きな欠点は、副作用がないことでもありました。IOなしで有用なソフトウェアを書くのは非常に難しいのですが、IOは関数に副作用なしで実装するのは難しいのです。そのため、ほとんどの人は関数型プログラミングから、1つの入力から1つの出力を計算する以上のことを得られなかったのです。F#やScalaのような現代の混合パラダイム言語では、これはより簡単なことです。
最近の言語には、関数型プログラミング言語の要素を取り入れたものがたくさんあります。C# 3.0は関数型プログラミングの機能をたくさん持っていますし、Pythonでも関数型プログラミングは可能です。関数型プログラミングが普及した理由は、主に2つあると思います。マルチプロセッサ・コンピュータの普及により、通常のプログラミングでは並行処理が問題となりつつあること、そして、言語がより身近になったことです。
関連
-
[解決済み] 軽量化の意味[クローズド]について
-
[解決済み] (関数型)リアクティブプログラミングとは?
-
[解決済み] 関数型プログラミングで時間関数が存在するのはなぜですか?
-
[解決済み] なぜ関数型言語なのか?[クローズド]
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】なぜ関数型プログラミングはまだ浸透していないのでしょうか?
-
[解決済み] 宣言型プログラミングとは?[クローズド]
-
[解決済み] スカラーとプリミティブのデータ型 - 同じものなのか?
-
[解決済み】戻り値型による関数のオーバーロード?
-
[解決済み] 手続き型と関数型の違いを真に理解するために
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 軽量化の意味[クローズド]について
-
[解決済み] ハイフンで区切られた大文字小文字は何と言う?
-
[解決済み] ダックタイピングとは何ですか?
-
[解決済み] 好きな言語の嫌いなところを5つ教えてください。[閉じる]
-
[解決済み] なぜ関数型言語なのか?[クローズド]
-
[解決済み】なぜPythonは関数型プログラミングにあまり向いていないのでしょうか?[終了] Pythonはなぜ関数型プログラミングに向かないのか?
-
[解決済み】NULLのない言語についての最適な説明
-
[解決済み】動的型言語と静的型言語の比較
-
[解決済み] スカラーとプリミティブのデータ型 - 同じものなのか?
-
[解決済み】戻り値型による関数のオーバーロード?