料理を作るレシピというものがありますね。玉葱をみじんぎりにして、たっぷりのオリーブ油で透き通るくらいになるまでいためて、どーたらこーたら。はい?これ、料理を作る作業を時間の順を追って書き下したものです。コンピュータのプログラムも同じようなもんです。コンピュータの実行する命令、つまり足し算だとか引き算だとかメモ帳にメモれとか、そういう命令を実際に実行する順に並べたものがプログラム。レシピと違うのは、その長さ。万を越えることもザラ。こりゃ間違いの命令が紛れ込んでいてもしょうがないわな。万個も並んだ命令を順番に追いかけて行くことなんて普通の人ならできっこないです。普通の人でなくたってできないか。万でも全然足りないような仕事が次から次へと出てくる。それこそいろいろ出てきますね。そこで、研究者は考えた。足し算引き算みたいな簡単な命令じゃなくて、もっと、人が普通に使っているような言葉を使えばいいのだと。言っても、人の言葉と同じようにはいかないけど。かけ算や割り算の命令ができたり、メモ帳に書いてある数字がプラスの数なら、こっちのレシピを使うという命令ができたり。足し算引き算よりもっと高級な言葉を使って指令を出すと。これで万事解決できるかと思われた時代も、かつてはありました。人間がコンピュータにやらせたい仕事がどんどん複雑になって行くのには追いつけません。万行以上も並べないといけなくなる。そもそも、こんなに長い命令列が人間に書ける筈はない。読んで理解できる筈もない。したらいいんですか?またまた研究者は考えた。ここで発想の転換をする訳です。いう順でこの仕事をやりなさいということをプログラムで表現するのではなく、どんな仕事をしたいということをプログラムで表現するのです。個の数字を大きい順に並べ直したいとしますね。それだったら考えられる。大きい数を見つけてきて、それを一番左に置いてとか、そういう手順を片っ端から書いて行く訳です。数字を大きい順に並べる、とだけ指示すれば足りる訳です。あとはコンピュータが適当に並べ直してくれます。これなら間違えようがない。伝えてると対比できましょうか。宣言的と言っています。こんなうまい話があるもんかと、お疑いの貴兄。