何故、私はPerlを続けるのか
2008年8月4日 Jonathan Rockway
私は今朝、discussion about Perl on Hacker Newsに気づいた。その記事は、著者がPerlを好きな理由についてのものである。この種の記事すべてと同様に、いつもの「Rubyの方がよい!」のコメントが付いた。Hacker Newsの議論はちょっとばかり知性があって、Perlが汚いこと、その記事の著者の「すぐにRubyに見切りをつけた」こと、正規表現が遅い(あたかも、それがPerlを扱う大層なものかのように)ことを主張している。ともかくも、私はこれらのポイントは解決するであろうと思ったので、Perlを使うべきと私が考える理由を示す。
(中略)
それらの理由を留意すれば、特徴が問題解決を妨げていないことが分かるだろうと思う。問題が深刻に貴方を非生産的にしているとすれば、問題を再考する以前にとくに他の言語に切替えていたであろう。
ご存知の通り、実際のプログラムは滅多に文法に関係しない。HTTPをする必要があるなら、素晴らしい言語の特徴がそれをするのではない。たとえ貴方の言語が完璧なる特徴を備えているとしても、HTTPヘッダーパーサを書くことは貴方の時間の無駄である。ライブラリが生産性の鍵なのだ。貴方の嫌いな文法を無視することは、HTTP仕様書を読み、それを実装し、テストすることより早いはずである。
ライブラリが重要である理由は、車輪の再発明の代わりに、解かれていない問題に時間を費やせるからである。良いライブラリが無ければ良いソフトウェアを書くことは出来ない。
(中略)
私は、Perlコミュニティは誰よりもライブラリをよく考えていると確信している。何万もののディストリビューションが既にある、CPANを持っている。1万のディストリビューションは分かり辛いが、search.cpanで貴方の好都合なプログラミングのトピックを探すことを努めよう。問題が容易でこなれ易い形のライブラリに解かれていることが分かるだろう。少しのリンクをクリックすることがコーディングの連続から貴方を救うかも知れない。
Perlについて重要なことは、良いライブラリを書く文化があることである。少しのコードを書いて、それをブログに投稿し、それを「ライブラリ」と呼ぶのは、Perlプログラマではない。誰もが、ドキュメンテーション(時には極端に少ない場合があるが、誰もがライターではない)、テストスイーツ、Makefile等が付いているCPANディストリビューションを作ることに義務感を持っている。私は理由が分からないが、これが常に生じている。強い習慣があり、その習慣に従っているツールがあるからだと思う。
(中略)
私は他の言語を見て、そのコミュニティは全くPerlとは似ていない。彼等はシェアリングライブラリのためのサイトを立てたが、誰も寄贈しなかった。確かにRubyForgeはいくつかのライブラリを持っている。PEARは少ない。Pythonは多い。しかし、ライブラリを書いて、使用する文化がなく、ほとんどの人は1つのライブラリか、または、ある車輪の再発明の2番煎じとカット・ペーストのコードに終わっている。(”rails”を検索してみなさい。これらのプログラマの殆どが1つのライブラリ、Railsに頼っているだろうが、彼等の残りのコードはブログからのカット・ペーストである。)これらの人は本当にライブラリを分かっていないし、自力で書くことも嫌がっていない。人がライブラリを書かないことを続けていると、そこに何のライブラリもないことになる。Perlの膨大なライブラリは、更に書くことを容易にする。他の言語のライブラリの不足は益々書くことを困難にする。そういうことで、Rubyが数年で不思議に何万もののライブラリを持つだろうとは、私は思わない。彼等は今していることを維持するだろう。(ブログからのカット・ペーストよりも、パッケージングシステムと中心となるライブラリレポジトリがいい戦略である理由を説明する必要がないことを祈る。)
(中略)
そうして終に結論である。貴方が私と同様なら、貴方のする殆どのプログラミングは、ライブラリを使って、糊付けである。Perlは綺麗な言語でないかも知れないが、汚さを見る時間も無いほどに、沢山のライブラリがある。他の言語が綺麗な文法を持っていても、人がPerlを続けている理由はこれである。道具を使い、そして貴方の道具をコミュニティに寄贈するのはとても簡単だ。私達は汚い文法を気にもかけない。只我が道を行くのみ。私達が考えている事はすべて、問題を解くことなのである。
"何故、私はPerlを続けるのか - taro-nishino の日記 素晴らしい記事。 確かに、perl のプログラムはとにかくライブラリを使うし、ruby から入った僕はそのライブラリを入れるCPAN に苦手意識がある。 ruby で書く場合にもライブラリもどきみたいなのは書くが、大抵1、2クラスのもので、他のブログのsnippet をあつめたものだったりする。その機能はとても貧弱だと思う。 この記事を読んで衝撃だったのは、Ruby コミュニティは自分でコードを書くことにPerl コミュニティほど疑問を持たないってことだ。たしかにそう。Ruby にはモンキーパッチが多い気がする。それは大抵1つの問題しか解決しない。また、王道と呼べるライブラリはあまりない。 Perl のプロダクトのコードの量は本当に少ない。何故これで動くと思うほど。それはライブラリを使っているから。ライブラリを使いこなせるPerl Hacker の生産性は尋常じゃないことが容易に想像できる。 Perl が愛される理由が十分分かった。 Perl のこの文化を知っている人とそうでない人は、他の言語を使う際に差がはっきりでると思う。そういえば、Perl とRuby 使う人は、Ruby にPerl の○○みたいなのないかな〜って結構言ってる。 この視点重要や。
OSS の恩恵を最大限に利用したプロダクトにsnippet のよせあつめは敵わない。少人数で作成されたプロダクトがPerl で書かれてるのは偶然じゃない。
単純なWeb アプリを作成している時の、Rails の恩恵が、ほとんどのコードを書く場合にうけられるようなものだろう