手続き型と機能型の違いを真に理解する
手続き型プログラミングと関数型プログラミングの違いを理解するのに本当に苦労しています。 次に、関数型プログラミングに関するWikipediaエントリの最初の2つの段落を示します。 コンピュータサイエンスでは、関数型プログラミングは、計算を数学関数の評価として扱い、状態や可変データを回避するプログラミングパラダイムです。状態の変化を強調する命令型プログラミングスタイルとは対照的に、関数の適用を強調します。関数型プログラミングは、関数定義、関数適用、および再帰を調査するために1930年代に開発された正式なシステムであるラムダ計算にルーツがあります。多くの関数型プログラミング言語は、ラムダ計算の詳細と見なすことができます。 実際には、数学関数と命令型プログラミングで使用される「関数」の概念の違いは、命令型関数には副作用があり、プログラムの状態の値を変更する可能性があることです。このため、それらには参照透過性がありません。つまり、同じ言語式は、実行中のプログラムの状態に応じて、異なる時点で異なる値になる可能性があります。逆に、関数コードでは、関数の出力値は関数に入力された引数にのみ依存するfため、引数に同じ値を指定して関数を2回呼び出す xと、同じ結果が生成されますf(x)両方の時間。副作用をなくすことで、プログラムの動作の理解と予測がはるかに容易になります。これは、関数型プログラミングを開発するための主要な動機の1つです。 それが言うパラグラフ2で 逆に、関数コードでは、関数の出力値は関数に入力された引数にのみ依存するfため、引数に同じ値を指定して関数を2回呼び出すxと、同じ結果がf(x)両方とも生成されます。 これは、手続き型プログラミングの場合とまったく同じではありませんか? 際立っている手続き型と機能型のどちらを探すべきですか?