Skip to main content

機能プログラミングとは何ですか?

関数プログラミングは、計算のベースが式の評価であるプログラミングパラダイムです。いくつかの特性は、高次関数の使用、参照透明性、怠zyな評価です。プログラミングスタイルの利点には、プログラムが読みやすく、非常に信頼性が高く、コンポーネントに分割できることが含まれます。欠点とは、計算が遅く、スタイルと構文が他の一般的なプログラミングスタイルとはまったく異なる可能性があることです。機能的なプログラミングスタイルは、コンピューターサイエンスの専門家よりも学者が受け入れることがよくあります。関数は、高次関数と呼ばれる他の関数内にネストされる場合があり、それぞれの高次関数は、理解しやすくデバッグされたビルディングブロック関数に分解できます。いくつかの高次関数の例は、地図と巣です。関数マップは、たとえば(x、y、z)などの変数のリストと変数のリストを取得し、結果をリストに示します。マップ[f、(x、y、z)] '(f(x)、f(y)、f(z))。ネストは、関数f、変数x、および反復数を取ります:nest [f、x、3] ' f(f(x)))。pure純粋な機能プログラミングは、変数の状態を常に変更せずに入力を取り、出力を返します。言い換えれば、同じ入力を持つ関数は、プログラムで以前に発生したことに関係なく、常に同じ結果をもたらします。これは、参照透明性と呼ばれます。数学的機能は参照的に透明であるため、機能的プログラミングは多くの数学者、エンジニア、科学者に直感的です。function関数の参照透明性は、関数評価の順序が重要ではないことを意味します。したがって、関数は結果が必要になるまで評価する必要はありません。これは怠zyな評価と呼ばれます。これは、プログラムが最初のコマンドから始まり、最後のコマンドまでリストを実行する命令的なプログラミングとは完全に対照的です。怠zyな評価は、プログラムの一部を論理的に追跡しない、または余分なものをスキップします。これは、プログラムを自動的に最適化し、コンピューティング時間を短縮する可能性があります。明確な入力と出力を備えた関数は、読みやすく、理解しやすいです。関数が徹底的にデバッグされると、他のアプリケーションで確実に使用できます。マルチコアマシンは、並行して独立して評価される機能を計算できる場合があり、プログラムのパフォーマンスを大幅に改善します。機能プログラムは再帰に大きく依存しています。これは、従来のループや反復方法を使用するよりも効率が低いことがよくあります。実際、機能的プログラミングは、オブジェクト指向プログラミングなどの他のより一般的なパラダイムに似ていないため、非常に不器用で学習が困難です。。一部の純粋な言語はHaskellとErlangです。Mathematicaは象徴的な数学に特化しており、Rは統計に特化しており、Jは財務分析に特化しています。ScalaやF#などのMultiParadigm言語は、機能的なプログラミングと他のプログラミングスタイルの両方をサポートしています。