Perlに込められた言語開発者の思想

今回仕事でPerlを使う機会に恵まれました。Perlというとcgiスクリプトによるwebアプリケーションがすぐ思い浮かびますが、それだけじゃないすごい言語だと思います。
Perlを初めて使ってみようと思ったのは、2000年3月に今は廃刊となってしまった月刊「日経バイト」が特集記事の一つとして掲載した「PerlVisual Basicを超える」を読んだことがきっかけでした。この記事はなかなかの力作で、当時Windowsでの開発に注力していた私にとって非常に大きな影響を与えることになったものです。
私がPerlとこの記事から最も学んだ事は、「言語を本当の意味でマスターするにはその言語に込められた概念、思想を学ぶことが重要である」ということです。
Perlの作者はご存じ、Larry Wallで、写真で見る限り70年代のヒッピーがそのまま年を取ったような、鼻の下にひげを蓄え、ティアドロップ型の眼鏡をかけた、気さくな雰囲気の方です。

では彼がPerlに込めた思想とは何か。一言で言うなら、それは徹底した実用性だと思います。実用性とは現実世界でとにかく役に立つにはどうしたらいいか、ということを追求していることに他なりません。
ですのでPerlは複雑な事を、なるべく簡単に記述・実行できるようになっていて、またアルファベットひと文字すら入力するのが「かったるい」かのような雰囲気があります。このため、時に後で読んで訳が分からない様なプログラムになってしまうという弊害もあるようです。
Perlインタープリターのため、記述しながら実行して、動作を確認することもできます。また、仕様も比較的シンプルなため、開発には手になじんだテキスト・エディターがあればOKで、Visual Studioや、Eclipseといった開発環境がなければ事実上開発が難しいということもありませんし、無料で利用できます。
さらに、言語学者が「仕様が汚い」とか何といおうが、欲しい機能を可能な限りどん欲に取り込んできました。旧来のバッチ的な記述も可能だし、オブジェクトも生成できる。使う人の指向と使い方にあったプログラムが記述可能です。
全てのUNIXプラットフォームで使え、Mac OS Xでも使え(当然か)、Windowsにも移植されています。またTk/Tclといった外部ライブラリを活用することでGUIプログラムを作成可能であったり、.netやOLEといったMicrosoft固有のプラットフォーム機能を呼び出すことができるなど、多彩な機能を誇っています。
しかも現時点でもなお、進化し続けているということがあります。元々は1987年に作られた古い言語ですが、テキスト処理に関してはCやVisualBasicを遙かに凌ぐ最先端を進んでおり、かつ開発が簡単だったため、インターネットのプロトコルがテキストベースであることから、一挙に舞台の中心に躍り出て来ました。cgiの主力言語であるだけでなく、IISのISAPIモジュールやXMLデータの処理など、その応用範囲は多岐に渡っています。現在バージョンは5ですが、バージョン6が開発中で、さらに機能が拡張されるでしょう。

当時日経バイトに掲載されていたcgiサンプル記事
Javaを使っていた私には、こんなに簡単に書けること自体が衝撃だった。

#!/usr/local/bin/perl
user CGI gw/:form :cgi/;

$query= CGI::new();
$input = $query->param('input1');
$cookie= $query->cookie(-name=>'cookie',
                        -value=>'abc',
                        -expires=>'1h');
print $query->header(-cookie=>$cookie);
print $query->start_html(-title=>'programing with perl');
print $query->p("your input is $input");
print $query->end_html();

Larry Wallの言語に対する姿勢は、インタビューへの回答にもよく現れているように思います。これらのインタビューを読み、彼の考えにふれることで、よりPerlが好きになるかもしれません。

言語を開発した人は、同時にその言語の本を書くことが多いのですが、当然Larry Wallも書いています。表紙の絵にちなんで「ラクダ本」といわれる、文字通りPerlの教典と言えるものです。

Programming Perl

Programming Perl

私は冒頭で紹介した、日経バイトの記事を読んでからしばらくの間、自宅では慣れない中でPerlのプログラミングをやっていました。Tk/Tclを使ってFTPでファイル転送をするプログラムを書いたものの、シングルスレッドだったのでサーバーでエラーが発生するとGUIがハングアップしていたり(笑)しました。
Perlの後にPythonとかRubyといったいろいろなスクリプト言語が登場していますが、それでもなお使い続けられているのには、Larry Wallの全ての開発者に対するサービス精神がものをいっているように感じられるのは、私だけでしょうか。