CLU をデザインするときに、あなたは SIMULA を知っていましたか? プログラムは組みましたか?

抽象データ型と言えば、バーバラ・リスコフの CLU、ということで、mizu さんのコメントにからめて「History of Programming Languages - II」の「A History of CLU (PDF)」を含む CLU のセッションの章などをつらつらと 読んで 眺めて(^_^;) おりました。残念ながら、変数の型については、よくある安全性の話だけで、抽象データ型との関係に触れた話は見あたらなかった (CLU は、このあたりの仕様については LISP の影響を受けていて、そもそも変数には型がない… orz) のですが、同書編纂のきっかけになった学会でのリスコフの発表内容のところに、表題の質問を見つけてちょっと喜んだりしていました。抽象データ型と CLU のことを知ってからまさにこの疑問をずっと抱いていたものですから…。

結局、リスコフの回答としては「SIMULA は本を通じて知っていた程度で、実際に処理系を使用した経験はない。」とのことです。ただし、CLU のたたき台になったのは明らかに SIMULA であった、とも述べています。ちょっと面白かったのは、この質問をしたのが、ビアルネ・ストラウストラップだったこと。やはり同じ SIMULA を参考に C++ を設計し、のちに「オブジェクト指向プログラミングは、抽象データ型のスーパーセット(つまり、カプセル化 + 継承、多態性)」と言った彼からこんな質問が出るのは、すごくぴったりはまっていて、それでいて(おそらく、10年近くこの疑問を放置していたであろうことが)少々間の抜けた感じもして、笑えました。しかしあらためてこの本。知恵が付いて、目が慣れてくると、どんどん面白くなりますね。あとこれに、SIMULA と Objective-C のセッションがあったら完璧だったのですが…。