1. ホーム
  2. c#

[解決済み] プログラミングにおける宣言型パラダイムと命令型パラダイムの違いは何ですか?

2022-03-14 10:16:21

質問

の定義を知りたくて、ウェブで検索しています。 宣言的 命令型 というようなプログラミングをすることで、何か見えてくるものがあるはずです。しかし、私が見つけたいくつかの資料では、使われている言語が難しく、例えば、次のようなものです。 ウィキペディア . どなたか、このテーマに見通しを与えてくれるような実例(おそらくC#)をお持ちの方はいらっしゃいませんか?

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

宣言型プログラミングと命令型プログラミングを比較したC#の好例がLINQです。

とは 命令的 プログラミングの場合、コンパイラに何が起きたいかを段階的に指示します。

例えば、このコレクションから始めて、奇数を選ぶとします。

List<int> collection = new List<int> { 1, 2, 3, 4, 5 };

命令型プログラミングでは、このようにステップを踏んで、何が欲しいかを決めていきます。

List<int> results = new List<int>();
foreach(var num in collection)
{
    if (num % 2 != 0)
          results.Add(num);
}

ここでは、こう言っています。

  1. 結果コレクションの作成
  2. コレクション内の各数値をステップ実行する
  3. 数値を確認し、奇数であれば結果に追加する

宣言的 一方、プログラミングでは、欲しいものを記述したコードを書きますが、必ずしもそれを得る方法を記述するわけではありません(欲しい結果を宣言しますが、ステップバイステップではありません)。

var results = collection.Where( num => num % 2 != 0);

ここで、私たちが言っているのは、「奇数であるところをすべて教えてください」であって、「コレクションを一通り見てください」ということではありません。 このアイテムをチェックして、もし奇数なら、それを結果コレクションに追加してください。

多くの場合、コードも両方の設計が混在しているので、必ずしも白黒つけられるわけではありません。