或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

Perlの食えない事情に反論・・・。

Perlは初心者おすすめの言語ではない
奇妙な演算子の数々
奇妙な宣言文の数々
最後に・・・

まず、食える食えないの定義がわからない。

著者が経験してきた言語から察するに C/C++,VB,Java,PHPあたりが食える言語っていう意味なんだろうか?そういう妄想と想像の元に言わせてもらうと、求人や案件が多い言語が食える言語ってことなんだろうか。きっとそうなんだろう。そうすると、言語には流行り廃りがあるのだから、食えた言語だけど今は食えない言語になっているものもあるんじゃないでしょうかね?VBなんて、今時使っている人いるのか?社内のツールなんかでVBとか使われていたりしたけど、負の資産というか不良債権のようなものになっていたような気がする。メンテナンスするほうが金かかるし、無駄。Javaもねぇ・・・、一時期一斉を風靡したわけだけど、そんなに勢いを感じられない。PHPは、完全にPerl/Python/Rubyに押されぎみでしょ。今後も使われていく言語であるとは思うけど、Perlと比較して特に注目を浴びているわけでもない。

Perlは初心者おすすめの言語ではない

これには半分同感で、半分違うと思う。Perlの言語仕様を完全に覚えようとするのは無謀であり、無駄。しかし、Perlの機能のいいとこ取りをして、動くプログラムを作るのは初心者にも可能。例えば、俺なんかはPerlをまともにやったのは1年くらいしか無いわけだ。Amazonアフィリエイトの記事を自動生成するスクリプトを書いたことがあるけど(スクリプトとは単一のファイルから構成されるプログラムのことを差すことが多い。)、CPANに登録されているNet::Amazonというモジュールを使えば、100行くらいで実装出来た。中身でやっている処理はそれほど簡単ではないけど、動くプログラムを書くことは出来たわけだ。PHPでも同じくらいの難易度と時間で実装出来ると思うけどね。C/C++,VB,Javaでは実装出来る気がしない・・・。

で、Perlは初心者におすすめできる言語かどうかという点に対しては、目的によって違うというのが私の意見。雇われプログラマーとして、プログラミング初心者の人がPerlを勉強するのは、ちょっと効率的ではないしつぶしがきかない。が、目的があって動くプログラムを書きたいというのであれば、Perlは初心者にもお奨め出来る言語だ。

奇妙な演算子の数々

文字列演算子

eq,lt,gt,le,ge,neって奇妙?!アセンブラとかでよく見たけどねぇ。

eq equal to 左辺は右辺と等しい
lt less than 左辺は右辺より小さい
gt greater than 左辺は右辺より大きい
le less than or equal to 左辺は右辺以下
ge greater than or equal to 左辺は右辺以上
ne not equal to 左辺は右辺と等しくない

英語の略だと思えば、すごく明瞭でわかりやすい。そんなこと言ったら、Unix/Linuxのコマンドのオプションとかも意味不明でしょ?この程度の英語の略を覚えられないんだとしたら、お仕舞い。

範囲演算子

あれです。1..100とかいう奴。意外と使えるよwww他の言語には無いけど、地味に使える。そんなにわかりにくいわけでもないし。

置換演算子:s///

Awk/Sedも似たようなもんでしょ・・・。vi/vimでもほとんど同じようなのを使うよ。Unix/Linux系のツール使っていたら、使えないほうがおかしい。

他の演算子

あまりにつっこみどころ満載なのでやめ。別に、やり方は一つじゃないのだから、Perlのあら探しに必死になる必要はないんじゃないかと思う。Perlは、使える道具を使いたいように組み合わせて使うような使い方のほうが上手く行くと思う。

奇妙な宣言文の数々

これもどうでもいい。C/C++,Smalltalk,Perl,Python,Ruby,Fortran,lispといろいろかじってみたけど、おかしいと言えばキリが無い。ルールなんて、言語の勝手でしょという域。

最後に・・・

Perlをメインの言語として会社もあるわけだから、旧ライブドアとか、はてなとか、他にもあると思うし。一概に食っていけないとは言えないし、Perlは使える言語であることは間違いないことだと思う。大規模プロジェクトで使いにくいというは認める。食っていけないっていうのは大規模プロジェクトで使えないっていう意味なんだろうか?(今更、前提条件にまで戻るのも面倒だからやめるけど。)

最後の最後に・・・

まぁ、俺はPythonが好きなんだけど。

追記:
id:oukisyougunさんからいただいたご指摘

文字列演算子はパッと見で認識できないでしょ。記号のが優れてるよ。

慣れの問題では?

=と:=の違いは?
=と==の違いは?PHPだと===ってのもある。

Pythonだとis演算子で比較する場合もある。認識っていうのは結局、使っている人の慣れの問題であると思うんですがね。逆に、見やすいというのが誤解を招きやすかったりしてさ。初心者が、if(i=1)っていうのを見て、iが1だった場合の条件と勘違いするかもしれない。これは代入かもしれない。言語によって違うんだろうけど。if(i ne 1)とかif i is not 1とか、そっちのほうが間違いが少ないんじゃないかなと。慣れれば、パッと見で認識出来る。見慣れない演算子に違和感感じているだけだろうと。それよりも、それっぽいなとパッと見で誤解するほうが問題だと思う。