使える言語は Perl と言うと何故にバカにされるのか?
前から思っていたことなんですが、このネット業界ですらそうなんですが、
僕 「Perl がメインかなぁ〜」
?さん 「( ´_ゝ`)フーン Java じゃないんだぁ・・・今時 CGI で書いてるの?」
ってなことが良くあります。まぁそういうときは、あぁこの人は Java しか知らないんだろうなぁ〜とか思います。
ここで言う Java ってのは Tomcat や Resin に代表される Servlet / JSP コンテナを利用したプロセス常駐型 java の事を指してます。決して Java-cgi のことを意味していません。多分彼らも、そういったことは意識していないと思います。
本業で随分昔(servlet 技術が出る前)に作成した Java-cgi で作られたアプリケーションが現役で活躍していますが、とてつもなく遅いです。いわゆる Perl-cgi が遅いと言われる理由と一緒です。一番の勘違いのポイントは、
CGI = Perl
って図式が無意識のうちにあると言うことですね。でも実際は、CGI の定義は、アクセスがあるたびにサーバが新しいプロセスを起動する形のサーバサイドアプリケーションのことを意味していて、CGI のプログラム言語は、サーバが実行できるものであれば C、PHP、Perl、Java 等何であっても構わないのです。
つまり、Perl だから遅いよねぇ〜ってのは間違いで、「 CGI で動かしているからのプロセスを起動する毎のオーバーヘッドが重いよねぇ〜 」ってな話しになるわけです。
逆に、Servlet / JSP コンテナと同様にプロセスが常駐してリクエストを処理するタイプの mod_perl、FastCGI、SpeedyCGI は実務に耐えうるパフォーマンスで動作しますし、Sledge や Mason や Catalyst といったフレームワークを用いての高度な開発手法だってあるし、実際下記のようなサイトを支える技術でもあります。(引用:naoyaのはてなダイアリー)
- はてなのサービス全部
- mixi
- mixi (mod_perl2 を使ってるらしい)
- del.icio.us (del.icio.us も Mason ですね)
- TypePad
- livedoor Blog
- LiveJournal
- Slashdot
- Overture
昨今のハードウェアの進歩は凄まじく、単なる CGI ベースのアプリケーションでも随分なリクエスト数を処理できるようになってきました。そんな今だからこそ、開発スピード重視で Light Weight な Perl や PHP を使って開発するってのもアリだと考えています。
Perl は敷居が開発の低い言語で、実際よく動いているなぁ〜と思うスクリプトが多いのも事実ですが、玄人から素人までカバーする許容力もまた Perl の良いところと思う今日この頃です。なので Perl って聞いただけで言語の優劣を付けないで欲しいと願ってみたり・・・。
コメントやシェアをお願いします!
こんにちは
そうですね
p
あとOracle最高〜でPostgreSQL駄目〜な会社とかも。
業務内容にもよるだろうけど、経営者やリーダーの年代も影響してるのかなと。
オープンソースになじみがある若い人ならばどんどん使うだろうし、
なじみがなければテストするも暇なしな人は未知のものには恐怖するでしょうし。
人を憎まず、認知限界という人に組み込まれたシステムを憎むのもありかと。
で、性能差が小さくなってイノベーションのジレンマとかがやってくるのかも。
しん
サーバーサイドのソフトはほとんどPerlで書いています。当然既存のライブラリーも使用していますが、決してPerlはスクリプトレベルの言語では無いと思います。実際にセッション管理やパーシスト変数をはじめ多くのモジュールをデーターベースを隠蔽化してモジュール化して利用していますし、手軽さと自由度の高さではCやC++と対等に渡りあえると思います。必要な技術は、言語ではなく、たとえばセッション管理を実現するアルゴリズムにあり、言語はあくまでも機能実現の為の道具に過ぎないと思います。逆に言うとどんな言語を使ったところで、アルゴリズムを知らなければ所詮、スクリプトと同等になってしまうのではないでしょうか?CやC++、Javaも使っていましたが、現在のところ手軽さや自由度ではperlが一番ですね。最近はC#に興味があり、使う機会を伺っている状況です。
C#
>_
早くて安くて美味い料理は嫌いですか?
自分で種をまいて育て、さらに品種改良もした物を
自分で調理して食べないとおいしくないですか?
i
俺なんかVBとVBSCRIPTとVBAとSQLだぜ、ちうかっこなんて見たこと無いぜ(w
_
Perl だろうと Java だろうと,結局それらの言語では,既存のライブラリをどれだけ知っていてどう組み合わせるかというのが主眼となるので,情報工学を学んだ人間から見ればそれらの言語しか使えない人間は,やはりダメに見えてしまう.
結局そういう人間って,Google Maps とか Amazon の API を使うことができても,元になるサービスの構築にはほとんど使えない.つまり,新しい物を作り出す力に乏しいので.