[OOP]「世界最初のInterfaceを作ったのはJavaだ」は真か?

http://d.hatena.ne.jp/minekoa/20071125/1195991187

こんな風に無理に一般化して正当性を説こうとするのではなくて、

無理にではなく,これが普通の話なんです.*1

正直に 世界最初の Interface を考案したのは Java だ! と題して、それの根拠を答えてくれたほうがよっぽど読み応えがあってよいと思います。

それを証明するのは,「Java以前にInterfaceを考案した言語が存在しない」ことを証明すればいいわけですよね.でもそれって悪魔の証明って言いません?*2
しかもプログラミング言語は一人でプライベートで開発することができるので,マイナーな実験用言語も無数にあり,それらを全て網羅するのは非常に難しいのです.*3しかも単に「言語の概要を知っている」というレベルではなく,言語仕様から設計思想やプログラミングスタイルまで熟知していないと判定できないので,非常に手間がかかります.プログラミング言語*4を専門にしていない限りは,手を出すのはほとんど無理だと思います.

Java以前にも Class と 継承の インターフェイス的使い方はあったと思うし、だからいろんな言語が実装していても不思議ではないと思っています。

これはYESだと思います.

ただし,「インターフェース的使い方があった」ことと,「インターフェースが(機能として)あった」こととは別問題です.C言語でもオブジェクト指向的な実装は可能であったけれど,C言語オブジェクト指向言語ではないように.

COM周りではこんな話もあるみたいです(勉強になるなぁ)

これってむしろ「その類似機能(COM)がJavaのインターフェースで示されている目的や効力や使用法まで想定していたか」の問題な気がします.

今見ると似たような機能に見えるかもしれないけれど,『偶然』機能や見た目が似ていただけで,目的や用途が異なる全く別の機能だったと.後から「いや自分は当時からこうなることを予想していた」と言うのは簡単なんですよ.

*1:実際に特許明細書を提出する時の難しい問題の一つが,先行発明を調査することだったりする.もし同じ分野の先行発明があった場合は自分の出した明細書が完全に無効になってしまうのだが,実際には先行発明を完全に調査することは非常に難しい.

*2:仮に「JavaC++Objective-CSmalltalkRubyPythonEiffelの中で〜」のような形で制限を加えれば,この問題は遙かに簡単になる.しかし,たったこれだけの言語でさえも,それを全部,歴史的背景も含めて熟知している人が一体どれだけいるだろう?

*3:人工衛星を最初に打ち上げた国はどこか?」や「核実験をした国は」なら,国家プロジェクトでなければ実現できなかったし,一度打ち上げたり核実験を行えば世界中が知るところになるから分かりやすい.「世界最初のコンピューターを作ったのは誰だ?」なら,Bombeのような極秘プロジェクトや,FUJICのような(比較的)小規模なプロジェクトで開発されることもある.「KYを『空気読め』の意味で最初に使ったのは誰か?」は誰でも言えるし広まらないのが普通なので,最初に言ったのが誰であるかを知るのは非常に難しい.

*4:そういうものがあればの話だが.