「ちょっと成り行きで気になって考えてみた」
「C言語とC#はどちらが古いか? それはC言語の方が古いに決まってるじゃないか」
「なぜ?」
「C言語って、1972年にAT&Tベル研究所で産まれたんだろ? C#が最初に出てきたのは2000年ぐらいだろ?」
「それは単純に名前の問題で、中身の問題ではない。たとえば、豊臣秀吉は木下藤吉郎だが、別人というわけではない。思想的な影響を強く引き継いでいたら、それは直系の祖先を見なしうるだろう。名前は様々な理由で変更されるものだから、名前を無視して直系の祖先を辿っていこう」
「えー」
C#を辿る §
「C#にもっとも強く影響を与えているのはおそらくDelphi」
「アンダース・ヘルスバーグがC#の前に作った言語だね」
「DelphiのルーツはTurbo Pascalになる」
「それもアンダース・ヘルスバーグの処理系だね」
「しかし、Turbo Pascalは基本的に言語の処理系であり、言語としてはPascalだ」
「うん。ニクラウス・ヴィルトの言語だね」
「嘘か本当か知らないが、Pascalは入出力すら無い純粋すぎるALGOLに実用性を付与した言語と言われている。まあ、ALGOLの強い影響下にあることは確かだろう」
「ALGOL?」
「今では使っている人はほとんど居ない遠い昔の画期的な高級言語だ」
「では、ALGOLが事実上の始祖であり、それ以上は辿れない?」
「そういう認識で良さそうだ」
C言語を辿る §
「C言語の前はB言語。その前はBCPL。ここまでは比較的名前が良く知られている」
「うん。Cの教科書にはたいてい書いてあるね」
「その先に、更にCPLという言語があるようだ」
「CPLって聞かないね」
「WikiPediaによると『CPLはケンブリッジ大学の数学研究所とロンドン大学コンピュータ部の共同プロジェクトとして1960年代に開発された』だそうだ。しかし、『CPLは当時のコンピュータが非力でコンパイラ技術も未熟であったことを明白にした。実用的なCPLコンパイラは恐らく1970年頃に作られたが、全く普及することなく、1970年代に自然消滅した』とも書いてある」
「えー」
「以下の説明からおおむね傾向は分かる」
ALGOL 60の影響を強く受けていたが、ALGOLがコンパクトでエレガントでシンプルであったのに対し、CPLは巨大で、それなりにエレガントで、複雑だった。CPLは(FORTRANやALGOL方式の)科学的プログラミングと、(COBOL方式の)商用プログラミングの両方で優れていることを目指していた。同様の努力はPL/Iでも見られた。
「つまり、PL/Iと似ている傾向の言語というわけだね」
「だから、CPLとはPL/Iよりもっと失敗したPL/Iみたいなもの、と見るべきなのだろう」
「ところで、ここでまたALGOLの名前が出てきたよ」
「その通り。『ALGOL 60の影響を強く受けていた』と書かれている以上、CPLの祖先もまたALGOLと見なすべきだろう」
「えー」
まとめ §
「というわけで、どちらの歴史を辿っても最終的にALGOLに行き着くことが分かった」
「ALGOL偉い。ALGOL凄いぞ」
「使ったことはないけどな」
「ぎゃふん」
「というわけで、『C言語とC#はどちらが古いか』という問いかけの答えが出た。最終的に共通の祖先に行き着く以上、思想の系譜の歴史という意味での古さに差は無い。どちらも同程度に古い」