2014年05月19日の日記です


ジェームズ・ゴスリングの誕生日  2014-05-19 11:56:16  コンピュータ 今日は何の日

今日はジェームズ・ゴスリングの誕生日(1955)。


…僕、この人余り好きではない。でも、有名人なのは確かだし、すごいプログラマなのも事実。


凄腕は事実なのだけど、実際以上に自分を大きく、偉く見せようと虚勢を張る癖がある、ように思える。

ここが好きでない部分。




彼の最初の業績として知られているのは、Emacs を作ったことだ。

彼は、自分で「世界的に知られるエディタ、Emacs を作った」と言っている。


彼の言葉に嘘は無い。世界的に知られるエディタ、Emacs のクローンを作ったことがある。

これは「ゴスリングEmacs」としてそれなりに有名だが、数あるクローンの一種であり、ゴスリングEmacsが世界的に有名なわけではない。


…これだけだと大嘘つきみたいだ。

公平を期すためにも、もう少し詳細を書こう。



Emacs とは、Editing Macros の略で、エディタ用のマクロ集だった。

PDP-6 には TECO というラインエディタがあったのだけど、これがえらく使いにくいものだった。


ただし、TECO には独自の簡易言語が搭載されていて、マクロ・プログラムを組むことができた。

そこで、TECO をマクロによって「改造」して、使いやすいエディタを作るのが流行した。

その決定版ともいえるものが、後に GNU を創始する、リチャード・ストールマンが作った Emacs だった。



Emacs はマクロ集に過ぎなかったため、Emacs をベースにして、より便利な機能を組み込むものも多かった。

ここで、ストールマンは Emacs の配布に際して、「改良は、皆に共有されるために、公開されなくてはならない」という配布条件を付けた。


この配布条件が後の GNU に育つのだが、それはまた別の話。




ところで、TECO は PDP の OS 上でしか動かず、Emacs はその TECO の上でしか動かない。

Emacs を使い慣れたものは、同じ操作で使えるエディタを、別の OS 上でも欲しがった。


そこで、ゴスリングが UNIX 上でゴスリング Emacs を作った。

TECO の独自簡易言語は使いにくかったので、Lisp 風の…似ているだけで Lispではない…言語でマクロを組めた。

そして、そのマクロを使って、オリジナル Emacs とほぼ同じ動作ができた。


ゴスリングは、このソフトを独占した。

Emacs を「改良した」にもかかわらず、バイナリの配布のみで、プログラムのソースを公開しなかったのだ。



たしかに、マクロ集の元となる言語も違うし、すでに全く違うものなのだろう。公開義務はない、ともいえる。

しかし、それなら Emacs を名乗らなければよい。すくなくとも、ストールマンはそう思ったはずだ。



そして、ストールマンは、UNIX 上に GNU Emacs を作った。

ゴスリングの Emacs とは違い、本物の Lisp を搭載し、その Lisp でマクロを組めるようにした。


実は、ベースはどうにか入手したゴスリングの Emacs なのだが、すべてのソースを書き変え、完全に違うものにして、「公開」した。

これによって、Emacs の改良は公開されなくてはならない、という原則は守られ、PDP 以外でも動く Emacs が誕生した。




…あぁ、いかん。Emacs の話ではなくて、ゴスリングの話だ。彼の話に戻ろう。


ゴスリングは後に Sun に入社し、Java を作っている。


彼は Java を作ったので「Java の神様」と言われているのだが、プログラムをしただけだ。


プログラムをしながらより良い仕様を詰めていく、という当たり前の開発プロセスを辿っているし、その最中に彼もアイディアを出していると思われる。

だからただのコーダー(仕様通りにプログラムを作る人)と言うわけではない。


でも、Java の基本的なアイディアはパトリック・ノートンが生み出したものだ。

彼は Sun が「大企業病で死にかかっている」と感じて、それを理由に退社しようとした。


しかし、同じことを感じていた上司に、辞めるなら思い切って Sun の悪いところを書きだしてくれないかと頼まれる。

ノートンは思い切り悪口を書くが、そこまで Sun の悪い部分を知っているのであれば、Sun を変えるためにもう一頑張りしてもらえないか、と慰留される。


慰留条件として、ノートンは Sun の他の部署や重役から干渉されない、独立部署を任された。

ここで、従来の Sun では作り出せない、新しい製品を作り出せれば、Sun は生まれ変われるかもしれない。



この頃の Sun は、企業向けのサーバーシステムなどを売っていた。

しかし、コンピューターの利用はもっと広まる、家庭用などにまだまだ売り込める、とノートンは思っていたので、家庭でも使えるコンピューターを作る。


ターゲットは、テレビに接続できて、コンピューターだと意識せずに使える機械…いわゆるセットトップボックスだった。

この頃、セットトップボックス、という概念が流行し、多くの会社が開発を行っていた。



ところで、ノートンは「大企業病となった Sun を壊す」つもりでプロジェクトに取り組んでいた。

当面は、使いやすい Sun の技術を使うが、Sun の技術に依存するつもりはなかった。


技術はいつか普遍化する。

当時の Sun は UNIX の世界で絶対的な信頼を持っていたが、すでに「無料の UNIX」が世に出始めていた。


これらが普及した時、Sun の技術は陳腐化し、誰も見向きもしなくなるだろう、とノートンは思っていた。



彼は、セットトップボックスの「標準仕様」を作ろうとした。これは Sun の技術とは無関係で、仕様に基づいていれば、どの会社がハードウェアを作ってもよい、とするつもりだった。


各社が技術を凝らし、独創的なハードを作れるようにする必要がある。

競争の中で勝敗はあるだろうが、その標準に参加する企業は、Sun にライセンス料を払う必要がある。


これならば、技術が陳腐化することは無く、安定した収入を得ることができる。




独創的なハードを作れるようにする、というのは、CPU 選定すら自由であることを意味する。

でも、標準仕様としては、CPU が変わっても同じプログラムが動くことを保証しなくてはならなかった。


ここで、CPU を問わずに使える言語が必要となった。



ゴスリングは、過去に Pascal の処理系を作ったことがあった。

Pascal は教育用の言語で、特定のマシンに依存しない。どんな CPU でも動くように、仮想的な CPU の仕様が定められていて、言語はその CPU 用のコードを生成する。


各 CPU に、仮想 CPU のコードを実行できる小さな環境(仮想機械)を作ってやる必要はあるが、仮想機械さえあれば、どこでコンパイルされたプログラムでも、他の CPU で動かすことができた。


しかし、Pascal は教育目的であったため、実用には少し使いにくい点もあったし、何よりもすでに古い言語だった。


そこで、C++ をベースとして言語設計をすることになったが、C++ もまた、オブジェクト指向の「実験」として拡張されてきた歴史があるため、わかりやすい言語ではない。

もっとすっきりとした、わかりやすい言語が必要だった。


また、「コンピューター」ではなく、家電として扱うためには、使用するメモリを出来るだけ小さくする必要があった。



これらの要件を満たすべく設計されたのが oak 言語で、この仕様策定にゴスリングは関わっている。


…でも、oak なんて言語聞いたことがない、という人が多いだろう。

このプロジェクトは、事実上失敗に終わったのだ。




しかし、それで終わりではなかった。

新たに Sun に入社したマネージャー、キム・ポレーゼは、すでに失敗に終わったこのプロジェクトを再発見した。


すでに他の会社もセットトップボックスは発売しており、全然売れなかった。

業界全体で、この道は失敗だった、という認識が広がっていた。


そこで、ポレーゼは「セットトップボックスの標準」という商売は捨てるが、ソフトウェア部分である oak 言語にはまだ道がある、と感じた。

ライセンスで商売をしよう、という考えの中では、セットトップボックスは実は重要ではなく、この言語こそが重要であると考えたのだ。



丁度、WEB が流行し始めたところだった。

「違う CPU でも動く」という特徴を活かし、インターネット時代の言語として再デビューさせることになった。



ここで oak は Java と名前を変える。そして、キラーアプリとして「HotJava」というWEB ブラウザが作られた。


HotJava は Java で作られており、Java のプログラムをネットからダウンロードして動かせる。

それだけでなく、Java で書かれたプラグインによってブラウザの機能を拡張することもでき、変化の速いコンピューター業界でも常に最新のブラウザでいられる、と言うものだった。


#当時、ブラウザは Mosaic か Netscape くらいしかなかった。

 そして、ブラウザのプラグインの概念は HotJava が初めて作り出したものだった。



キム・ポレーゼは宣伝の才能があり、Java は注目の言語となった。

しかし、良い状況のままずっと続いてきたわけではない。



Java は最初のライブラリセットの設計がよくなくて、後からライブラリの仕様が変わったりした。

すると、それまでのプログラムが動かなくなる。CPU が変わっても大丈夫、と宣伝していたのが、ライブラリバージョンが変わっただけで動かなくなるのだ。


ここら辺、明らかに設計がまずかった。

いろいろと問題が多く、「どこでも動く」と言われた Java のプログラムは、現実的には苦労して保守し続けないと、すぐに動かなくなる。


でも死んでしまったわけではなく、いまでも Android では使われ続けているし、結構成功した方だろうと思う。



#Android で使われる、と書くと「あれは Java ではない」といわれそうだけど、その話は今は関係ないので割愛。

 言語と CPUアーキテクチャは無関係なので、僕は「Android は Java で書く」と言っている。




また話が横道に入ってしまったが、ジェームズ・ゴスリングは、ゴスリングEmacs を作り、Java の元となった oak の仕様策定に参加し、その処理系を作り上げた。



でも、Emacs を有名にしたのは GNU Emacs だし、oak は失敗だったが Java として生まれ変わった。


GNU Emacs はゴスリングの「汚いやり方」に反発して作られている。

oak だって目標を設定したのはパトリック・ノートンで、その目標設定が上手だったからキム・ポレーゼが再発見し、Java と名前を変えて宣伝したから流行したのだ。


どちらも、ゴスリングの力ではない。


でも、ゴスリングはこれらを自分の手柄のように話をする。

実際、やり方が汚かろうと Emacs を最初に C に移植したし、全く新たな Java 処理系をプログラムして作り上げた。

実力は相当なものだろう。


…でも、僕としては、どうも好きになれないんだな。






同じテーマの日記(最近の一覧)

コンピュータ

今日は何の日

関連ページ

タネンバウム教授(1944) ストールマン(1953) 誕生日【日記 17/03/16】

キム・ポレーゼの誕生日(1961)【日記 14/11/13】

キム・ポレーゼの誕生日(1961)【日記 14/11/13】

別年同日の日記

10年 忙しかった

13年 鶏足

16年 大川功 誕生日(1926)


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

7001

-- follow --




- Reverse Link -