web-dev-qa-db-ja.com

関数型スタイルに対する命令型スタイルの利点

現在、関数型言語には多くの誇大宣伝があります。その結果、昨年、私はFPの紹介としてHaskellを勉強しました。 FPが提供する利点を確認することは簡単です(参照の透明性や不変性を重視しているため、同時実行が容易など)。

今、私が自問している質問は、命令型プログラミングが関数型パラダイムに対して明確な利点を提供するかどうかです。私は、ああ、業界のより多くの人々が命令型スタイルを知っているような、より物議を醸す利点を考慮していません。人気に関係なく、スタイルに固有の利点をもっと探しています(たとえば、パフォーマンスの低いレベルのコードをすばやく書く方が実際に優れている、またはx、y、zのためにデバッグが容易であるなど)。各パラダイムについて話すとき、それが理想的な世界であるように見せかけることができます(たとえば、UNIXがCで書かれているため、必須ではないというよりも、機能上の欠点について話すとき、UNIXがSMLで書かれているとしましょう) 。

特に、プロセッサアーキテクチャがより複雑になり、最適化された低レベルコードのHaskellとCの実装が同じように私にとって恐ろしいように見えるため、命令型スタイルの利点を見つけるのは最近困難になっているようです。

3
Josiah

さて、あなたはすでに答えをほのめかしました。命令型プログラミングは金属に近いので、金属の近くで作業している場所(埋め込みなど)ではより理にかなっています。 HaskellでArduinoをプログラミングする人はいません(たぶん、@ JimmyHoffaを除いて)。Schemeでプログラミングするのは前例がないわけではありません。

他のいくつかの理由:

  1. コンピューティングモデルは、基盤となるハードウェアにより容易にマッピングされます。

  2. 命令型プログラムは、わずかな追加の労力で関数形式で記述できます。

  3. 既存の命令型コードの巨大な基盤は、命令型スキルを持つ人々の必要性を保証します。

最後のポイントはおそらく最も重要なものです。命令型コードには、すでに大量に存在するため、利点があります。そして、Javaのような言語を作り続けている限り、さらに多くのことを書いていきます。

6
Robert Harvey