Wall: Perl 3と4の変化はほんのわずかです。最初のラクダ本が出版された時点で、バージョン番号を3から4にあげたのです。
Perl 4から5では大きな変化がありました。「難しいことも可能に」の精神で、Perl 4ではさまざまなデータベースに接続できるようにしました。しかし、Perl 4では、機能を拡張するには、その機能を組み込んだ「特別仕立てのPerl」を用意する必要がありました。例えば、Oracleへのアクセス機能を追加したoraperl、Sybaseへのアクセス機能を追加したsyperlといった具合です。また、Tkツールキットを組み込んだtkperlというものもありました。OracleとSybaseに同時にアクセスしたいから「orasyperlが欲しい」などとジョークを言ったものです。
まあ、それはいいとして、こうしたことが起こっているのをみて、私はPerlの拡張性を高め、C言語で記述されたいかなるインターフェースとも話ができるようにする必要があると感じ始めたのです。そこでモジュール機能の開発にとりかかりました。モジュール機能はPerl 5に組み込まれました。
モジュールのリポジトリとして生まれたのがCPAN(Comprehensive Perl Archive Network)で、これは2006年で10周年を迎えます。2006年3月29日時点で9784個ものモジュールが公開されています。このように多数のモジュールが開発されたことにより、Perlはとても強力になりましたが、反面大きな問題を生み出す要因にもなりました。ちょうどoraperlとsyperlがうまく共存できなかったのと同じように、CPANのモジュール同士でも衝突が起き始めました。
例えば、モジュールAが、モジュールXのバージョン1.0を内部的に使用していたとします。そしてモジュールBは、モジュールXのバージョン2.0を内部で使用していたとしましょう。ここで、あなたが書いたプログラムでは、モジュールAとBの両方を使いたいとしましょう。モジュールAとBは、共にモジュールXを使用するのですが、それぞれ必要とするバージョンが違うので、プログラムは動きません。
こうした衝突を解消しようと言うのもPerl 6の大きな目標の1つで、同じモジュールについて複数のバージョン、複数のバリエーションを許容できるようにする予定です。
近藤: Perl 5から6へはどう変わるでしょうか。
Wall: Perl 5は、かなり汎用なプログラミング言語に成長しました。オブジェクト指向プログラミングにも使えますし、関数プログラミングにも、ロジックプログラミングにも使えます。それだけに我々はPerlがどのようなことに使われるのか、それぞれの用途においてPerlのどのような仕様が重要なのかに注目しました。
Perl 6も、あらゆる用途に使われる言語になります。こうした多彩な要求を満たすには、プログラムの用途に応じて、その用途に適したパラダイムに切り替えることができるといった柔軟性が必要だと思っています。
近藤: ところで、Perlの普及にとって、インターネットブームの到来はかなりのインパクトを与えましたね。
Wall: それは大きな事件でした。我々からみれば、ちょうどいいタイミングで、ちょうどいい形で起きた事件です。私はこの時点で、Perlがマルチパラダイムの言語となりつつあるのを実感していました。
インターネットの黎明期では、HTML、つまりテキスト処理を得意とする言語が求められていました。また、さまざまなデータベースを利用するための機能も必要でした。Perlは、いい具合にどちらの用途にも使える「glue(ノリ付け)」的言語という立ち位置にあったのです。
これは我々にとってPerl 6へのいい教訓でもあります。これから先の20年で「インターネット」の次に来る物が何であるかを我々はまだ知りません。我々が謙虚な態度をとりつづけ、ユーザーのやりたいことができるようにすれば、そうした新しい変化にも柔軟に対応できると思います。
近藤: ところで、古いバージョンのPerlのソースコードは全部取ってあるんですか。
Wall: Perl 1のコードはウェブで公開されているので、ダウンロードしてコンパイルすることもできますよ。2や3については、まだ残っているかなぁ。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」