web-dev-qa-db-ja.com

構造化プログラミングの定義では、命令型プログラミングのみが考慮されていますか?

構造化プログラミングの定義では、命令型プログラミングのみが考慮されていますか?これは、構造化プログラミングの定義が関数型プログラミングを自動的に除外することを意味します(最も一般的な使用法では、必ずしも純粋な関数型プログラミングではなく、Clojureのようなものを意味します)。

構造化プログラミングは、少なくとも私が見つけた定義からは、「優れたプログラミングはgotoを使用すべきではなく、モジュール式でなければならない」と実際に言っているようです。これは必ずしも関数型プログラミングを除外するわけではありませんが、ほとんどの定義は「...は命令型プログラミングのサブセットです」で始まるようです。

私は私が思う少しの説明を探しています。

ところで、私は読んだことがあります "命令型プログラミング、手続き型プログラミング、構造化プログラミングの違いは何ですか?" これはかなり良い歴史的記述です。

5
lucidquiet

純粋関数のみを使用および作成するとします。これらは定義上、共有状態がなく、作成が簡単であり、gotoを使用する方法はありません。これは、「モジュール性」と「構造化制御フロー」の両方の特性を満たします。

どうなり得るか? map-reduce計算。プロローグ推論。 SQLクエリ(サブクエリまたはビューとして再利用できます)。これらすべてを1960年代の概念の傘下に置いても問題ありませんか?

私にとって、「構造化プログラミング」は主に歴史的な概念であり、たとえば、「Goto ThoughdHarmful」やその他のダイクストラの作品に関連しています。それは命令型の世界に深く根ざしています。優れたCコードを書くときは、構造化プログラミングを行います。 HaskellやおそらくScalaで高度にモジュール化され、構造化されたコードを書くときは、何か違うことをします。

9
9000

構造化プログラミングは、本質的にはプロシージャを構成することによるプログラミングです。

関数型言語の関数で同様のことを行うことができますか? はい

人々が構造化プログラミングについて話すとき、彼らは通常関数型プログラミングを含めることを意味しますか? 番号

「構造化プログラミングスタイル」と言えば、関数型プログラミングが含まれていることを人々は理解しますか? 番号

5
Caleb