宣言型プログラミング 単語

センゲンガタプログラミング

これはリビジョン 2908802 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

宣言型プログラミングとは、定義を宣言する形でプログラミングしようとするプログラミングパラダイムである。

概要

関数型言語では、宣言型プログラミングと言って物事の関係性を「宣言」する形でプログラミングするスタイルが奨励されている。発想としては論理型言語と似ている。

オブジェクト指向で挙げた例にあわせて書くと以下のような雰囲気になる。

  1. 業務終了後、動物園内の全ての虎は満腹になっていなければならない。
  2. 虎を死亡させてはならない。
  3. 当園には虎A, B, Cがいる。
  4. 虎は空腹か満腹かのいずれかである。
  5. 虎に餌を与えると満腹になる。
  6. ただし満腹の虎に餌を与えると死亡する。

以下の2点に着目したい。

  • オブジェクト指向では、「虎A, B, Cに餌をやる。」という飼育員(コンピューター)への作業命令が主文であったのに対し、宣言型プログラミングでは「全ての虎は満腹になっていなければならない。」という「目的」の「宣言」が主文となっている。
  • 他の文も定義を「宣言」しているだけで、飼育員に「何をしろ」とは言っていない。

さて、このマニュアルを受け取った飼育員はどのように行動するのか。

  1. 全ての虎は満腹になっていなければならない。 → 「全ての虎」って何?
  2. 当園には虎A, B, Cがいる。 → ああ「虎A, B, C」のことね。
  3. 虎に餌を与えると満腹になる。 → 満腹にするには「虎A, B, C」に餌をあげればいいのね。
  4. ただし満腹の虎に餌を与えると死亡する。虎を死亡させてはならない。 → おっと、満腹の時には餌をあげないようにしないと。
  5. 虎は空腹か満腹かのいずれかである。 → なるほど。満腹でない虎、つまり空腹の虎にだけ餌をあげればいいのか。

ということで、この飼育員は虎A, B, Cのうち空腹な虎にのみ餌をやるという行動を取る。実際のプログラミング言語処理系はここまでは忖度してくれない。

「目的」と「定義」だけ「宣言」すれば、作業内容を指示しなくても自動的に動作が組み上がる優れたプログラミングパラダイムであるという主張がある一方で、定義から実際の動作がどうなるのか想像しづらいという批判もある。

関連項目

  • 参照透過
  • 関数型言語
  •  プログラミングパラダイム
    • 手続き型プログラミング
    • オブジェクト指向
    • 関数型プログラミング
    • 論理プログラミング
  • Haskell
  • プログラミング関連用語の一覧

おすすめトレンド

ニコニ広告で宣伝された記事

急上昇ワード改

最終更新:2025/12/08(月) 04:00

ほめられた記事

最終更新:2025/12/08(月) 03:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP