繰り返しになりますが。プロジェクトの本文や、活動報告についての感想、ご意見、ご質問を、ぜひコメントでお寄せいただければと思います。現在は支援募集期間中であり、本企画の実施期間ではないため、お寄せいただいた感想などについてはリターンとしてではなく、お返事や回答をさせていただきます。
また、私個人についてはこちらをご覧ください。
本日、書庫より『別冊サイエンス コンピューターレクリエーションIII 遊びの発見』、『プログラミング・セミナー』、『スマリヤンのXXの論理パズル』、その他を発掘しました。
『ソフトウェア千夜一夜物語』、『続ソフトウェア千夜一夜物語』は、未発掘です。
この記事は、medium.comのstoryを元にしています。
では本題です。
アルゴリズムということが、おそらく誰もの頭にあると思うので、その流れでは「その計算方法は自然なものに思えるか?」というようなことをいうかのようなタイトルに見えるかもしれない。
だが、そうではない。たとえば、物理の法則は自然をモデル化している。このタイトルの「自然」とは、そういう意味での自然だ。
「なにを馬鹿なことを」と思われるかもしれない。プログラムはまだ人間が書くものだし、計算の手順を決めるのも人間だ。ならば、書かれたコードは、自然そのものということはないだろう。ここで書いてみたいのは、計算という概念は自然なのかということだ。
実際のコードから離れて、アルゴリズムで考えてみよう。あるアルゴリズムが存在するとする。では問題だ。**そのアルゴリズムは、誰かが思いつく以前から存在していたのだろうか?** 計算は自然だという立場なら、“yes” と答えるだろうし、そのアルゴリズムは発見されたと言うだろう。自然ではないとするなら、“no”と答え、発明されたと言うだろう。
これは、実は単純な話ではない。アラン・チューリングが、おおざっぱに言うなら、「計算できるものは計算できる」と、数学的に証明してしまっているからだ。つまり、計算という概念は数学の一部なのだ。
ここで話がややこしくなる。数学は自然なのかという疑問も関係してくるからだ。
数学は、物理の法則を記述できるし、さらには未発見の事柄の予想の根拠にもなる。なぜ数学にそんなことができるのかは、わかっていない大きな疑問だ。
この手のことについては、数学とは人間がそのように決めたものという考えがされることもある。もちろん、数学のいろいろな分野における公理は、人間が定めたものだ。公理を最小化しようという研究もあり、それはほとんど理解を超える話になってしまう。だが、問題は、なぜ公理を設定することが可能で、しかもどういう公理からの数学であっても、対応する自然があるのかだ。
話が大仰なものになった。だが、アルゴリズム、そして具体的なコードも、児童・生徒から「なぜ動くの?」と聞かれたら、先生は「そうなるように書いたから」という答えで済ませては欲しくない。現実的には、そう答えざるをえないかとも思うが、その背後には、そう簡単ではない疑問が存在することは意識して欲しいと思う。