私は職業プログラマなので仕事でプログラムを書いているのですが、それ以外に趣味でもプログラムを書きます。そのとき、もちろん用途によって言語は使い分けているのですが、Perlを使うことも多々あります。というか、大抵の用途ではまずPerlを使います。なんらか特殊な事情があるときに別の言語を選択するという感じですね。
Perlは1980年代に登場し、特に1990年代後半から2000年代前半にウェブ開発で一世を風靡しました。しかし、その後ウェブ開発ではPHPが流行り、さらにRubyやPythonなどの様々な言語が使われるようになり、2020年現在ではどの言語が主流かというとちょっと言い難い状態になっています。しかし、Perlは残念ながら主流からは完全に外れてしまっています。テック記事を見ていると2000年代にPerlで開発されたシステムがあったが、メンテナンス出来る人材が確保出来ないことも理由となって別言語でリプレースしたという事例もよく見かけます。
さてそんな主流から外れてしまったPerlですが、私は今でも愛用しているわけです。ま、愛用というほどに日常使いしてるわけではないですかね。毎日趣味プログラム書いてるわけでもありませんし。でもまあ、そこそこには愛用してるつもりです。
なぜPerlを今でも使っているかというと、一番の理由は変える必要がなかったからです。私はなんだかんだ1980年代からプログラム書いてますし、2000年代からウェブ系の開発もやってます。当時は当然にPerlを使っていたわけです。世間の主流の言語の移り変わりと共に現場での採用言語も変わっていったので、PHPもRubyもJavaScriptも書いてますが、趣味では特に変える必要がなかったのでPerlを使っています。つまり、それだけPerlで十分に用途に足りているのですね。
とはいえ、他の言語がPerlよりも便利ならば乗り換えるという選択肢もあったわけですが、今のところそういうつもりはない。PHPもRubyもそれぞれ優れた言語で便利ではあるのですが、今のところ私にとっては十分に使いやすい言語なのです。
Rubyにかつて「驚き最小の法則」というキャッチフレーズがありました。Matzさんのような一流のプログラマーにとってはPerlは驚きだらけて使いにくい言語だったからRubyを開発したのでしょうが、底辺プログラマーである私にとってはPerlは十分に驚きが少ないです。プログラムを書いていて、多分こうなるだろうなと思うことが大抵その通りになり、ストレス無く書くことが出来てます。
主観的なところは別として、客観的な利点もいくつかあります。まず、Perlなら大抵のシステムで標準でインストールされていて、どこでも使えること。ま、Windowsとかには入ってませんから、これはあくまでもUNIX/Linux系の環境の話ですが。他の言語ではまだ標準で入ってないことも多いですよね。もしくは標準で入っているのはとても古いバージョンになっていて、最新版とは機能差が多すぎるとか。
その機能差が少ない、言い換えれば十分に枯れているのもPerlのメリットだと思います。現在使われているPerl5系の大きな機能追加はUnicode対応した5.8。これは実に2002年のことです。それ以降もPerlは活発に開発されて新バージョンがリリースされていますが、過去のプログラムが動かなくなるような仕様変更は基本的に行われていません。Unicode関連の機能を使わないなら、Perl5系を通しての互換性も高いです。Perl6で大きな仕様変更となる予定でしたが、結局これは別の言語になりましたので、Perl5はこれからも仕様変更の心配なく使い続けられることが期待されます。
こうした枯れたことを進化が止まったとして否定する考え方ももちろんあると思います。それはそれで個々人の考え方ですが、私としてはプログラム言語は所詮は道具にすぎないので、用途を満たせるならむしろ枯れていた方が理想的であると思っています。もちろんソフトウェア工学の進化に伴ってプログラム言語もより進化していくといいとは思いますが、その進化は一つの言語の処理系の中で行わなければならないとも限らないと思うわけです。進化は別言語でやってもいいわけですよね。実際には言語の普及度合いなどいろいろな事情が重なりあってくるわけですが。
書き出してみたらたいした語りにならなかったので、なんか消化不良な感じがしないでもないですが、こんな感じの理由で今日もPerlのコードを書いている日々を過ごしています。
(2020/12/21追記)
しかし現在ではネット上ではPerlってあんまり評判良くないですよね。Perl使ってる人は化石はともかく老害扱いしてたりとか。若くてイケてるウェブ系エンジニアさんはそういう言説をよくしてるイメージがあります。あんまりけなされても悔しいので、老害側としてもちょっと反論というか意見を言ってみようかなと。
そもそも、こういう古い世代の言語をバカにする言説ってのも、今に始まったことでもないんですね。私がコンピュータを始めた頃だとCOBOLがそういうポジションにいましたし、正直当時は私もCOBOLという言語や、COBOL書いてる人をバカにしてたこともありました。時代が進んでバカにする対象がBASICになったりPerlになったり。2020年時点ではRubyなどもその対象に入りつつあるような感じもしないでもないです。
そして古い言語をバカにする側も、全く無根拠でもないんですね。古い言語は設計が古いですから、最新のソフトウェア工学の知見が盛り込まれていなかったり、盛り込まれていても過去との互換性から少々無理がある盛り込まれ方をしていたりします。それに比べれば、最初から最新の知見を用いて設計された言語の方が自然で使いやすいのも、間違ってはいないとは思います。
ただですね。これは私の信念でもあるのですが、プログラミングって所詮は手段だと思うんですよ。プログラミング自体は目的ではあり得ない。例外は言語設計者とかソフトウェア工学の研究者ですかね。プログラム言語が趣味って人も含めてもいいかもしれないですね。それ以外のプログラマにとってプログラム言語というのは、目的のプロダクトを作るための手段でしかないんですね。であれば、プロダクトを作るという目的が達せられるなら、その手段はなんであろうとも別に構わないだろうというのが私の考えです。そりゃ職人が道具にこだわってよりよい道具を追い求めるのも正義だとは思いますが、だからって古い道具を使ってる職人をあざ笑ってるってのはカッコいい話とは思えません。職人なら、出来上がった品物の出来映えで勝負したいじゃないですか。
という風に考えるので、個人的には古い言語をあざ笑うというのは不毛な話だなぁと思っています。かつては私もバカにしていたCOBOLも、それが今でも世界の金融システムを支えているのですから、立派なものだと思っています。以上、老害からの屁理屈反論でした。