繰り返しになりますが。プロジェクトの本文や、活動報告についての感想、ご意見、ご質問を、ぜひコメントでお寄せいただければと思います。現在は支援募集期間中であり、本企画の実施期間ではないため、お寄せいただいた感想などについてはリターンとしてではなく、お返事や回答をさせていただきます。
また、私個人についてはこちらをご覧ください。
では本題です。
今回は、「計算ってなんだ?」に示したのとは異なる、計算の概念を考えてみたいと思います。
すこし不思議かもしれない話をしましょう。
“2 + 3” という計算は、いったいどうやりますか? “2 + 3” の答えは、もちろん “5” です。普通に足し算をすれば、自然とそうなります。じゃぁ、 “2 + 3” という計算は、なんなんでしょう? つまりは、足し算、そしてその他のすべての計算はなんなんだという話ですが。
たとえば、 “2 + 1 + 1 + 1” だって、答えは “5” になります。これは “2 + 3” とは違うんでしょうか?
あるいは、 “1 + 1 + 1 + 1 + 1” とは違うんでしょうか?
さらにあるいは、 “1 + 1” から始まる、とても大きな表を考えてみましょう。
この表で、 “2” と “3” のところから、 “5” を見付けることもできます。
“2 + 3” が、この表から “5” を見付けてくることだって考えたらいけないんでしょうか? いけないとしたら、なぜなんでしょう?
もちろん、「その表を、まず作らないといけない」という声もあるでしょう。
しかし、そうなんでしょうか。もしそうだとしたら、たとえば、“150” っていう数は、 “1” をずっと足していって、最後に “149 + 1” という足し算をしないと出てこない数ということになりはしませんか? でも、そう考えると、私はここで突然 “150” っていう数を出しました。 でも、そんなことはできないはずだっていうことにならないでしょうか?
ここで頭を捻ってくれたり、「それもそうだ」と思ってくれたとしましょう。ついでにもうすこし頭を捻ってもらいましょう。さっきの足し算の表が、足し算をする前からどこかに存在すると考えたらいけない理由ってなにかあるでしょうか?
そう考えていけない理由はありません。
これは、足し算という、プログラムの中では一部分でしかないものでした。でも、プログラム全体についてこういう考えかたをしてはいけない理由はあるんでしょうか?
そう考えていいのなら、「足し算」というプログラム (すぐ上で「プログラムの中では一部分」と書いていますが、そこの指摘はなしです) が、 “2” と “3” と、それに対する “5” をどうにかして結び付けたっということになります。その結び付けかたは、普通に足し算をしたり、 “2 + 1 + 1 + 1” だったり、表を見たりと、いろいろあります。どの結び付けかたならよくて、どの結び付けかたはよくないなんてことはないでしょう。きちんと結び付いていれば、それでかまわないわけです。
この考え方は、「プログラムとは、入力を出力に写像する」というような考え方で、別段 珍しい考え方でもありません。
検索エンジンにキーワードを入れて、結果を得るのも同じように考えられます。潜在的に存在するあらゆる検索結果に、キーワードを写像させるわけです。こちらの例だと、すこし奇妙に思えるかもしれませんが。
ともかく、「プログラムとは、入力を出力に写像する」と考えれば、プログラミングとは、入力と出力をどうやって結び付けるのかを書くことだと言えるでしょう。「どうやって結び付けるのか」の中身は、いろいろあるわけですが。
プログラミングとは手続きや手順を書くことと同義ではないというのは、このようなこともあっての話です。