世界最初のXXXを考案したのは誰か?

http://d.hatena.ne.jp/JavaBlack/20071116/p1#c1195927296
コメント欄での話より発展.

B言語のXXXという機能は,Aという言語で既に実現されていた.

という話があっても,多くの場合は(特にそれが2〜3年程度の僅差である場合は)それを証明するのは難しい.*1

  • 類似機能があっても,その類似機能がXXXで示されている目的や効力や使用法まで想定していたか:たとえば発電器に電流を流せばモーターになるとしても,発電器の発明者がそこまで想定していなければ,彼はモーターの発明者であるとは言えない.*2
  • 二つの類似した機能があって,その目的も類似していたとしても,それらが「同じ機能である」或いは「同じ機能でない」ことを判定するのが難しい.*3
  • 「思いついただけ」では発明ではない.
  • 物的証拠があるか:ある人が何年何月何日に思いついてそれを実装していたとしても,それを証明する証拠があるか.*4
  • 言語の公開された日が,言語の作られた日と同じではない*5.そもそも明確な公開日が無い場合もある.*6
  • 実装者がその技術の発案者と同じとは限らない.*7

この辺りの話は特許紛争の話を調べれば他にもイロイロと出てくると思います.特に「どこまで拡大解釈を許すべきか」というのは今も昔も大きな問題の一つです.

インターフェースについてですが、Objective-Cという言語がありまして、まあマイナーな言語なんでご存じないとは思いますが、これにJavaのインターフェースとおなじ機能が存在します。名前はインターフェースではなくプロトコルといいます。もともと分散オブジェクトのために追加された機能らしいです

これなんかは良い例ですが,言語機能としては(一見して)「同じ機能」であったとしても,それがはたして「同じ目的やプログラミングパラダイムまで想定していたか」という部分に疑問が残ります.これについてはマニュアルを調べてもおそらく出てこないでしょう.*8

Javaが誕生する数年前のことになりますね。

正確に言うと「Javaが公式発表される数年前」ということでしょうね.*9


そして,たとえば「エニアックが世界最初のコンピューターでない」と本気で主張したいのならば「誰がどうやってコンピュータを創ったのか?」くらいのことは調べて示す必要があります*10.私が根拠となる参考文献さえも示していない議論を眉唾物として切り捨てているのはそういうわけです.*11

誰がどうやってコンピュータを創ったのか?

誰がどうやってコンピュータを創ったのか?



あと,「推奨するプログラミングスタイル」と「言語機能としてある」ことは同じではありません.たとえば「Java Puzzlers 罠、落とし穴、コーナーケース」には,言語機能としては正しいけれど推奨されない書き方が詰まってます.

Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース


最後に,私は関連すること(たとえそれが賛成でも反対でも)をコメントに書くのも長文を書くのも禁止はしません.

しかし,ある程度議論を発展させる気があるならば,自分のブログに書いてトラックバックを送るなどする方が適切かと思います.そのためのブログでありトラックバック機能なのですから.

*1:特にAがマイナーな実験用言語である場合は大変だ.機能を閃いた時と,そのアイデアが固まった時と,それを実装した時と,公開された時が全部違っていたりする.その閃きも元を辿れば,どこかの誰かが発した,たわいのない一言がきっかけということもある.

*2:発明者に尋ねてみて「もちろん考えていたとも.」と言っても,もちろんそれを信用することは出来ない.莫大な利益のためならその程度の嘘を付くことなど簡単だし,本当の所は自分でも忘れたり勘違いしてるだけかもしれない.

*3:特にソフトウエア/アルゴリズム特許ではこの部分が非常に難しいことが,ソフトウエア特許が実用的でない/産業の発展に有害である理由の一つになっている.

*4:特に先発明主義を取る場合にこれが大きな問題になる.要は法的に効力のある研究ノートのコピーなどがあれば発明者になり得たらしいが,当然のこととして改竄されてないか等々で裁判が紛糾することになる.

*5:初期のJavaの開発が開始された日がいつかなど怪しいものだろう.たとえ記録に残っていても,おそらくそれはSUNの内部的なものでしかなく,法的効力を持つかは疑わしい.

*6:たとえば,仮にRubyをMatz氏が一人で作り,一般公開する前に守秘義務契約を交わしていない知人に少しずつ試してもらった場合など.無名のプログラマーが自分のプライベートなページからダウンロード可能にした場合は,公開した日は明確であってもそれを証明することは難しい.Web上のマニュアルやブログなども自在に変更(あえて改竄とは言わない)が可能だし実際に行われるものなので,物的証拠としては弱くなる.

*7:今だったら,「名も知れない2chの誰かの書き込みにヒントを得て作り始めた」ということさえ起こるかも知れない.そしてその場合,それを作った人が「このアイデアは私が一人で考えたものだ.」と主張するのは大いにあり得ることです.

*8:ちなみに呼び名については本質ではないので,「インターフェース」だろうが「プロトコル」だろうが特に問題なし.だからこそ探すのがなお一層大変なんだけど.

*9:Objective-Cよりヒントを得た」ということもあるかもしれないし,「他の全く別の機能からヒントを得た」ということもあるかもしれないし,「全く独自に閃いた」ということもあるかもしれない.

*10:そう言えばアラン=チューリングらが作ったbombeも,長い間非公開だったっけ?

*11:それにイチイチ調べるのが面倒だし.