プログラムを哲学する 0. プログラムと哲学の関係

僕は、プログラムを哲学したい。その動機のひとつに、用語の統一がある。現状、プログラムにおいて使われる用語は、対象言語によって色々と異なってしまっている。たとえば、似たような概念に、あるプログラム言語ではポインターという用語を使い、別の言語ではリファレンスという用語を使うといった場合がある。インターフェースとトレイトは同じなのかどうか。クラスと型クラスはどうか。同じ概念に違う名前を付けていたり、違う概念に同じ名前を付けていたりするので、混乱が甚だしい。

このような用語の混乱の下では、その場その場でアドホックに用語を定義し直すしかないが、そうすると他の場面で使われた用語との関係性がよく分からなくなってしまう。プログラムを哲学することで、このようなバベル的混乱の状況を変えられるのではないかと思っている。

動機のもうひとつは、プログラムするという行為の実態をより明確に捉えたいということだ。今日プログラミング教育の必要性が主張されているが、プログラムを教えるとはその実何を教えることになるのかについて、意識を深めたい。「プログラムする」というのは、単に機械に指令を与えるということなのだろうか? プログラミング教育は、単に技術者不足を解消するために行うものであるべきなのだろうか? そのようなことを考えたいのだ。

歴史を辿れば、計算機科学、数学、論理学、分析哲学言語学という諸分野は、19世紀末における現代論理学の創始というイベントで交叉する。各分野にまたがって、フレーゲ、ラッセル、クワインといった名前や、各種共通する用語を目にすることができる。

しかし、今日では各分野に分化してしまった。ちゃんと情報だとか計算機に関する哲学をやっている人間も存在しているのだろうけれども、そういう分野をフォローしている人間は、計算機を単に工学の対象として解説する読み物に比べると、哲学的観点も絡めて語っているものは少ないように思う。

この連載(になる予定)では、まず分析哲学の黎明期における関係性を探ってみたいと思う。