2011年10月22日土曜日

perlとは心中しません

筆者は、perl5には結構お世話になってます。10年は前。それこそCGIの時代ですね。

C++を眺めてても、参考書をいくら読んでも全然判らなかった「オブジェクト指向」。perl5では、それを連想配列とパッケージでエミュレーションしてる訳ですが、その切り口によってオブジェクト指向の何たるかが腹に落ちました。機構から入ったという訳です。

残念ながら?それ以降、徐々に仕事はPHPに遷移します。何故ってperlの業界はCPAN前提みたいなとこあります。それは良いのですが、レンタルサーバだと後から入れるのは骨です。みたいな話は別途してます。

オープンソースでは仕方ないのでCPANのライブラリ群を配布ファイルに同梱しちゃった例もあります。あった有ったFreeStyle Wikiだ。ほうらこんな感じで大変な事に。
http://sourceforge.jp/projects/fswiki/svn/view/fswiki/trunk/fswiki/lib/?root=fswiki

そんな訳で、筆者がperl5と離れた理由は
  • 構文が気持ち悪いと思い始めた
  • 各種記号の使い分けが面倒。というか気持ち悪い。
    • 連想配列と単純配列の使い分け方法が「記号」だったりとか
      • %と@
      • []と{}
  • かと言って、dieとかmyとかlocalとか変なところで英字予約語を使う。
    • その予約語のネーミングセンスも独特。
  • 括弧を使うのか使わないのかハッキリしてほしい。
  • 中括弧の使い方が気持ち悪い。時がある。
  • 連想配列ベースのプログラムにちょっと疲れた。
  • 参照と実体の使い分けで、構文が違うので面倒臭い。
  • CPANを多用すると後(運用環境に設置する時)が面倒。しかし使わないと今(開発時)面倒。
  • dieで例外投げ、evalでキャッチ。という方法論が気持ち悪い。使ったことないけど。え?使いませんよ。だって例外が必要な案件で、perlを使う方が間違ってる。
その辺りの葛藤に負けたためです。善悪とかの話ではありません。好き嫌いです。議論の余地はありません。故に突っ込みはお控えください。それに当時の筆者としては、perlよりもPHPの構文の方が「美しく見えた」からです。今でもその認識はあまり変わってません。PHPはJavaの真似ですからね。※PHPは「その他」が駄目なわけですが

最近では、perl5ベースでも、「Modern Perl」と銘打って、真オブジェクト指向で作りましょうよ。な感じらしいです。use Mooseにより、実際見違えるほど見やすくはなりますね。
http://www.slideshare.net/bluefeet/modern-perl
じゃあMoose使えば良いじゃん。と言うかもしれない。これは条件付きで同意します。ただし、欲しいのはMooseだけなのに、色々なファイルが付いてくる。正直、CPANのこの風潮は辞めてほしい。
  • Moose自体が構成ファイルが多い。2万7千行
  • 別のCPANに依存してる。Class::MDPとか。
    • Class::MDP自身も他のCPANに依存してる。してるよね?
Mooseにはもうフレームワークというしかない規模です。え、フレームワークに決まってるだろって?済みません。認識不足でした。

筆者は大型フレームワークは嫌いなので、その点でMooseも除外対象です。

結論として、perl5+フレームワークで、ようやく汎用プログラムが書きやすくなる。それなら別の言語を使った方が早くね? プログラム言語は目的ではありません。手段です。故にperlだけに固執する理由は全く有りません。

そんな筆者は、Pythonとtclが好きです。関数型もいいらしいんですが40過ぎてからは頭が付いていきません。無理。


dankogaiさんもperlは嫌いらしい。本当か??吊りか???
http://twitter.com/#!/dankogai/statuses/452038972