Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. 読み物

「なぜ国内でPerlが急速に萎んだのか」という記事を読んで

僕もPerl入門書いている身なので反応しておこうと思います。

メインコンテンツの「サンプルコードによるPerl入門」の目次はこちらです。こちらがメインコンテンツになります。Perlはとても便利なプログラミング言語ですので、一緒に学びましょう。

なぜ国内でPerlが急速に萎んだのか

まずこの人はRubyとPythonが好きで、Perlが嫌いな人です。まぁ好き嫌いはあってよいんですけど、書いている内容が不誠実すぎて、信用ができないです。

Perlが萎んでいるという議論をする前に、ライブラリの数とか、アプリケーションの数とか、求人とか賃金とか採用している企業とかなんでもいいけれど、何か目に見える統計情報がないと、単なるイメージを落とすために書いていると思われても仕方がないと思う。

2005年 Railsの襲来

2005年に突如現れたRailsによって国内でRuby利用者が急増したのがPerl滅亡への第一歩となった。書きやすさに作者がとことんこだわって作られたRubyの魅力を一度知ってしまうとPerlの古くさく読み辛く書き辛い文法に誰もがうんざりし始める。

この人がRuby大好きで、Perlを滅ぼしたいことはよくわかるのですけれど、RubyとPythonとPerlの文法というのは基本的によく似ています。三つの言語の中ではRubyが最もタイピング数が少なく書けるといいうのは本当のことですが、大きな差があるかといわれると、そんなに差はないと思います。

下のみっつのエントリーを比較してみてください。

WebフレームワークはRailsの一人勝ちの状況です。これは悔しい。PerlにもRailsとSinatraとnode.jsのよいとこどりをしたMojoliciousという使いやすいフレームワークがあるので、ぜひ使ってみてください。ワンファイルのWebアプリから始めて、アプリケーションを大きく育てていくことができます。またnode.jsのようにノンブロッキングIOにも対応しています。

PerlのWebフレームワークMojoliciousのチュートリアル

またテキスト処理はPerlはRubyに比べて2~3倍くらいは速いはずです。記述コストとテキスト処理のパフォーマンスというふたつのバランスを考えれば、手放しでRubyを勧めることなんてできないと思います。

2007年 JavaScriptブーム

Ajaxで再発見されたJavaScriptのブームもPerl終焉に若干ながら貢献している。ブラウザというPerlが全く手を出せないジャンルの王者JavaScriptの持つ華やかさに誰もが憧れ、そして手元のPerlの古くささに反吐が出始める。不器用で不細工なところも含めて愛していた女房とつつましく送っていた人生に、突然ぴちぴちのボイン女子大生が転がり込んで来たようなものである。

JavaScriptが華やかで、Perlの言語仕様が古臭いなんていったら笑われてしまいますよ。JavaScript使いたくないけれど、ブラウザで使えるのがJavaScriptだけなので、辛抱してみんな使っているんです。しかし、これはPerlの衰退となんの関係があるのだろう。

スマホ/ソーシャルゲームバブル

iPhone市場が本格的に立ち上がり、Perlとは全くの無関係であるスマホアプリ全盛期がやってきていよいよPerl滅亡へのカウントダウンが始まった。そして極めつけはソーシャルゲームバブルである。ここでもPerlとかいう言語は全くの蚊帳の外で大絶賛凋落中。

あのね、そりゃクライアント側は、AndroidはJavaとiPhoneはObjective-Cですよ。けれどもソーシャルというのはWeb側ですよね。OAuthとか知らないですかね。Webと連携するのに、サーバーサイド側で動くプログラムが必要です。

Perlはといえば、サーバー側のアプリケーションを書くのは、得意です。ここ1,2年くらいで、PerlでWeb開発を行う環境は劇的に改善されていて、cpanmもあれば、perlbrewもあれば、Plack/PSGIもあれば、Mojoliciousもある。PerlでWebアプリを書くのが、すごく楽になったという実感は強いです。

2012年 ビッグデータ/Hadoopブーム

Perlなんぞ全くお呼びでない世界の話。段々とwebテクノロジーの世界に高度な数学的知識を持ったアカデミック層が跋扈しはじめ、専門学校でプログラミング言語を学んだだけの人間がハッカーなどと名乗ると恥ずかしい時代になってきてきた。

うーん、ビッグデータの扱いの話と、Perlの衰退の話はぜんぜん別の話だと思います。これはWebから受けたデータを、その後処理する部分の話じゃないかなぁと思います。

2013年 Pythonの本格的な浸透

遂にPerlにとどめを刺したのはPythonである。守備範囲は当然ながらPerlと駄々被りで読みやすく書きやすく世界的なシェアもうなぎ上り。完全にPerlが不必要な世の中になってしまった。

PythonはPython3で互換性をばっさりと切っちゃいましたね。Python2とPython3で互換性がないので、ライブラリとアプリが全部書き直しになってしまった。あと20年くらいは、Python2とPython3で平衡して、ライブラリを保守していくことの大変さは、すごく大きなものだと思います。

保守コストや開発コストを考えるならば、Pythonを使うことを手放しに勧めることなんでできないと思います。Pythonは今、どちらのバージョンを選ぶかという段階で、ものすごく悩む言語になっていますよ。

結論

2005年までのPerlはまさに我が世の春を謳歌していたが今や目も当てられない惨状でプログラミング言語のシーラーカンス・COBOLとすら比較され出す始末。昔Perlの人として売り出していたハッカーも、いつのまにかPythonの人になっているケースも海外では多い。10年でここまで時代は変わる。今のメインテクノロジーも明日は我が身だ。小手先の技術に乗っかってモダンだのハッカーだの聞こえのいい言葉を汚い口でまき散らして消えて行ったPerlエンジニア達の死を無駄にしてはいけない。変化の速い時代に生きる我々に必要なのは本質を学ぶ事だ。コードの書き方とかどうでもいいんだ。もっと10年20年たっても色あせない情報工学を身につけなければならない。

結論は「コードの書き方とかどうでもいいんだ。」ということでしたら、Perlを古い、シーラカンス、COLOB COBOLとか、言わなくってもいいんじゃないかなと思う。

それとWeb開発のPerlのシェアをとっていったのはデザイナーさんや初心者の人が簡単にWeb開発ができるPHPだと思います。PerlもWeb開発がしやすい環境が整って、再び食い込めたらなと思います。

はてなブックマークへのコメント

mizchiさん

ええっって四回ぐらい思いながら読んだ。ただの言語信者で冷静な判断できてない。

そんなことはないです。10回くらい読んでください。

moriokaさん

統計情報を示していないと反論している自分も統計情報を示していない。よって反論になっていない。元記事も随分とひどいものだが。

せめて統計を示さないと論拠にならないという記事なので、僕が統計情報を出す必然性はぜんないと思います。論拠がないので「それとWeb開発のPerlのシェアをとっていったのはデザイナーさんや初心者の人が簡単にWeb開発ができるPHPだと思います。」と控え目に書いています。

te2uさん

これも「何か目に見える統計情報がないと、単なるイメージを落とすために書いていると思われても仕方がない」記事のひとつ。

そんなことはないです。Perlのイメージを悪意を持って落とす記事がなかったら、こんな記事書く必要ないんですから。

y-kawaz

必死だな

はい。

nihonchaさん

減った分はどこへ流れているんだろう。

情報が蓄積されてきたというのもあると思います。存在する情報については、あんまり書かないというのもあるかと思います。

ma1aさん

「RubyとPythonとPerlの文法はよく似ていて大きな差は無い」 この理屈はおかしい そりゃ初心者向けチュートリアルぐらいのコードだと差は無いだろう しかし実際のプロダクトコードの可読性は絶望的な差がある

絶望的な差なんてないと思います。「Ruby + Rails」と「Perl + Mojolcious」でソースコードを書いて、実際にWebアプリを作ってみるとよいと思います。コードの汚さというのは、書かれた時期とスキルが大きく影響しているのだと思います。

soh3914さん

こんな噛み付かなくても一番すきな言語はやっぱperlですってことにしとけばいいのに。。

噛み付いたんじゃなくって、噛み付かれているんですって。

koyancyaさん

手元で使ってる分には速度の差が感じられないんですが、2~3倍も違いますかね "テキスト処理はPerlはRubyに比べて2~3倍くらいは速いはず"

確かにベンチマーク示していないから、ちょっとこれは取り消しますね。ベンチマークは課題ということにしておきます。

残念ながらperl案件は最近ほとんど見ないよ。それどころか、phpへの翻訳案件が増えてるぐらいで。

局所的な感覚を一般化するのは、よくある間違いだと思います。

javascriptは色々おかしいけど慣れると面白いよ。慣れると。

はい。面白いです。

mjyさん

多くの人はPerl6の実装の停滞をみて、未来を悲観しているのだと思う。過去資産に関しては「Perlのコードは読めない」問題があるので、捨てるのでは。

Perl6はPerl5の後継ではなくなってしまいました。ここ2年くらいのお話です。古い資産(CGIスクリプト)を、新しいPerl(Plack/PSGIとかWebフレームワークとか)で書き直すという作業も楽しいかと思います。

FITfrontlineさん

結局PHPに負けてる訳でしょ

そうです。PHPに負けています。

UhoNiceGuyさん

元ねたが統計情報を出してないからこちらもってのは「バーカ、バーカ」って言われたから「バーカ、バーカ」で返すってなもんでしょ/Perl入門を書いてる人ならPerlが使いたくなるようなことを書いて欲しかった

ちょっと違います。「バーカ、バーカ」といわれたので「そうじゃない」と返しています。

弾さん記事へ言及

自分が書いたコード、いや 貢献contribution を、さらさないこと。

コードをさらさないどころか、自分が何物であるかすらさらさない場合がほとんどで、その時点でまっとうな社会人がまっとうに取り合うべき言説ではない。運転免許も持ってないガキが本や雑誌やWebで知識だけを肥大化させたあげく「FRは衰退しました」って言っているのをカーデザイナーが真に受けるべきではないように。

perl - 「は衰退しました」という人々の共通点

同意。足りないなぁと思ったら、自分がオープンソースに貢献すればいいんだと僕も思います。あれこれ駄目だという人よりも、他のよいところをとりいれて、ここを良くしようという方針のほうがよいと思います。

Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング