回答:
手続き型プログラミングパラダイムやオブジェクト指向プログラミングパラダイムなど、命令型プログラミングパラダイムにはいくつかのサブパラダイムがあります。
命令型プログラミングパラダイムでは、さまざまな程度の抽象化でアルゴリズムを段階的に説明します。
手続き型パラダイムをサポートするプログラミング言語の例:
通常、タイプの階層を示す言語を指します、メソッドと状態の両方を基本型から派生型に継承するは異なるプロトタイプベースのJavaScriptも含まれます。
OOパラダイムをサポートするプログラミング言語の例:
関数型や論理型のプログラミングパラダイムなど、宣言型プログラミングパラダイムにはいくつかのサブパラダイムがあります。
宣言型プログラミングパラダイムでは、結果または目標を記述し、「ブラックボックス」を介してそれを取得します。命令の反対。
宣言型プログラミングパラダイムをサポートするプログラミング言語の例:
関数型プログラミングは、副作用のない、変更可能な状態のない関数の適用を強調しています。上記の宣言型システムは、関数型プログラミングの特定の側面を示しています。
宣言的関数パラダイムをサポートするプログラミング言語の例:
宣言型プログラミングは、それを行う方法を言う必要なしに、あなたが望むものを言うところです。手続き型プログラミングでは、結果を得るために正確な手順を指定する必要があります。
たとえば、クエリは結果を生成する手順を指定しないため、SQLは手続き型よりも宣言型です。
実例を挙げましょう。お茶が必要です。
手続き:
宣言:
手続き型言語では、プロセス全体を定義し、その手順を提供します。注文を提供し、プロセスの提供方法を定義するだけです。
宣言型言語では、コマンドまたは順序を設定し、その順序を完了する方法をシステムに設定します。あなたはそれがどのように行われるべきかを掘り下げることなくあなたの結果を必要とするだけです。
手続き型プログラミング:
手続き型プログラミングでは、プログラムが開始すると、一連の命令に従います。指示は一部のファイルまたはメモリの内容に基づいて変更される可能性がありますが、全体的には大きく異なりません。プログラムへの入力は、通常、リアルタイムのユーザー入力からではなく、事前に収集されたデータのセットからのものです。
宣言型プログラミング:
宣言型イベント駆動型プログラミングでは、プログラムがデータに対して実行できるオプションのアクションを使用して、データの本体を集中管理します。たとえば、ワードプロセッサの各「イベント」は、データやドキュメントに影響を与えるマウスまたはキーボード(またはファイル)の変更です。それらは任意の順序で実行する必要はありません。イベントドリブンプログラミングは、すべてが共通のデータセットで機能する小さなプログラム(イベントハンドラー)の形式をとるので、各小さなプログラムは同じデータ(この例ではドキュメント)を使用できます。
2つのプログラミング言語の主な違いは、私たちがコンピュータを教え、手続き型プログラミングでは、ある方法の問題を解決し、宣言型プログラミングでは、我々はコンピュータ伝えるためにどのような私たちが解決したい問題を。
ansibleコメントに対処し、おそらく2つの違いの例を提供します。Ansibleは手続き型であり、人形やテラフォームのようなものが宣言型です。たとえば、次のように10のec2インスタンスをデプロイするansible yamlファイルを作成します。
ます。-ec2:count:10 image:ami-058c6e5b73b074cd2 instance_type:t2.micro
そのファイルを2回実行すると、20個のt2.micro ec2インスタンスが作成されます。terraformなどの宣言型言語で同等のものを記述して2回実行した場合、何回実行しても10個のt2.microインスタンスしか実行されません。宣言型言語は最終状態を指定します。手続き型言語は、現在または過去の状態に関係なく、あなたが言うことを実行するだけです。
YAMLは宣言型プログラミング言語ですか?実際のロジックを記述する代わりに、必要なものを定義するためです。
誰かが構成管理ツールであるAnsibleを知っている場合は、YAMLを使用しますが、それでも手続き型言語のカテゴリに分類されるため、これを求めています。
手続き型アプローチでは、結果を達成するための命令をエンコードします。宣言型アプローチでは、問題を解決するための知識として、何を解決する必要があるかを定義します。両方のアプローチで実装した手続き型または宣言型のアプローチの例をご覧ください。
この例でわかるように、宣言型アプローチでは、問題を解決するようにHOWに指示する必要はありません。