2009年4月26日日曜日

Guido自伝 - 第一部, CWI

原文:http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html
原文投稿者:Guido van Rossum

Pythonの初期の開発は、CWIと呼ばれる、オランダのアムステルダムにある研究施設で始まった。CWIはオランダ語の単語の頭文字を集めたもので、訳すとすれば、「数学&コンピュータ科学センター」ということになる。CWIはオランダの教育省と、他の研究の助成金によって運営されていて、アカデミックなレベルでコンピュータサイエンスと数学を研究する、とても面白い場所である。研究をしている多くの博士課程の学生と、「数学センター」というオリジナルの名前をいまだに覚えているOBの職業の専門家がいつでもそこに在籍している。当時の組織名はAlgol 68の開発で良く知られていた思う。

私は大学を卒業した1982年の後半からCWIで働き始めた。Lambert Meertens氏Steven Pemberton氏が率いていた、ABCグループにプログラマとして入った。4~5年後にめざましい成功を収めることなくABCプロジェクトが中断されてしまった後は、Sape Mullender氏が率いていたCWIのAmoebaグループに異動となった。Amoebaというのは、マイクロカーネルベースの分散システムで、大学教授のAndrew Tanenbaum氏がリーダーとなって、CWIとアムステルダム自由大学が共同で開発を行っていたプロジェクトである。1991年、Sape氏がトゥエンテ大学の教授になるためにCWIを離れると、Dick Bulterman氏が率いる、新しくできたCWIマルチメディアグループに最終的に落ち着いた。

PythonはCWIにおける私のすべての経験から生み出されたものである。今振り返ってみると、ABCのプロジェクトはPythonのキーとなるインスピレーションを、Amoebaプロジェクトでは開発に直結する大切なモチベーションを与えてくれた。マルチメディアグループではそれらをさらに成長させてくれた。しかし、私の知る限り、CWIではPythonの開発に対して公式に予算が計上されることはなかった。しかし、Pythonは、Amoebaとマルチメディアグループの両方の中で重要なツールとして使用され、発展していった。

私がPythonを作成する最初のモチベーションとなったのは、Amoebaプロジェクトの中で高次元の言語が必要とされているという認識からであった。システム管理ユーティリティの開発をC言語で行うと、時間がとてもかかることを実感していた。それに加えて、これらをBourneシェルでこれらの開発を行うとしたが、様々な理由からうまくいかなかった。もっとも重大な理由の一つは、Amoebaが根本から新しい概念の分散マイクロカーネルシステムであったため、Amoebaのプリミティブなオペレーションは、Bourne shell上で行える伝統的なプリミティブなオペレーションと大きく異なっている(Amoebaの方が粒度が細かい)。そのため、「C言語とシェルスクリプトの間のギャップを橋渡しをする」ことができる言語のニーズがあったのである。これはしばらくの間、Pythonを紹介するときによく使われるキャッチフレーズとなった。

この点に関して、「なぜ既存の言語を移植しなかったのか?」と疑問をもたれる思う。しかし、私の視点からは、この目標に合致する言語は、当時はそれほど多くはなかったように見えた。私はPerl3には慣れ親しんでいたが、Bourneシェル以上にUNIXの環境と結びついていた。また、私がPerlの文法を好きになれなかったのも理由のひとつである。プログラミング言語の文法に関して、私に強く影響を与えた言語はAlgol60, Pascal, Algol68などの言語である。これらの言語はすべて、私がその時に学んできたものである。そして、私の人生の4年間という期間を費やしてきたABCの影響も無視はできない。そのため、これはいいと私が思ったABCの要素はすべて取り込んだオリジナルの言語を設計したいと思っていた。同時に、私が気づいたABCの欠点もすべて修正したいと思った。

私が最初に修正しようとした問題は、プログラミング言語の名前であった。実際の所、ABCチームは言語の名前選びで苦労をした。当初ついていた言語名は"B"であったが、もっと古くて有名な他の同名のプログラミング言語のBがあり、まぎらわしかったために使えなくなってしまったのである。また、別の理由として、Bという名前が作業中の名前である、という意味あいもあった。これは、Bというのは言語名を入れる変数の名前であるというジョークであった(そのため、この記事の中ではイタリックにしてある)。ABCチームは、新しい名前を命名する公開コンテストを実施した。しかし、合格ラインを超えた応募はなく、結局予備のためにチーム内で用意していた候補から選ばれることとなった。プログラミングを「ABCと同じぐらい簡単にする」という意味を込めた名前であったが、私から見ても、多くの点で有名無実であると思ったものである。

そのようなことがあったため、命名に関しては、考えすぎた名前をつけるよりも、あまり考えないで行った方が良さそうだと考えた。私は最初に心に思い浮かんだものから名前を取った。それは私が好きなコメディグループ「空飛ぶモンティ・パイソン」からの発想だった。そもそもPythonの開発は正規のプロジェクトではなくて、こっそりと行われる"スカンクワークスプロジェクト"であったため、コメディから名前を取るぐらいの悪ふざけさ加減がちょうどいいと思ったのである。"Python"という言葉は覚えやすく、多少粋な感じであったし、プログラミング言語の名前は人物から付けるという伝統(Pascal, Ada, Eiffel)にも合っている。モンティ・パイソンチームは科学技術の分野の進歩に貢献したという名声を得てはいないと思うが、ギークが喜んでくれるものを提供できたと思う。CWIのAmoebaグループもTV番組の名前にちなんだプログラム名をつける伝統があったので、Pythonという名前はこれともフィットしている。

このように決めた名前であったので、私は何年もの間、Pythonという名前と蛇とを結びつけようという活動には抵抗をしてきた。しかし、オライリーが最初のPythonの書籍「Pythonプログラミング」の表紙に蛇のイラストを描こうとしたときに、この抵抗をあきらめることにした。動物の絵を使用するのがオライリーの伝統であったが、もし動物でなければならないのであれば、蛇であってもいいのではないかと思ったのである。

名前の問題が決着し、私がPythonの開発業務を開始したのは1989年の12月の末頃であった。1990年の最初の月には動作可能なバージョンができあがった。この作業のメモは残していないが、"pgen"と呼んでいたシンプルなLL(1)パーサジェネレータの実装からPythonを書き始めたのを鮮明に覚えている。このパーサジェネレータは現在でもPythonのソースコード実装の一部として含まれているし、すべてのコードの中ではあまり変更されていない部分であると思う。1990年にはCWIの何人かのメンバーが初期バージョンのPythonを使用し始めた。Amoebaグループ以外の人も使用した。同僚でもあるプログラマーのSjoerd Mullender氏(Sape氏の弟である)と、私がCWIを離れた後も何年もMacintoshへの移植のリードプログラマーを引き受けてくれることになるJack Jansen氏の2名が、私と一緒に開発に携わった主要な開発者である。

1991年2月20日に、私はalt.sourcesニュースグループ上で、世界に向けてPythonを初めて公開した。21分割されたuuencodeされたファイルを結合し、uudecodeをするとtarファイルが作成できるというものであった。この時のバージョンは0.9.0と付けられ、X11プロジェクトが使用していた、MITライセンスの亜種のライセンスの元に公開された。法的に責任を持てる団体として、CWIの親会社である"Stichting Mathematisch Centrum"の名前で公開された。それまで私が作成してきたプログラム同様、PythonもまたEric Raymond氏Bruce Perens氏が1997年の終わり頃にオープンソースという用語を作り出す以前から、オープンソースであった。

公開するとすぐに多くのフィードバックがあった。これに励まされるようにして、これから何年もの間に一定のペースで次々とリリースを行った。ソースコードの変更を記録するのと、Sjoerd氏、Jack氏とコードの責任を共有するためにCVSを使用し始めた。偶然にも、Pythonと同様にCVSも、ABCグループの初期メンバーであるDick Grune氏によってシェルスクリプト集として開発されていた。当時はWebはまだなかったが、私はFAQを書き、当時のFAQの慣習に従っていくつかのニュースグループに定期的にポストしていた。メーリングリストも開始した。1993年の3月にはうれしいことに、私が直接関与しないかたちでcomp.lang.pythonニュースグループが作成された。ニュースグループとメーリングリストは、現在でも稼働している双方向のゲートウェイを通じて統合された。当時大きなシェアを持っていたオープンソースのメーリングリスト管理システムのmailmanにはこのような機能はなかったため、このゲートウェイはPythonで作成された。

1994年の夏に、ニュースグループ上で「もしGuido氏がバスに轢かれたら?」というタイトルのスレッドがニュースグループをにぎわした。これは私個人の貢献に、Pythonのコミュニティの成長が依存していたというのが発端である。この結果として、Michael McLay氏から招待を受けて、2ヶ月間、客員研究者としてNIST(アメリカ国立標準技術研究所)に行くことになった。NIST(wikipedia)はメリーランド州のゲーサーズバーグにあり、以前は国立標準局と呼ばれていた。Michael氏はNIST内に、多くのPythonに興味を持つ「顧客」を持っていた。彼らは標準化に関するさまざまなプロジェクトにPythonを使用したいと考えていた。Micheal氏は私が彼らのPythonのスキルアップの手助けに必要であるという目的で、私の滞在費の予算を確保してくれた。可能であれば彼らのニーズに従ってPythonを改善するというのもその目的に含まれていた。

1994の11月、私がNISTの滞在中に、NISTのプログラマのKen Manheimer氏の多大な援助と励ましによって、最初のPythonワークショップが開催された。およそ20名の参加者がいたが、そのうちの半数は現在もPythonのコミュニティ活動にアクティブに参加している。何人かのメンバーはオープンソースプロジェクトのリーダーになっている(ZopeJim Fulton氏と、GNU mailmanBarry Warsaw氏)。NISTのサポートにより、サンタフェで開催されたUsenix Little Languagesカンファレンスで、400人もの人の前でキーノートを発表することもできた。このカンファレンスを主催したTom Christiansen氏は、気さくなPerl支持者であり、Perl作者のLarry Wall氏とTcl/Tk作者のJohn Ousterhout氏を紹介してくれた。

0 件のコメント:

コメントを投稿