上級その5目次こんにちは!このページは「コンピュータサイエンスと魔法のYコンビネータ」という記事の17ページ目です。1ページ目から読むにはこちらからどうぞ。15これが最後のページです!これが最後のページです。15そもそも弁当箱というアイデアはどこから来たのかさて、前回の最後に、ラムダ村の村人は次のような質問をしました。弁当箱にできない計算はあるのかな?この質問に答えるためには、「そもそも弁当箱というアイデアはどこから来たのか」という質問にまず答える必要があります。そもそも、弁当箱というアイデアはどこから来たのか?そのためには、ラムダ村の世界ではなく、現実世界の歴史を学ばないといけません。現実世界の歴史を学ばないといけないというわけで、これから現実世界の歴史の話をします。ラムダ村の話からはいったん離れますが、このページの最後で戻ってきます。これからコンピュータやコンピュータサイエンスの歴史について語りますが、簡潔さを優先するために、正確性をあえて犠牲にしたり、ほとんどの出来事を省いたりしています。コンピュータ史に詳しい方のなかには、怒り心頭に発する方が出てくるかもしれません。雑な歴史の紹介であることをお許しください。15そもそもコンピュータとは何かこの記事のタイトルは「コンピュータサイエンスと魔法のYコンビネータ」ですが、はじめに、「そもそもコンピュータとは何か」という質問について考えてみましょう。そもそもコンピュータとは何か?「コンピュータ」というとパソコンやタブレット、スマホ、ロボットを思い浮かべる方が多いかもしれません。コンピュータは本質的には「計算機」なのです。コンピュータは本質的には「計算機」コンピュータを使えば情報を瞬時に検索できたり、美しいCGを描いたりすることができます。最近はAIを使って顔認証や会話ができるようになりました。コンピュータが大量の計算を瞬時に行えるからこそ実現されているのです。検索エンジンは膨大な数のデータをランク付けするために計算を行います。AIが顔認証をするときは、センサーが取り込んだ顔のデータを数値化し、それをもとに複雑な計算を行って本人かどうかを確かめているのです。コンピュータは、大量の計算を行える計算機だから、コンピュータは「計算機」なのですね。15計算機の歴史コンピュータは計算機であるからこそ、コンピュータの歴史はすなわち、計算機の歴史なのです。計算機の主役でしたね。昔の日本で「計算機」といえばそろばんだった一方、海の向こうのアメリカでは、1890年に「タビュレーティングマシン」という計算機が台頭しました。2.0)タビュレーティングマシンは、アメリカの国勢調査、すなわち国全体のアンケート調査を集計するために使われた計算機でした。マークシートのような紙に空いた穴を読み取って計算することで、大量のデータをすばやく集計できたのです。現代のエクセルのようなものですね。アメリカでは「タビュレーティングマシン」という計算機が国勢調査で使われたちなみに、この計算機の発明者であるホレリスは、IBMの前身となる会社を創業しました。IBMはさらに強力な計算機を開発し続け、1960年代に世界一のコンピュータ企業になったのです。15計算機「科学」のはじまり上記の「タビュレーティングマシン」を皮切りに、計算機は20世紀に入ってどんどん進化していきました。計算機は電子化され、今の「コンピュータ」と呼ばれるような機械になっていきました。生まれ、進化していきました。そんなコンピュータサイエンスの研究者たちは、「コンピュータ=計算機の作り方や使い方をどう工夫すれば、より効率的に問題を解けるのか」といった問いに取り組んだのです。ふたりの研究が、学問としてのコンピュータサイエンスの大本になっているのです。15空想上の計算機チューリングとチャーチは1930年代に、「ヒルベルトの決定問題」という、とある難しい数学の問題に別々に取り組んでいました。それがどんな問題かを説明するのは非常に難しいので省略しますが、ふたりがその問題をどのようにして解いたかが興味深かったのです。チューリングとチャーチは、とある数学の問題に別々に取り組んでいたその問題を解くために、ふたりはそれぞれ別々の「空想上の計算機」を考案する必要がありました。「空想上の計算機」とはすなわち、実際には(少なくとも1930年代の当時は)存在しないけど、もし存在したとしたら非常に複雑な計算ができる、仮想上の計算機のことです。実際には存在しないが、もしも存在したら非常に複雑な計算ができる仮想上の計算機のこと。「もし仮にそんな計算機がこの世に存在したら...」と仮定したうえで理論を展開することで、ふたりはそれぞれ別々に、先述の問題を解くことができたのです。先述の問題を解くために、ふたりはそれぞれ「空想上の計算機」を頭の中で設計した。「もしこういった計算機が存在したら...」と仮定した上で理論を展開して問題を解いた実は、この時にふたりが別々に考案した、当時の技術では作ることができない「空想上の計算機」が、その後のコンピュータの開発や、プログラミング言語の開発、ひいてはコンピュータサイエンスそのものに大きな影響を与えました。言い換えると、このふたりは「ヒルベルトの決定問題」という数学の問題を解いていたのですが、その問題を解くためにふたりが考えたアイデアが偶然にも、近代のコンピュータサイエンスの土台になったのです。次に、それぞれが考えた「空想上の計算機」について見ていきましょう。1930年代半ばに、チューリングは先述の問題を解くために「チューリングマシン」という空想上の計算機を考案しました。「このチューリングマシンが仮に存在したら...」と論を展開することで、彼は先述の数学の問題を解くことができたのです。ここでは詳しく説明しませんが、このチューリングマシンの仕組みはシンプルながら、現代のコンピュータの仕組みと非常に似ており、近代的なコンピュータの発展に大きな影響を与えたのです。チューリングは、「チューリングマシン」という、現代のコンピュータに似ている空想上の計算機を頭の中で考え、それを使って先述の問題を解いた一方、ほぼ時を同じくして、チャーチは先述の問題を解くために「ラムダ計算」という空想上の計算機を考案しました。この「ラムダ計算」とはどんな仕組みだったのでしょうか。チャーチは、「ラムダ計算」という空想上の計算機を頭の中で考えた実は、みなさんはすでに「ラムダ計算」がどんな仕組みかを知っています。15ラムダ計算と弁当箱チャーチが考えた空想上の計算機「ラムダ計算」は、見た目は弁当箱とは違いますが、仕組みは同じでした。弁当箱と仕組みは同じたとえば、こちらが「ラムダ計算」の記述式です。左にある「λ」の記号はギリシャ文字で「ラムダ」と呼ぶことから、「ラムダ計算」と呼ばれています。C上のラムダ計算の記述式は、以下の弁当箱とまったく同じことを表しています。