1. ホーム
  2. programming-languages

[解決済み] なぜ関数型言語なのか?[クローズド]

2022-03-16 06:51:14

質問

ここで関数型言語とかの話をよく見かけるけど なぜ、伝統的な言語ではなく、関数型言語を使うのでしょうか? 何が優れているのでしょうか? 何が苦手なのでしょうか? 理想的な関数型プログラミングのアプリケーションは何ですか?

どのように解決するのか?

関数型言語は、命令型言語やオブジェクト指向言語とは異なるパラダイムを使用しています。言語の基本的な構成要素として副作用のない関数を使用する。このことは、多くのことを可能にし、多くのことを難しくしている(あるいは、ほとんどの場合、人々が慣れていることとは異なっている)。

関数型プログラミングの最大の利点は、副作用のない関数の実行順序が重要でないことです。例えば、Erlangではこれを利用して、非常に透過的な方法で並行処理を可能にしています。 また、関数型言語の関数は数学の関数と非常によく似た振る舞いをするので、数学の関数を関数型言語に翻訳するのは簡単です。場合によっては、これによってコードをより読みやすくすることができます。

従来、関数型プログラミングの大きな欠点は、副作用がないことでもありました。IOなしで有用なソフトウェアを書くのは非常に難しいのですが、IOは関数に副作用なしで実装するのは難しいのです。そのため、ほとんどの人は関数型プログラミングから、1つの入力から1つの出力を計算する以上のことを得られなかったのです。F#やScalaのような現代の混合パラダイム言語では、これはより簡単なことです。

最近の言語には、関数型プログラミング言語の要素を取り入れたものがたくさんあります。C# 3.0は関数型プログラミングの機能をたくさん持っていますし、Pythonでも関数型プログラミングは可能です。関数型プログラミングが普及した理由は、主に2つあると思います。マルチプロセッサ・コンピュータの普及により、通常のプログラミングでは並行処理が問題となりつつあること、そして、言語がより身近になったことです。