まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary

2006/11/05(日)perlの長所と短所

所詮Perl?

ネットをみていると「所詮Perl」的な発言をみかけるのですが、いやいやマテマテマテマテ。かと思うと、はてなmixiもPerlだ! 的な肯定意見があったりして、それもまた視点としておかしいような。

Perlの長所

  • Rubyなどのスクリプト言語と比べ速く動作する(時に数倍以上)。
  • CやC++に比べはるかに開発が容易。
  • CやC++に比べどうしても遅くなるものの、重い計算をループ処理させなければ実用上そこまで大きく変わらない。
  • PHPに比べ、MVC的なソース(ソースとHTML部分を分離させるコード)を書くのに適当である。
  • 世の中のほとんどのサーバで動作する

という特徴があります。adiaryの基礎になっているスケルトンシステム(Satsuki-system)開発時、本当はRubyも検討したんですが、簡単なテストスクリプトをいくら走らせてもRubyの処理速度はPerlのそれに到底及びません。Perlは隅々まで最適化が行き届いていて、うまく書いてやれば相当早く動作します。

Perlの短所

  • 言語仕様が非常にきたない(アセンブラおなじくスクリプト言語として原始的)。
  • 標準ではCGIとして動作させるため、スクリプトとしての起動が遅い。処理が遅いのではない

ほとんどこの2点に尽きると思います。1つめは対Rubyで考えると非常に分かりやすい。互換性を保ってきた結果が現在のPerl 5+オブジェクト指向という複雑な状況なんですが、それでもこのゆるゆるのオブジェクト指向がまた逆手に取ってうまく使うと非常に効率的なシステムが作れます。

2つめはネットを検索すると沢山出てきますが、「PHPはPerlより速い」という意味での速いです。起動が速い。ネット上の共有レンタルサーバでなければmod_perlなどを使うことで解決できますし、うまく書けばCGIとして動かしてもそこまで重くなりません。*1

結局

Perlってのは使い倒せば大規模開発にも十二分にも耐えられる言語です。ただこの辺は適切に判断すべきで、仕様をきっちり決めることで綺麗なメンテ性を取るならRubyもありですし、Webアプリとして手軽に作りたいならPHP、処理速度と開発効率を同時に求めるならPerlということになると思います。*2

*1 : 起動=コンパイルが遅いということは、ライブラリが必要になるまで極力ロードしないことで改善できるということです

*2 : おまけに配布を考えなければCのルーチンを呼び出すことで処理速度は必要な部分でいくらでも速められますしね。

adiaryを開発する人間としては

「早くPerl6出ないかなぁー」ってのが本音です(笑) Satsuki-systemが全面書き直しになりそうで怖いのは怖いけども(苦笑)