嫌いなプログラミング言語はperlです
いろいろなプログラミング言語を覚え、それぞれの特徴を知るにつれ、誰しも好きな言語と嫌いな言語が出来るものです。好きな理由、嫌いな理由は人それぞれですが、それは必ずしも言語自身の仕様であったりパフォーマンスではなく、それを使うようになった理由や苦い経験が原因のことも多いようです。
そういう私も昔ながらのFORTRANであったりBASICからアセンブラを経由してPascalやCといった手続き型と呼ばれるプログラミング言語を使ってきたので、Lispを始めとした関数型言語というのは苦手意識が強く、そうなるとパターンマッチングと呼ばれる正規表現を駆使してデータを分類して、それに応じた処理を行うという書き方にはなかなか馴染めなかったのです。
作るプログラムが大きくなってくれば、すべてをひとりで作るのではなく、複数の人で分担したり、既にライブラリとして用意されているコード(やモジュール)を再利用する機会も増えます。そうすると、自分以外のコードと何らかの干渉がある言語は何かと悪い影響があり、クラシカルなBASICでは苦労が絶えませんでした。
ということで、awkやsedといったスクリプト系言語は、シェルでうまく書けないような処理を短いコードで表現できるという簡単な使い方は良くしていましたが、これで長いコードを書くなんて信じられないという人でした。意図しない動作をした時に、その原因を追うのがしんどかったですし、このコードで意図した動作「しか」しないのかというと「う~ん、多分大丈夫」までしか言えないのが気持ち悪かったのもあります(正規表現の理解が充分ではないというのもあるのでしょう)。データの方に何らかの前提条件が必要なことが殆どなんですよね。
awk - パターンマッチング事始め
awkを学んだ頃に、何やらとても強力なスクリプト言語が登場したぞということで、オライリーから書籍も出たので、perlという言語を覚えてみました。
Perl
Programming Perl
まあスクリプト言語としては、なかなか速く動くようですし連想配列も使いやすいです。関数も書けますしローカル変数も使えます。UNIXの世界ではBASICインタプリタという技が使えないので、これはなかなか手軽にヌルヌルとしたコードが書けるなと喜んだ覚えはあります。
とほほのperl入門(概要編)
時代はちょうどインターネットの商用サービスが解禁され、WWWと呼ばれるWEBサービスが急速に発展しました。当時サポートされていたHTMLでは、あくまで静的なページを表示する仕組みしか持たず、そこに含まれるFORM入力などを使いたければ、CGIという仕組みでHTTPサーバから別に用意したプログラムに引き渡して処理をする必要がありました。CGIで動かすプログラムは必ずしもスクリプト言語である必要はなく、標準入力と標準出力が使えるのであれば、別になんでも良かったのですが、修正の都度コンパイルし直す必要もなく、アーキテクチャの異なるCPUであっても同じプログラムが動かせるPerlが当たり前のように使われるようになりました。そうなると猫も杓子もPerlです。CGIといえばPerlで書くものという状態となり、実にいろいろなコードが出回りました。
Perl と CGI
程なくバージョンも5に上がり「をを、このコードは今のWEBサーバではサポートしていないじゃん」と複数のperlを切り替えるようにしたり、古いコードを移植したり、人の書いたヌメヌメとしたコードと戦うわけです。perlはお手軽なのでコードを書く専門家ではない人が書いたケースも多く、中には「ええ?」という処理もチラホラあり、これをうまいこと直せたと思うと、使っていた人からは「動作が変わった」と苦情が出たり、そもそもCGIの入力側は人間が手で入れるものですから、想像を絶する使い方をする人も居て、まあどんどんコードが面倒になっていくわけです。
こんな経験を繰り返せば、その恨みは言語に向かったとしても無理はありません。別にPerl自身に悪いところがなかったとしてもです。これがもう少しキレイ書けて保守性が良く、名前空間の分離なんかが丁寧に出来ていれば気持ちも変わったのかもしれませんけど。こうして私もperlが嫌いな言語の筆頭になってしまいました。
最も嫌われているプログラミング言語は?--Stack Overflowが調査結果を発表
嫌いな言語には他にもWEBアプリで使われるような言語が多いような気もしますし、オープンソースではないMSの言語も多めですね。UIデザインのしわ寄せが言語に向かっているのかもしれませんし、文句を言うことしかできないプロプライエタリなソフトの宿命かもしれません。
Perl 公式
ヘッダ画像は、以下のものを使わせていただきました。
https://commons.wikimedia.org/wiki/File:Perl5Raptor.png
Sebastian Riedel - https://github.com/kraih/perl-raptor, CC 表示-継承 4.0, https://commons.wikimedia.org/w/index.php?curid=64031247による
この記事が気に入ったらサポートをしてみませんか?