Perlの哲学 - Perlに対する誤解を解く

Perlはレガシーですか?

「Perlはレガシーですか? 」という質問に答えてみます。

Perlはなぜレガシーだと信じられているのでしょうか?

こちらから、まず質問です。どうしてあなたは、Perlとレガシーという言葉で、検索をしましたか?

おそらくそれをどこかの記事で読んだり、だれかから聞いたから、検索したはずです。

自分がPerlという言語を試してみるにあたって「Perlなんて将来性があるの?」という不安があって、検索していませんか?

Perlの側からは、悪い意味で、レガシーと表現したことはないので、それは、Perl以外のユーザーが広めたものです。

Perlはオワコン、Perlは古い、Perlはもう終わりといった表現も多用されてきました。

Perlは現代的な動的型言語のオリジナル

Perlは、現代的な動的型言語と呼ばれるプログラミングの中で、一番最初のもので、オリジナルの実装が数多く含まれています。

Perlは、C言語とLispとシェルスクリプトと自然言語を参考にして、作成されました。これらの言語のオリジナルな特徴を言語の中に取り入れ、組み合わせ、現代的動的型プログラミングの始祖となる新しいプログラミングが発明されました。それがPerlです。

Perlの機能における参考言語の特徴を新しく組み合わせた仕組みは、あまりに革新的で、優れていたため、それは、他の言語に広く取り入れられていきました。

プログラムをファイルの先頭から書ける、コンパイルなしで実行可能なプログラム、動的な変数の型、動的配列と連想配列が言語機能として存在すること、可変長の文字列、変数展開、ガーベッジコレクション、ワンライナー、モジュールとCPAN、C言語拡張、無料のプログラムコミュニティイベント、など、現代的な動的型言語として、採用されているものは、Perlおよび、Perlが参考にした言語からの機能です。

〇〇言語は、すごくわかりやすい、すごく使いやすい、入門向けといわれている機能のほとんどは、PerlやPerlを参考にした言語からの機能です。

Perlへのネガティブキャンペーン

Perlは優れていたために、Perlを否定するためには、ネガティブキャンペーンしかありません。印象操作を行って、ユーザーにPerlを触れさせないようにする低品質マーケティングが広範囲に行われました。

ネガティブキャンペーンの一例

「PerlのリファレンスカウントのGCはおもちゃ。GCですらない。」

「Perlは、一度書いたらメンテンナンスできなくなる書き捨て言語」

「プログラムは、読む方が多いのだから、読みやすい言語で書くべき」(Perlが読みにくいとPerlの側から語ったことはないよ)

「Perlで開発したらメンテナンス不能になった」

「Perlで書くと読めない」

「Perlで募集を出すよりも、〇〇言語で募集を出した方が人の集まりがよいよ」

「Perl to 〇〇」

「Perlコアのソースコードは、私が見た中で、最悪のソースコードです。」

スクリプト言語の解説をやって「A, B, C, D」と書いて、解説として自然な文脈で「Perl」だけ含めない。この忌避行為を大手メディアが10年間続ける。(徹底的な無視は単なるハラスメント)

「Perlの将来性は ☆2、〇〇は☆5」

「Perlより改善された言語があるのに、なぜ今さらPerlを使う必要があるのですか?」(Perlより改善された言語があるとはPerlの側から語ったことはないよ)(過去の偉人はプログラミング言語に銀の弾丸はないと語っているよ)

「Perlは企業サポートがないから不安。〇〇は企業サポートがあるから安心」

(企業買収される可能性は考えていなかったのかい?)

「末尾にセミコロンをつけるのは、小学生までだよねー」

「Perlのことは、もう忘れましょう」

「Perl死ね」

「Perl殺す」

「シェルスクリプトにPerlを含めるべきではなーい。いいね、いいね、300」

「Perlで例外処理にevalという言葉を選ぶようなセンスはクソ」

「Perlは、トレンドですらない」

(実際に目の前で)「〇〇言語なら仕事いっぱいあるんですけどねー。〇〇言語の入門書を見せる」

(あのー、Perlのプロフェッショナルなんですけど...)

「Perlなんてやってって、大丈夫っすか?」(驚いているような表情で)

(Perlのみが話題の掲示板にやってきて)「今でもPerlは使われていますか? 今では〇〇言語の採用がほとんどです。」(内容は嘘)

(Perlに悪い統計が現れると)「Perlは、過去最低の順位~」(一方で、良い統計は評価しない。Linux/Unix採用数、ライトユーザー数、給与平均など)

(実際の順位上昇は、トレンドスパム、検索エンジンスパム、ソーシャルスパムによるものも大きい)

「〇〇言語は、学ぶべき言語~、Perlはもう学ぶべきではない言語~」

「今は〇〇言語ですよ。Perlユーザーは2020年には、いなくなっていますよ」

数多くのPerlに対するネガティブな印象操作キャンペーンが広く行われてきました。

ネガティブキャンペーンはだれが主導しているか

ネガティブキャンペーンの中心は「インターネットメディア」と「インターネットメディアに支配力を持つ企業」です。

「インターネットメディアに支配力を持つ企業」は、自社製品の肯定的な宣伝広告を何十億以上の費用を出して、幅広く外部の広告企業に外注します。外注された企業は、さらに、下請けに宣伝広告の作業を外注します。

金銭的な協力があることを表示しないままニュースメディアに記事として取り上げさせる、googleトレンド上昇、TIBOE順位上昇、stackoverflow順位上昇、検索エンジンの検索結果で目立たせる、google検索の関連キーワードで目立たせる、検索窓に途中までキーワードを入力したときに自社製品が表示されるようにする、ソーシャルコメントで肯定的な意見を書く、SNSでいいねをたくさんつける、他のコミュティのイベントで意図を伝えずに自社製品を口コミさせる。

最終的には立場が弱く低時給のフリーランサーが、彼らの製品の絶賛記事と競合製品のネガティブキャンペーンをWeb上にばらまきます。

Web上の不自然にみえるくらいの多すぎるいいねには、裏があるのです。

そのために、製品品質として優れているPerlに対して、周囲からネガティブな評価を見聞きすることになります。

もちろん人間の心としての自然なブランド意識によるPerlを選びたくないという感情はあります。

たとえば「あいつはナイキの靴を履いているから、自分はニューバランスの靴を選ぼう」のような自然なブランド選考です。

ただ、Web上では、自然な感情のように錯覚させて誘導するために、意図的に悪意がばらまかれていることに注意してください。

Perlの現状を教えてください

Perlの現状について書きます。

Unix/Linuxサーバー管理におけるテキスト処理

Perlは、Unix/Linuxサーバー管理におけるテキスト処理の分野で広く使用されているプログラミング言語です。

Perlは、UbunutやDebianなどのdebian系のLinux OSの補助スクリプト、opensshやgitなどのミドルウェアの補助ツールとして採用されているので、ほとんどのLinux/Unixにインストールされています。

最小構成では、Perlを含まれないCentOSやRedHatのようなOSもありますが、ミドルウェアが現代的なWeb開発環境では必須に近いものがあるので、Perlは、まずインストールされていると考えてよいでしょう。

Perlはバージョン間差分が少なく、もしそれほど知られていないUnix/Linux系OSに現場でであっても、Perlであれば、まったく同じ記述でプログラムを書くことができます。AIXやSolarisなどでも、同じようにPerlプログラムは動きます。

また驚くべきことにEBCIDICと呼ばれる汎用機における文字コードのサポートをPerlは続けているので、汎用機の文字コード処理をするときにもPerlを使うことができます。

Web開発における一定のシェア

また、Web開発においても、Perlは一定のシェアを持ちます。

WebはHTTPで通信します。プロトコル仕様さえ合えば、どのようなプログラミング言語でも組むことができるので、Web開発の分野は、プログラミング言語の多様性が大きいです。競争は激しく、ネガティブキャンペーンや、シェアの拡大競争が行われやすい分野です。

HTTPというのは、基本的には、テキストで表現されるプロトコルです。

PerlはLinux/Unixサーバー上のテキスト処理が最も適した分野なので、自然にLinux/Unixサーバー上で行われるHTTP通信、つまりWeb開発においても、パフォーマンスとプログラムの組みやすさにおいて優れています。

Webフレームワークの機能も2020年においては、他のプログラミング言語と見劣りすることはなく、Perlプログラミング言語の優れたテキスト処理の特徴をいかして、パフォーマンスや記述の簡潔性において、非常に良くなっています。

WebSocketなどでpush通知を実現したりするリアルタイムWeb対応がやりやすいというのもPerlの特徴です。

2020年におけるトレンドのクラウドサーバー上でVMを動かす場合は、サーバー間を疎結合として構成するので、この点もPerl+Webフレームワークという構成が、やりやすいです。

また、システムのコストと品質の面で、オンプレミスやVPSを選択する場合でも、クラウドサーバー上で動いていた構成を、短時間で環境移行ができます。