tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

Perl は終わりじゃないと思う

もう流行は終わったっぽいけど、一応参戦しとくか。

Perlはもう終り? | | プログラマ2.0日報 | あすなろBLOG

1. 言語仕様が汚い。厳格にはサブルーチンの「引数」という概念がないし、変数はすべてグローバルで特に宣言した場合だけローカルになる...というあたりの仕様は、そりゃインタプリタの実装は楽チンだろうけども、美意識(とミスしにくさ)には欠けるよね。
2. 後付けのオブジェクト指向。何かヘンテコなやり方です...神の祝福が要る(bless)わけですが、「神の祝福」って何だろ?
3. 5.8(2002年) でマルチエンコーディングに(実質上Unicodeに)ようやく対応。これはタイミング的にはちょっと遅れを取った感が否定できなかったです....

という負の資産もてんこ盛り(だって出発が超古いんだもん。1987年だよ...Javaよりかなり年上だ、ということをお忘れなく)なことは、もうどうしようもないわけですしね....

まずは1. 「use strict;use warningsしとけ」とだけ言っておく。使い捨てじゃないプログラムで、理由なくstrict/warnings していない Perl プログラムは間違いなくゴミ。サブルーチンの引数云々はプロトタイプの話かな?それとも引数が単なる配列に縮退する話かな?プロトタイプは使わんけど、Perl の引数の仕様は可変長引数とかオプション引数とかしやすくて結構好きなんだけどな。(メソッドのオーバーロードはしにくいけどね)

次、2. bless いいじゃん。オイラこの演算子結構好きだけどなぁ。ただのハッシュリファレンス(hashref 以外も bless できるけど、大抵は hashref 使うよね)が、祝福を受けてオブジェクトになるって面白い考え方だと思うけどなぁ。bless が嫌ならそれを使わないクラス作成モジュールもいっぱいあるしね。

最後 3. 2002年時点でまともにマルチエンコーディングに対応している言語ってあったのかな?Javaくらい? Perl の場合、コアがマルチエンコーディングに対応してなくても、jcode.pl/Jcode.pm があったからあんまり困っていなかったんだと思うけど。

...まあこの辺の突っ込みは実は本当はどうでもいいんだ。

オイラが言いたいのは、「Perl は楽しい」ってこと。初心者だった頃も今も、変わらず受け入れてくれる言語ってあんま無いからね。(大抵の言語は初心者に厳しいからね。。。PHP とか VB とか初心者にやさしいとされる言語はあんま触ったことがないから分からないけど。)。

Perl はシステム管理の道具として使い始めた初心者時代も、文字列データを突っつきまわすのに使っていた前の会社時代も、システム開発の道具として使っている今も、ずっと変わらず書いていて楽しい言語だな、と思う。

それからちょっと変わった処理もわりと簡単にできるところも好きかな。
昨日の「日付変更線(?)」とか「STDIN/STDOUT を使うテスト」みたいな処理を簡単に書ける言語をオイラ他に知らない。(ruby なら出来るかも)

と、言うわけで Perl はまだまだ終わらないと思うのです。