Perlの功罪

最近共同研究者とプログラム共有するために,再びPerlプログラマと化している.ちまたでLL言語をもてはやす人が結構いるが,少なくとも速度と記述量の点では,すでにEclipseなどの優れた開発環境の登場でコンパイラ言語にほぼ同等の快適な環境が与えられるようになったと思う.だから,Perlの良い点は,単にスクリプト言語であることではなく,正規表現やハッシュなどを中心に構成した世界観の方だろう.しかし,Perlで書かれたプログラムは非常にバグが生みやすく,それはプログラムが大規模になるにつれ深刻になって利点を帳消しにする…

…と思っていたら,(ようやく(苦笑))"use strict"プラグマを知る.あと"-w"を使ってみる("use warnings"と同じか違うかは不明…調べるか.追記:同じようである).こちらがデフォルトであるべきだよなあ(追記:Perl 6ではデフォルトになるようだ).

このように明示的に宣言しないと使えないというのは,実際には結局駄目なプログラマorプログラムは駄目なままで放置することになる.たとえば,同様な駄目なプログラムはJavaでも書けて,最近すべての変数をクラス変数としてグローバルに宣言したプログラムを見たが(笑),しかしそんな馬鹿なことはJavaでは普通しないだろう.つまり,デフォルト…言語仕様であることには,大きな意味がある.それを言語設計における致命的なバグと思う人は,Rubyへと流れるのかもしれないな.

また,"my"なんて言語仕様の問題を回避するため以外には意味のない宣言をするくらいなら,私は厳密な型宣言を選びたい.そういう点では,非常にSawzall(Googleで使われているスクリプト言語)を使ってみたいと思っている(ただ,あれはGFSやMapReduceと強く結びついているので,公開は難しいだろう).