By Lennart Tange

一口に「プログラム言語」といっても、その種類は多岐にわたり、それぞれ他にはない特徴や長所、短所を備えているものです。Floobitsでソフトウェアエンジニアを務めるビョルン・ティップリング氏は16種類の言語をさまざまな武器に例え、それぞれに備わっている個性を表現しています。

If programming languages were weapons

http://bjorn.tipling.com/if-programming-languages-were-weapons



◆01:「C言語

プログラムの基本ともいえるC言語は、アメリカの半自動小銃「M1ガーランド」とのこと。その理由は「古いが、信頼性は高い」から。



◆02:「C++

C言語の拡張版として誕生したC++は「ヌンチャク」に例えられています。その理由は「うまく使えば強大な能力を発揮するけど、体得するためには数年のつらい修行が必要で、きっと『やめときゃよかった』と思うことがたびたびあるから」だとのこと。



◆03:「Perl

Perlは「火炎ビン」。その理由は「有用な時代もあったが、もうあまり使われていない」というもの。



◆04:「Java

オブジェクト指向プラミング言語の代表格の一つであるJavaを武器に例えるとアメリカ軍で使用されている「M240機関銃」。その意味は「弾薬ベルト(=プログラムコード)に問題があるとNullPointerExceptionの例外エラーが発生し、暴発して殉死するから」だそうです。ちなみにNullPointerExceptionはぬるぽの語源。



◆05:「Scala

Scalaは上記のJavaから派生した言語。武器ではありませんが、Scalaのトレーニングマニュアルは非常に難解な書き方になっており、ちんぷんかんぷんになってしまうとのこと。



◆06:「JavaScript

ウェブブラウザでよく用いられ、これなしではネットが成り立たないともいえるJavaScriptは「持ち手のない剣」。優れている部分とダメダメな部分が混在しているということでしょうか。



◆07:「Go

Googleが開発しているGoは「初心者用ピストル」。撃ったあとに本当に発射されているのか確認する必要アリ。また、どこに命中したのかも確認が必要。



◆08:「Rust

Mozillaが開発するRustは「3Dプリンター銃」で、理由は「いつの日か本当に使えるようになるかもしれない」から。日本では実際に3Dプリンター銃を作って発射したとして逮捕者の出た事件が記憶に新しいところです。



◆09:「bash

bashはUNIXのソフトウェア環境を全てフリーウェアで実現することを目的としたGNUプロジェクトのために書かれたもの。その様子は「親指ばかりを狙う呪われたカナヅチ」のようなもの。できれば手にしたくない感じは伝わってきます。



◆10:「Python

大学の入門用プログラミング言語として人気を集めているといわれているPythonを武器に例えると、銃身が2つ並んだダブルバレル型のショットガン。「常に交互に銃弾が発射され、肝心なほうから発射されることがない」というのが理由だそうですが、なんとなくもどかしさは伝わってきます。



なお、ショットガンではなく拳銃タイプにもダブルバレル式のモデルが存在しています。

2丁の銃をくっつけて2発の弾丸を同時に発射できるようにした型破りな拳銃「ダブルバレル・ピストル」実物フォトレビュー - GIGAZINE



◆11:「Ruby

日本人エンジニアのまつもとゆきひろ氏によって開発されたRubyは「きらびやかな剣」。その意味は「ピカピカしているからという理由だけで用いられるから」とのこと。



◆12:「PHP

動的ウェブページを構築するためのPHPは「ホース」。果たしてホースが武器と呼べるかどうかは定かではないですが、その利用方法は「ホースの一方を自動車のマフラーに装着し、一方を車内に引き入れてからエンジンをかける」というもの。



◆13:「Mathematica

Mathematica(マセマティカ)のことは「宇宙低軌道投入型キャノン」。なんだかよくわかりませんが、その理由は「とてつもないことが可能になるが、購入できる人がいる場合に限る」とのこと。とはいえ、必ずしも手に入れられない額でもないようです。



◆14:「C#

Microsoftが開発したオブジェクト指向プログラミング言語であるC#は「ロバの背中にくくりつけられた強力なレーザーライフル」とのこと。「ロバなしではとても使い物にならない」ということですが、この場合のロバが何を意味するのかは不明。C#はコンパイルした中間コードを実行するので、「レーザーライフル」に相当するC#は強力な性能がありながら「ロバ」のように鈍重な実行環境が足かせになっている、ということなのかも。



◆15:「Prolog

Prolog(プロログ)は「AI兵器」。なんだか強そうですが、その理由は「指令を与えるとその通りに実行するが、同時に『ターミネーター』を生みだしていつか君のママを殺しに来る」とのこと。



◆16:「LISP

もっとも歴史の古い高水準言語の一つであるLISPは「歯ブラシなどから作った手作りの刃物」。その心は「使ってるヤツはたいていちょっとアブない」からだそうで……



いろいろと辛口のコメントが並んでいましたが、それぞれの特徴をざっくりとつかむには役に立つのかもしれません。このほかにもティップリング氏のTwitterには「Dartはダーツ(dart)。酒をしこたま飲んだ後にバーで使うから」や、「Objective-Cマスケット銃。みんなもう覚えていないけど、いまでも現役で使えるから」といったコメントが寄せられていました。