コマンドプログラミングvs宣言プログラミング


命令式プログラミングと宣言式プログラミングを探して、その意味を探します.

コマンドタイプ。宣言型。


コマンドプログラミングは何をするかに近い.
宣言的なプログラミングは何をするかに近い.
この説明はポイントを説明しており、この説明を受け入れることができることを理解しています.もう少し詳しく調べてください.

どうしよう。なんだ。差異


1.道を探す


3人の友达がおしゃべりをしていて、1人の友达がデパートにどう行けばいいか聞いています.この時、二人の友达の答えはこうだった.
A:「この喫茶店を出て、左に30メートル行けばバス停に着きます.そこで5駅までバスで降りて、右に曲がって、大通りに沿って50メートル行けばデパートの入り口です.」
B:「デパートの住所はソウル特別市OO区O洞OOO,###,地図ソフトで探してみます」
2人の友人の回答を見ると、Aは「どうするか」に集中し、Bは「何をするか」に集中している.ここでAは命令型,Bは宣言型といえる.

2.手動運転棒車と自動運転車


マニュアルドライバー自動車は第1段から直進速度を調整し、バックレバーも直接移動して運転する.
自動運転車は直進・後進を目的としたステアリングレバーで走行する.
手動レバー接近命令型、自動レバー接近宣言型.

どうしよう


第1の例では、アプリケーションにBの友人のアドレス情報が見つかった場合、アプリケーションはコマンド式で通知する.宣言型は命令型を体現する方法を抽象化する方法である.宣言方式を正常に動作させるためには,命令式で表される「どのように」を抽象化しなければならない.命令型の基礎がない宣言型は成り立たない.それぞれの方法がどのように抽象的であるかを見てみましょう.
1番の道を探すにはデパートの住所を入力すると、アプリケーションはすべてのコマンド型ステップを知っています.
2号車は自動運転が歯車変速機能の抽象だと仮定している.

コマンドプログラミングの例


1.アレイ要素全体の合計

function sum(arr) {
  let result = 0;
  for (let i = 0; i < arr.length; i++) {
    result = result + arr[i];
  }
  return result;
}

2.各配列要素の二乗

function squared(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    result[i] = arr[i] * arr[i];
  }
  return result;
}
1番は反復文で配列要素全体をどのような過程で加算して返し、2番は反復文で各要素をどのような過程の二乗で並べて返し、1、2はすべて“どのように”を説明しました.段階的に機能を実行する方法を知ることができます.例示的なコードは単純なコードであるため、プロセスが明確に見られるが、本当に複雑なコードは、段階的にコードの流れを理解することが困難な場合が多い.では、この関数がどんな機能なのか分かりにくいです.毒性が悪くなる.この点を宣言型に変えましょう.

宣言プログラミングの例


1.アレイ要素全体の合計

function sum(arr) {
  return arr.reduce((acc, cur) => acc + cur, 0);
}

2.各配列要素の二乗

function squared(arr) {
  return arr.map(el => el * el);
}
1番はreduce、2番はmapを使いました.reduce,mapはいずれもコマンド型ステップを抽象化する方法である.この過程は宣言型において重要である.「この関数はどのように動作するかというより、どのように動作するかということです.」どのように「何」ではなく「何」に集中するか.可読性に優れた利点があります.

宣言プログラミングの利点

  • は毒性が良い.
  • は独立しています.(現在の状態のコンテキストに依存しません.)
  • 再利用性が良い.
  • に感銘を与える


    宣言式プログラミングがオブジェクト向けに関連する考え方はある程度正しいが,正確な理解ではないことに気づいた.重要なのは、作成中のコードが何の意味を持っているかを知ることです.コマンド形式で記述する必要がある場合もあれば、宣言形式で記述する必要がある場合もあります.今自分が何を望んでいるのか、方法が違います.これらの違いと意味を理解することは、より良い開発を行うための基礎のようです.
    参考資料リンク:箱狐