プログラミング言語雑感

「基礎的な物事を勉強し直す」「安易に新しいことに手を出さない」という今年の抱負は、例えばこういうことだったりするが、年末年始に改めてPerlの勉強をした。
簡単なテキスト処理にはずっと昔から使っているのだが、最近の動向についていけてなくて。。
perldoc-jp のドキュメントを W-ZERO3[es] に入れて旅行中に読み、やっと言語コアの部分を読み終えた。

リファレンスとかモジュールとかの記法に目が慣れてきて、やっと中級者向けの参考書や雑誌記事が読めるようになった。
Windows + ActivePerl + Apache + Postgres + Eclipse (EPIC) という環境でさっそくいろいろ試している。
動いているプログラムをちょっとずつ拡張したいときに、1行か2行書き足すだけでやりたいことができる。
誰かが似たようなことをやってるのでは、と思えばネットで検索して情報を得られる。
面白そうなモジュールを探してインストールして試してみる。
やっぱり自分に合っているプログラミング言語だということを改めて認識した。
PHP で開発していて「ここから先はお手軽には書けない」という閉塞感を何度味わったことか。。

Perlが特に優れた言語だとは、いままで思っていなかった。
いや、いまでも言語そのものが優れているのかどうか、よくわからない。

Plagger のインストールをしながら、Linux の黎明期に味わった「インストールすることが自己目的的に楽しい」というあの感覚を久しぶりに思い出して、Perlというものがプログラミング言語というよりもOSのような存在に思えた。

Perlを巡る構造で重要なのはやっぱりコミュニティなのだろう。
Perlのある部分は「ガラクタの寄せ集め的言語」なのに、ある部分が「一貫性を重視したストイックでミニマルな言語」なのは、必ずしも先見性というわけではなく、むしろ「コミュニティのニーズを適切に反映してきた成果」だと思う。

僕が初めて触ったころの Perl はまだバージョン4だった。
そのことは C や sedawk や sh を知っている人が、その知識を生かしつつ仕事を効率化するための言語だった。
改めて言語仕様を読み返すと、例外的なルールがいろいろあるにも関わらず、不自然さを感じない。
それは、実際に行われる仕事やユーザのことをよく理解して作られた仕様だったから、なのだと思う。
その思想は最新のバージョンにも反映されているように思われる。

そしてLinuxが成熟していく過程で有効に機能した(と思われる)コミュニティの構造に似ている。
言語仕様の策定にコンピュータやソフトウェアをビジネスとする企業や、公的な組織が入っていない。

  • (a) オープンソースとして開発されるコア部分の開発者
  • (b) アプリケーションやライブラリをバザール的に開発して提供するコントリビュター
  • (c) コアとアプリをまとめて品質や互換性を確認して配布するディストリビューター

Linux: (a)カーネルの開発者 (b)GNUアプリケーションの開発者 (c) RedHatDebianなどのディストリ
Perl: (a)Perl コアの開発者 (b)モジュールの開発者 (c) CPANというコミュニティ

ということになるだろうか。
Perl 6 の仕様に関する議論もちょっと読んでみたが、いかにも民主的に行われている、と感じる。

そんなわけで、今年は(久しぶりに) Perl に深入りしていきたい。