ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

初心者のあなたにお勧めするPerl

学校でJAVAだのCだのやっているから、家では休日にさくりとwebアプリを作りたいと思ってPHPの勉強を始めようと思った途端、「PHPはヘボい」と言われる。
...
心優しいみなさんが初心者のことを思って話してくれてるのはわかります。ただ、それでもこうも話が広がってしまうと、じゃあどれが良いんですかと聞かざるを得なくなってしまう。

http://d.hatena.ne.jp/tek_koc/20080205/1202185452

自分自身はセキュリティ云々とPHPの良し悪しは本来的には無関係だと思っています。単にPHPがWeb向けだった為にやたら普及しちゃって、それがWebの脆弱性わんさかの過渡期とオーバーラップしてしまっただけです。Ifの世界があるなら、PHPではなくPerlRubyが叩かれていても不思議ではない。
ので、セキュリティ云々言われているからPHPはヤバイ、というので不安に思われているなら、その不安は不要だと思います。
いや、セキュリティ気をつけましょう、という不安は持っているに越したことは無いのですが、徒にPHPと結びつけてイコールにするのはやりすぎだと思います。

では初心者向けで、これだけ言語が乱立していてどれを選べばよいのか分からないというのもよく分かります。下手なの選んで、結局世の中に広まらずに終わってしまうのは悲しいですよね。つぎ込んだ時間を返せ、ってなもんです。

JavaやCは学校で勉強している、とあります。まずはそれをきっちりマスターしてほしい。この二つは「食いっぱぐれのない」言語ですので、将来生活する上でお世話になる可能性大です。

それ以外で趣味でさくっとWebプログラミングを楽しみたいというのであれば・・・今の自分なら、Perlをオススメします。


「今更PerlCGI?」と思われるでしょう。それでもオススメするのは、以下の理由です。

  • Linux/Unix系であればほぼどこでも使える。デフォルトで入っている。Windowsでもインストーラがある。
    • これは強いアドバンテージです。Perlはシステムレベルのスクリプトですので、Apacheが入っていなくともPerlなら入っているでしょう。
  • 枯れている。しかし奥が深い。天井も高い。
    • 資料が豊富すぎるほどあります。本もオライリなどから沢山出ています。英語が読める、読もうとする意気込みがあるのならいくらでも世界が開けています。
  • 言語仕様として、Java/C系には無いものがたくさんある。Lexicalスコープやglob、tie、独特のOOPなど。
    • 後述。
  • CGI時代と違い、最近のPerlや雑誌で紹介されるPerlのWebアプリは、OOPフレームワークを駆使した随分モダンな作り。
    • 決して「今更」な時代遅れ言語では無いです!今も進化を続けていていますし、沢山のサイト(CNetやlivedoormixi)がPerlで動いてます!有名なブログソフトのMovableTypePerl(とPHPのハイブリッド)で出来てます。

特に、2番目と3番目に挙げた理由が、オススメする理由です。奥が深くて天井も高い。学習が進むにつれ、作れるモノ、できるモノが加速度的に広がっていくでしょう。Webプログラミングでは終わらず、バッチ処理、システム処理、あるいはPerlでオレオレ言語を実装するのも面白いのではないでしょうか。そしてCPANという巨大なライブラリにはそのための道具が揃っているはずです。
また、Java/C系に無い独特な言語仕様がたくさんあるというのも重要です。
確かに最初は$や@の使い方に戸惑い、使い分けも分からないと思います。私も今でも勉強中。ですが、それだけではなくて例えばコンテキストで評価値を切り替えたり、my宣言によるlexicalスコープという概念であったり、globやtieという仕組みなど。
さらに言えばこれらは他の言語でも使われている概念です。つまり、一度Perlでこれらの概念を習得してしまえば他の言語でも使える可能性が高いということです。

JavaやCの世界から見ると奇妙に見える仕組みかも知れませんが、しかし、奇妙に見える言語を学習により使いこなせるようになると言う経験値はきっと何ものにも代え難いものになるはずです。しかも、だからといってPerlがマイナーかというとそんなわけもなく、立派に最新のWebアプリをガリガリ組み上げられる現役バリバリの言語です。

・・・という風に、どう考えても、Perlを使いこなせるまで勉強して「損をする」という事はあり得ないのです。だから、初心者で学校ではJava/Cを勉強しているあなたには、Perlをオススメしたいのです。もちろん途中でgive-upすれば、その分、その時は損をしたと感じるかも知れません。しかし私自身の個人的経験で言えば、最近のPerlは、一度奥を覗いてしまうと、途中でついて行けなくなって放り出した・・・つもりなのですが、いつも気になって仕方なくて、結局勉強を再開してしまう。
そして何よりも、Perlの勉強は(個人的で申し訳ないのですが)楽しいですよ!黒魔術と揶揄される場合もありますが、本当、どこまで奥が深いのかと。オライリ本も沢山出てますし、何冊か持っていますが、ときどきちらりと覗いて「うわー、こんなテクニックまであるんだー、スゲー。」とあきれ果てたり、痺れたりするのは本当に楽しいですよ。

Perlが書けるようになった後、PHPなりRubyなり余裕があれば手を出してみると良いのではないでしょうか。もしこれからPHPをやろうか迷っている初心者であるならば、遠回りに見えるかも知れませんがまずモダンなPerlを勉強してみましょう。決して損にはならない・・・と、思います。

最後に、英語資料を恐れないで下さい。これはどの言語を選ぼうが一緒です。フォーラムやメーリングリストなどでは口語が飛び交うのでむずかしいシーンもあるのですが、基本的にプログラミング技術に関する技術文書は簡単です。少なくとも英字新聞よりはずっと簡単な英語です。文法自体が高校生レベルなのはもちろん、慣用句表現が少なく、カタカナ英語化されている単語も多いからです。

・・・と偉そうに書いちゃいましたが、かくいう私もPerlについてはまだ修行中。暇を見ては実験したり遊んだりしてる感じです。