ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによるPerl入門 - 未経験からプロの技術が身につくPerl講座

★★ 未経験から初めて、プロの実力がどんどん身につく、Perl入門講座 ★★
テキスト処理ならPerlが最適。if文,for文,配列,ハッシュ,正規表現を覚えれば、ログ解析も自由自在。大量のExcelデータを高速に集計。Webサイトを作成して、独自のサービスの展開も! 関数とモジュールを覚えれば業務効率が劇的に改善。初級から上級まで、Perlのすべてが学べます。「へぇー、こうすればこんなに簡単にできるんだ!!」プログラミングの面白さを実感しよう。
プロとして第一線で活躍し続けるために、プログラミングの確かな実力を「サンプルコードによるPerl入門」で身に着けてみませんか

2013-03-07

「なぜ国内で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 - 「は衰退しました」という人々の共通点

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


読み物へ

laclefdorlaclefdor 2013/03/08 00:51 統計が欲しければこの辺ね。
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
http://lang-index.sourceforge.net/

ちなみに僕はシリコンバレーでPerlやってるけど、Perlの凋落感は実感してる。
スキルのあるPerlerを見つけるのは難しいし、読みにくい言語なので新入社員に教えるのも難しい。

ある程度マスター出来たら非常に味のある言語だけどね。

perlcodesampleperlcodesample 2013/03/08 23:19  情報ありがとうございます。シリコンバレーはやっぱりPythonが強いのでしょうかね。Perlは面白い言語ですが、仕事につながらないとやっぱり敬遠されがちになってしまいますね。

laclefdorlaclefdor 2013/03/09 00:41 悪循環に陥っている感はありますね。Perlの求人出しても人が集まらない => Pythonに移行 => Perlの仕事が減ってPerl学ぶ人が減る => ますます人が集まらない、みたいな。

うちの部署もPython 3.0を検討しはじめています。僕自身、Pythonも使えるようになりたいので問題はありませんが。

perlcodesampleperlcodesample 2013/03/09 17:04  シリコンバレーは特にそうなのかもしれないですね。ヨーロッパや日本は、もう少しましなのかもしれないですね。仕事で使う人が減ると、必然的に技術者層が薄くなって、先細りしていくような気がしています。

 特にアメリカでは大学教育などのプログラミングの分野で、Pythonは仕事があるので、Pythonを学ぶ人が多いしということがあると思います。アメリカでは、教育分野のマーケティングで、Perlは完全に失敗してしまっていると思います。

laclefdorlaclefdor 2013/03/10 03:02 まー教育分野で失敗と片付けてしまうのは簡単ですけど、読みにくい言語を採用してもらうのは難しいですよね。静的言語はJavaの独壇場ですし、動的言語は主流ではなく、その中でPythonと争うわけですから。

c-yanc-yan 2013/03/11 21:02 2to3 みたいな自動変換スクリプトまで用意しているのに、「ばっさりと後方互換を捨ててしまった」と言われると FUD じゃないのと思ってしまいますが.
移行が進まないのは「後方互換を捨ててしまった」という発言とは真逆の、ほとんど代わり映えがないから Distro の Python が上がってから考えればいいやのレベルでみんな放置しているだけだからだと思います.
3.x の新機能もほとんど2.7にバックポートされてますし・・・.
CentOS のデフォルトが Python 3.x になったら数年で切り替わると思いますよ.
20年なんて誰もメンテしないって・・・.

janqjanq 2013/05/18 17:20 遅ればせながら、perlのフレームワーク紹介してくれてて嬉しかったし、自分はperlでやってきてたので、こういう冷静な反論はすごく勇気づけられましたね。

mojomojo 2013/05/25 16:40 Mojoliciousはまともな参考書ないですよね。railsと比べると学習コストが高い。ようはスタートすら切れてないから広まらない。catalystはインストール時間が長すぎて環境作るまでに疲れる。
Perlはオブジェクト指向で使わないならよい言語。まず他言語でオブジェクト指向を学ばないと泥沼にハマるほどPerlのオブジェクト指向はカオス。あとRubyのテキスト処理とは1.2~1.5倍差くらいかと。

perlcodesampleperlcodesample 2013/05/29 13:24 janqさん

 そうですね。Perlは悪くない言語ですよ。広い環境で使えるし、書きやすいですしね。

perlcodesampleperlcodesample 2013/05/29 13:45 mojoさん
 Mojoliciousの参考書はないですね。今はWebで調べるしかないです。出版されてほしいですね。Mojoliciousの学習コストは、railsより低いと思いますよ。

>ようはスタートすら切れてないから広まらない。
 これは新しくでてくるもの全般に言えますよね。

PerlおじさんPerlおじさん 2013/06/01 19:13 Perlはシステムの根幹を支えるところに使われているので、なくなることはない
でしょうけど、確かに使う人は減ってしまってます。
考えられる原因は2つ。
・文字の扱い方が難しくなってしまった。
・流行の開発手法が2〜3年もするとすっかり変わってしまい、安心して仕事に
 導入できない。
こういった罠を避けることが長く続けるコツだと自戒しています。

perlcodesampleperlcodesample 2013/06/04 23:38  うーん、文字の扱い方は、僕としては簡単になったと思いますけれどね。utf8 + Encodeだけ覚えておけば、対応できるので、慣れの問題かなぁと思います。Jcodeより難しいわけではないと思いますよ。

 でもレガシーな文字コードの扱いから、現在の主流の方法に移行するのは、現場としては大変だとは思います。

 開発手法が少しづつ変わっていくのは、どの言語もおんなじではないでしょうか。

Perl初学者Perl初学者 2013/07/22 12:00 そのうち、javascriptでいうajaxやjquery、rubyでいうrailsのような爆発要素がperlにも(cgiの時のように再び)生まれたらperlerも爆発的に増えるんでしょうがね。他力本願ですが。
言語も生き物と同じで時代によってどんどん新しいものが生まれて古いものが淘汰されてしまうのは仕方のないことだと思いますが、寂しい限りです。

Perl初学者Perl初学者 2013/07/22 12:00 そのうち、javascriptでいうajaxやjquery、rubyでいうrailsのような爆発要素がperlにも(cgiの時のように再び)生まれたらperlerも爆発的に増えるんでしょうがね。他力本願ですが。
言語も生き物と同じで時代によってどんどん新しいものが生まれて古いものが淘汰されてしまうのは仕方のないことだと思いますが、寂しい限りです。

perlcodesampleperlcodesample 2013/07/22 14:14  PerlにはRubyのRailsに該当するMojoliciousというフレームワークがあって、とても便利ですよ。知らない人が多いだけで、使ってみると、使いごごちがよいと思いますよ。よいモジュールやライブラリ、よいアプリケーションが増えると、それだけ言語を使ってくれる人が増えるので、がんばらなくっちゃいけないですね。

髭面サスペンダー髭面サスペンダー 2013/11/20 18:39 採用面接を受けた時の話。
プログラミング言語の中で興味があるのはRubyだったので、Rubyと書いておいたのですが、それを見た髭面サスペンダーの面接官のリアクションが酷かった。
面接官「Ruby・・・ふははっ!Ruby!」
- 以後省略

例のシリーズからインスパイア
http://zenlab.blog4.mmm.me/mmmblog-entry-7.html

鯖管鯖管 2013/12/19 13:27 shellやAWKではちょっとという時には99.9%ぐらいPerlですノ

perlcodesampleperlcodesample 2013/12/24 00:28 なるほど!

ななしななし 2014/03/11 02:05 たとえばlispより酷いってことはないと思いますがlisp、好きで使ってる人がまだ大勢いるですね、とか
完全に消滅するのが危ぶまれるレベルでもない限り、資本主義的な流行り廃れは気にしないで好みで選べば良いのでは
pythonでもjavaでもrubyでもやれることに極端な差はない訳で、要するに根本的にどーでもいい議論なんじゃないかと

perlcodesampleperlcodesample 2014/03/11 19:37 ななしさん

 アプリを作成している人、サービスを作成している人は、それでいいと思いますよ。でも、ライブラリを作って、提供している人というのは、やっぱりその言語のファンなんだと思いますよ。どれでもいいじゃんというのは、僕は否定的で、両方いないといけないと思いますよ。

perl好きperl好き 2014/06/09 11:21 この時期にしっかりしたドキュメントを公開されていて感謝です。私はPerlを15年以上使っていますが、どちらかというとシェルの延長のような感じで活用してきました。シェルとPerlはセットみたいな感じで。
最近感じるのは、RubyとかJavaのプログラマーが、サーバーやネットワークを知らないことですかね。Linuxの中の話とかTCP/IPになるとぽかんとされちゃうことが多くなりました。

インフラ屋インフラ屋 2014/06/09 18:37 クラウド/仮想化全盛のインフラ鯖通信屋業界でもPerlは現役バリバリです
Perlの使いどころはいくらでもあり、他言語とは棲み分けで

今使ってなくても「使える」って人は多いし、プログラマとしての素養ぐらいに感じてます、Perl

perlcodesampleperlcodesample 2014/06/12 21:37  Perl好きさん、コメントありがとうございます。Linuxではシェルがあって、すこし便利なことをするためにPerlを利用するというケースも多いですね。サーバーサイドでWebアプリから、テキスト処理、システム管理までできるので、ひととおり覚えておくと便利だなぁと感じます。

perlcodesampleperlcodesample 2014/06/12 21:39  インフラ屋さん、コメントありがとうございます。Perlは覚えておくと、小さな処理をこなすとか、仕事の現場でひととおり覚えておいて、損はない感じがしますね。素養として覚えておくというのは、いい感じだと思います。

非プログラマ非プログラマ 2014/07/22 12:47 Perlを使っている人が減っているよりも、それ以外の言語を使う人が増えている、裾野が広がっているって考えれば良くない?

perlcodesampleperlcodesample 2014/07/29 17:57 そうですね。今では、Webを記述するにもPerl+CGIではなくなったので、そう考えるのもよさそうですね。

tanukitanuki 2014/08/24 01:29 元エンジニアで今は開発会社の経営者ですが、シリコンバレーの方に近い感想です。
ある程度の体制で開発・運用をやろうとすると、やっぱり人集めの面で、PHP>ruby>>perlとなってしまっています。
ですので、クライアントに提案するのもperlという選択肢は選びにくい。

実際やってみれば、学習コストは、どの言語も変わらない感触をもっています(フレームワークは最新のものという前提ですが)。
ただ、エンジニア側の心理的な抵抗感はありますね。
やっぱり慣れたPHPでやりたいって感じでしょうか。
(もちろんできるエンジニアは別です)

上のコメントでも書かれていますが、OSSなんかはperlで書かれているものの多く、
個人的にはperlもどんどん覚えてほしいとは思っています。

perlcodesampleperlcodesample 2014/08/29 16:09  マーケティングに失敗すると言語のよしあしではなくって、イメージや開発者や求人という面で、追い詰められていく感じがしますね。

perl48perl48 2014/09/05 14:25 先々週、東京に出張に行った帰りに八重洲ブックセンターに寄りました。プログラミング書のコーナーで3時間ほど立ち読みしてる間にPerl関連の本を買っていく人が3人いました。(そのうちの1冊は「業務に役立つPerl」でした^^)

他の軽量言語だと、Pythonが1人、Ruby0人、PHP1人。まだまだPerlも捨てたもんじゃない!

perlcodesampleperlcodesample 2014/09/08 13:53  そうですか。報告ありがとうございます。深く使っている企業と、浅く広く使っている企業が多い感じがしますね。捨てるよりも、改善やメンテをして使い続ければ、十分利益の返ってくる言語だと思います。

hyuzehyuze 2014/12/06 14:39 自分はほとんどプログラムが理解できていないのですが、RubyよりもPealの方がわかりやすい感じがしました。ゲーム作りたくてRubyの本を読んで、勉強しようと思ったのですが、いまいち文章に現実感がない感じがして、あまり手につきませんでした。たまたま昔の10日で覚えるPealCGIという本を読んでなかなかわかりやすいなという印象を受けました。RubyもPealも好きです。

perlcodesampleperlcodesample 2014/12/09 20:43  Perlは、世間でいわれているほど、わかりにくくないですね。とっかかりが簡単で、いろんな分野にもチャレンジできるので、学んでみてくださいね。

lemonlemon 2015/06/20 14:46 phpでもできるけど、perlならもっと速い。

pipepipe 2016/04/05 21:19 Perlの最大の欠点はソースが読みにくく保守性が低いのとだけど、それ以外には目立った欠点が無い。
だから保守性に目を瞑れるところだと使われ続けるんだよね。

perlcodesampleperlcodesample 2016/04/06 21:31 はい、記述の簡潔性、メモリ使用率、パフォーマンス、GC性能、後方互換性、モジュールの数など、複数の観点で見ると、全体として大きな欠点がPerlにはないです。そういうところも、使われている理由なのだと思います。

僕は、保守性も改善されたらと思っているので、このサイトでは、できるだけPerlをきれいに書くようにしています。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元