web-dev-qa-db-ja.com

宣言型と手続き型のプログラミングパラダイムの違いは何ですか?

declarativeproceduralプログラミングパラダイムの違いは何ですか?いくつか例を挙げていただけますか?

他にどのようなプログラミングパラダイムが存在しますか?

88
Tarik

命令的

proceduralobject-orientedプログラミングパラダイムなど、命令型プログラミングパラダイムにはいくつかのサブパラダイムがあります。

命令型プログラミングのパラダイムでは、さまざまな抽象度で段階的にアルゴリズムを説明します。

手続き型パラダイムをサポートするプログラミング言語の例:

  • C (and most other legacy languages)
  • PHP、主に
  • ある意味では、すべての主要言語

オブジェクト指向

通常は、基本型から派生型にメソッドと状態の両方を継承する型の階層を示す言語を指しますが、通常とは異なるプロトタイプベースのJavaScriptも含まれます。

OOパラダイムをサポートするプログラミング言語の例:

  • Java

宣言的

関数型または論理型プログラミングパラダイムなど、宣言型プログラミングパラダイムにはいくつかのサブパラダイムがあります。

宣言型プログラミングパラダイムでは、結果または目標を記述し、「 ブラックボックス 」で取得します。 命令の反対

宣言型プログラミングパラダイムをサポートするプログラミング言語の例:

  • yacc
  • ツリートップ
  • SQL
  • 正規表現
  • レックス
  • XSLT
  • マークアップ、troff、CSS、VHDL

機能的

関数型プログラミングは、副作用や可変状態のない関数の適用を強調しています。上記の宣言システムは、関数型プログラミングの特定の側面を示しています。

宣言型機能パラダイムをサポートするプログラミング言語の例:

  • ハスケル
  • OCaml
  • スキーム
  • アーラン
  • F#
  • Scala
104
DigitalRoss

宣言型プログラミングでは、方法を言わずに、必要なことを言うことができます。手続き型プログラミングでは、結果を得るために正確な手順を指定する必要があります。

たとえば、クエリは結果を生成するステップを指定しないため、SQLは手続き型よりも宣言型です。

59
Ned Batchelder

実例を挙げましょう。お茶が必要です。

手順:

  1. キッチンに行く
  2. 砂糖、牛乳、お茶を手に入れて、
  3. それらを混ぜて、火が沸騰するまで加熱します
  4. それをカップに入れて持ってきて

宣言的:

  1. お茶を一杯ください。

手続き型言語では、プロセス全体を定義し、それを行う手順を提供します。注文を提供し、プロセスの提供方法を​​定義するだけです。

宣言型言語では、コマンドまたは順序を設定するだけで、その順序を完了する方法をシステムに任せることができます。結果を必要とするのは、実行方法を掘り下げることなくです。

手続き型プログラミング:

手続き型プログラミングでは、プログラムが起動すると、一連の命令に従います。命令は、ファイルまたはメモリの内容に基づいて変更される場合がありますが、全体的には大きく変化しません。プログラムへの入力は通常、リアルタイムでのユーザー入力からではなく、事前に収集された一連のデータからです。

宣言型プログラミング:

宣言的イベントドリブンプログラミングでは、プログラムが実行できるオプションのアクションを使用して、データ本体を中心にプログラミングします。たとえば、ワードプロセッサの各「イベント」は、データ、ドキュメントに影響を与えるマウスまたはキーボード(またはファイル)の変更です。それらは任意の順序で実行する必要はありません。イベント駆動型プログラミングは、すべてが共通のデータセットで動作する小さなプログラム(イベントハンドラー)の形式を取り、各小さなプログラムが同じデータ(この例ではドキュメント)を使用できるようにします。

5
SattiS