プログラミングと哲学の最大の接点、記号論理学から計算科学へ──フレーゲ、ラッセル、チューリング

哲学の一分野である論理学の歴史はとても古く、紀元前4世紀のアリストテレスまでさかのぼりますが、19世紀後半に登場したフレーゲをはじめとした記号論理学の登場こそ、ここから計算科学が産み出されていったという意味で、哲学とプログラミングの最大の接点と言えます。もちろん、今でも記号論理学の考え方はプログラミングに活かされています。

これまでの【哲学とプログラミング】はこちら

論理学と数学

哲学にもいろいろな内容が含まれています。すべてがプログラミングとつながっているわけではありません。非常に大雑把に言えば、哲学とプログラミングの接点は「論理学」にあります

古代ギリシアの哲学者アリストテレスは、当連載第3回目で説明した通り、紀元前4世紀に論理学を体系化しました。三段論法など、今でも用いられているものもあり、とてもしっかりとしていました。その後、10世紀以上にわたってアリストテレスの論理学はイスラム圏も含めて広く用いられ続けます。

しかし、彼の論理学は、あくまでも「推論」のパターンを抽出するところまでしか実行していませんでした。「推論」は、計算や数学とは完全に異なるものとしてとらえられていたのです。それ以降も、たとえば、19世紀初頭の、近代哲学の最高峰と言われるドイツの哲学者ヘーゲルにおいても、「論理学」は言葉の定義やカテゴリー分けなどが主な内容となっており、数式も計算も出てきません。

その後、中世のあいだも、そのままアリストテレスの論理学が力を持ち続けました。唯一と言ってよいほど例外なのは、連載第6回目に登場したライプニッツです。もちろん彼はその中身を十分に体系化したわけではありませんが、少なくとも「記号化」の先鞭をつけた人物であることには変わりありません。

そもそも数学でさえ、記号や数式の使用が一般化したのは、16世紀のことです。フランスの法律家であり数学者でもあったヴィエトが未知数のみならず、既知数を文字で表したことにはじまります。つまり具体的な数字の代わりに、どのような数字でも入れられるような「記号」を用いて計算式をつくったのです。それは「論理式」と呼ばれました。そして、最終的に今の方程式のような文字式は、連載第4回で登場したデカルトによって整備されます。

さらに、これも数学の領域の話ですが、19世紀半ばにはブールが代数についての基礎を編み出します。その著作のタイトルは「思考法則入門」で、これまでの論理学とは違う意味あいで、「思考法則」を見出そうとしました。ほか、同時代のド・モルガンも「推論の計算」として「形式論理学」を構築し、そのなかで、後に集合論にもかかわってくる「ド・モルガンの法則」を見つけだしました。

また、19世紀後半にカントールが集合論を数学に持ち込みました。その結果、これまで見逃されてきた論理の矛盾やパラドックスが発見されます。とくに英国貴族にして哲学者であるラッセルが指摘したパラドックスはよく知られています。仮に「自分自身を含まない集合」を考えた場合、「自分自身」はその集合に含まれていないはずなのに、同時に、その集合に含まれることにもなってしまうというものです。ラッセルはそこで、命題にタイプを設定(レベル分け)し、タイプ(レベル)の異なる命題間で相互に参照することを禁じることにしました。これを「タイプ理論」と言います。

記号論理学の誕生

大きな転換期は19世紀末に登場したフレーゲによる記号論理学です。彼は、著作「算術の基本法則」で「概念記法」という考え方を提示し、論理学の記号化や抽象化を行い、あらためて数学の基礎付けを行いました。実数や関数を概念的に分析し、新たに数学記号を作り出し、数学的に論理を説明したのです。

フレーゲは、それまで2000年にわたって継承されてきたアリストテレスの論理学を記号論理学に変えたことになります。文章を恣意的に持ちだして真か偽かを問うものから、「量子化(クオンタイズ)」そして「変項(および関数)(ファンクション)」という数学的方法論を導入することによって、命題の内容をシステマティックに考えることができるようになりました。

普段使っている言葉はつきつめると「不完全」なものであり、こうした言葉に頼っていると、どう頑張っても数学や論理の足元が崩れてしまうということが、ここにきてはっきりしたわけです。そこで、「記号」という言語とは異なるものを使えば、数学や論理の説明がしっかりとできるととらえられたのです。

こうしたフレーゲの考え方がラッセルに継承されます。ラッセルは、師ホワイトヘッドとともに「数学原理」を著し、数学の全体を記号論理学へと組み込みます。そればかりか、哲学も従来のやり方に疑問符がつけられます。

なかでも「記述理論」を提示したことが知られています。「現在のフランスの国王は禿である」という文は、フランスが王国でもないのに「現在のフランスの国王」という実際には存在しないものを主語としています。ラッセル以前の論理学においては、この主語と述語である「禿である」の結びつきのみを見ようとするので、真偽を問うことができませんでした。しかしラッセルは、この主語を

と主語にある内容を細分化させて、最初の文が偽であるために、この文全体も偽となるという説明を行いました。

記号論理学から計算科学へ

こうして、哲学の問題は、日常用いられている言葉を使っているかぎりは、あいまいなままであることが明らかになりました。そして、まず、記号化された論理言語に置き換えるという作業を行い、問題の根本にある真の論理形式を明らかにすることが求められるようになりました。そうすることによって、これまでの哲学がかかえていた欠点の大半は解消されると考えたわけです。こうした立場は「論理主義」として以降、大きな潮流となってゆきます。

また、数学のほうでは、一度ヒルベルトが証明を形式化することによって完全性と無矛盾性をはっきりと示そうと数学者たちに呼びかけるのですが、ゲーデルが不完全性定理を打ち出し、そもそも数学においては完全性と無矛盾性は並列に置くことができず、矛盾がなくても真か偽か決定できないことがあるとしたため、騒然となります。しかし、ここがおもしろいところですが、数学が完全ではないと言い切られてしまうことによって、むしろ、より合理的なものにしようという挑戦がはじまります

つまり、最初から完全なる世界があるのではなく、完全なる世界を目指す試みが数学なのだ、ということに気づいたわけです。

こうした議論の延長線上で、コンピューターのプログラミングが生まれます。ゲーデルの議論に対して反応したのは、チューリングです。「チューリング機械」と呼ばれる仮想的な機械の概念をここで持ち出しますが、これはその後に出現する計算機の概念を先取りするものでした。この機械では答えの出せない(「計算不可能」な)問題の存在を示すことによって, 入力内容に対して「はい」か「いいえ」を出力するような決定問題に対して否定的な解決を与えました。

その後も記号論理学と計算科学は、さまざまな形で影響を及ぼしあっていきます。

プログラムの意味を論じる「プログラム意味論」や、プログラムの正しさを検証する 「プログラム検証論」では、記号論理学の考え方や方法がその基礎にあります。また,プログラミングパラダイムの一つである「論理プログラミング」は文字通り記号論理学の応用です。

哲学とプログラミングの関係は、今後も続くことでしょう。しかも、ベーシックなところだけではなく、量子コンピューターや人工知能(深層学習)など、より現実や人間の心の状態に近い部分で深いかかわりをもってゆくことでしょう。

フレーゲ Gottlob Frege 1848-1925

  • プログラミング言語がつくられるうえで、大きな役割をはたした
  • 元々は数学者だったが、これまでの哲学を大きく変えた
  • 「分析哲学」(記号論理学)を新たに創出し、哲学を数学化した
  • 日常使っている言葉ではなく、人工的に「概念記法」を生み出した

ラッセル Bertrand Russell 18720-1970

  • 英国貴族にして、ノーベル文学賞受賞者、4度の結婚、平和反戦活動も活発だった
  • 日本に訪問したこともあり、和辻哲郎や与謝野晶子などと会った
  • フレーゲの論理学の矛盾を指摘し、タイプ理論を展開した
  • 記号論理学を深め、数学は論理学的概念に還元できるとした

チューリング Alan Turing 1912-1954

  • ラッセルの哲学を継承し、さらに哲学の数学化を進めた
  • 第二次世界大戦では英国軍で暗号解読の仕事に従事
  • コンピュータの基礎となる部分を理論化した
  • 当時の法律により同性愛者であることを裁かれた

これまでの【哲学とプログラミング】はこちら

哲学から学ぶプログラミング - バレッド(VALED PRESS)

© Valed.press