初めてPerlに触れてみての感想
特に解説記事というわけでもなく、筆の走るままに感想を。
入門にはPerl入学式の教科書がとても役立ちました。
id:papix 先生ありがとう……
Perl 自体への感想
- 全体的に、シェルスクリプトとRubyの中間みたいな文法。生まれを考えればまあ、そうだよね
- true, false がない。1, 0 で表現する
- == や != は数値比較に用いて, eq や ne は文字列比較に使うと決まってるの、あまり他の言語に見られない仕様。シェルスクリプトっぽい。数値か文字列か入りうる変数があると、比較の際に困りそう
- 見た目はシェルスクリプトやRubyっぽいので、文末のセミコロン忘れやすい問題
- 配列の連結が
my @arr3 = (@arr1, @arr2);
だけで済むの簡単でいい……。 - 一方、その仕様のせいで関数に渡すときは
some_method(\@arr1, \@arr2)
と参照渡しを強いられるのがめんどい - 2次元配列や入れ子のハッシュなどを書くときは、参照を意識しないといけないのがやや難しくめんどくさい。$, @, % の使い分けをしっかりマスターしたい。
- PHPやRubyみたく豊富な便利メソッドがあるわけではないので、実装力が問われる
CGI の時代が終わったわけ
Perl を調べてたら PSGI というWebアプリケーションサーバーの規格と、リファレンス実装の Plack というものを知り、
逆に CGI が廃れた理由を知ったのでメモ。
CGIが最も古典的でシンプルな実行方法として知られているが、クライアントからのリクエストのたびにプロセスの起動・破棄を行うため、サーバへの負担が大きく、ユーザへのレスポンスにも時間がかかる。また、このような起動形態ではデータベースとの接続といった必要な初期化も毎回行わなければならない。
( https://ja.wikipedia.org/wiki/PSGI より引用)
『リクエストのたびにプロセスの起動・破棄を行う』ってヤバそう。
アクセス集中したらプロセスが何個も起動して、サーバー負荷がすごいことになりそう。
たしかにそれなら CGI 設置不可のレンタルサーバーとかあるよなと。
あと、アクセスのたびに initializer 的な初期設定の読み込みをするということで、普通に時間かかりそう。
おもしろい比較動画がありました。
nginx + PSGI と Apache + CGI で、全てのページを読み込むのにどれだけの差が生まれるのかという動画です。
だいたい 1:12(72s) と 1:56(116s) のところでそれぞれ終わるという差!
たぶんこの実験では Apache と nginx の違いによる性能差はそんな無いと思うので、
やっぱ CGI 時間かかるんだなぁという感想。