もしもプログラミング言語が車だったら
また日記がサボりがちになってしまった。 今日は、言語を車に例えるとどうなるか、とか考えてた。 その結果がこれ。 言語も車も中途半端にしか知らないので、的を外しているかもしれないけど、ご容赦を。
- Basic
- ベストセラーを記録した往年のヒストリックカー。
- VisualBasic
- 広く親しまれているコンパクトカー (AT) 。ユーティリティが充実し使い勝手がよく、営業体制も安心できる。コンパクトカーゆえに長距離走行に難があるが、街乗りには便利。幅広いニーズに応えるため、兄弟車・派生車のラインナップを揃える。
- PHP
- ミニバン(3列シートの5ナンバー)。走行性能より実用性を重視している。両側スライドドアなどの便利機能付きで車内は広い。営業力もある。コンパクトカーからの乗換え組も多く、シェアは高い。
- Perl
- 一世を風靡したファミリーカー (AT) 。充実した装備により、初心者からマニアまで幅広く乗られている。モデル末期のためいささか古く見える箇所もあり、フルモデルチェンジが期待される。
- Ruby
- 乗り心地を重視したコンフォートカー (AT) 。高いドライビング・プレジャーを追求している。あまりシェアは高くなかったが、昨年カスタムショップによるチューニングカーが発売され、ブームを呼んでいる。
- JavaScript
- ワンボックスタイプの軽自動車。誤った方向性のカスタマイズが流行し、人気を落とす。一見、ミーハー向けの車だが、実は走行性能もなかなかのものである。近年その素性の良さが見直されている。
- C言語
- 街乗りからサーキットまでこなせるスポーツカー (MT) 。オーナーによるチューニングの余地が多いが、速く走ろうとするとそれなりの技術が必要。チューニングに失敗するとしばしばエンジンブローする。愛好者が多い。
- アセンブリ
- F1カー。互換性やコストを度外視し、極限の速さを追求する。運用には高度な知識が必要。F1で得たノウハウは他の車種に展開されている。
- Java
- 質実剛健な作りの軍用車。走らせるための手続きが厳密だが、高い安定性と信頼性を誇る。
- COBOL
- 一昔前に政府主導で開発された軍用車。世界中で使われており、高い汎用性を持つ。現在では古くなってきており、技術者の枯渇が懸念されている。
ふじさわさんが「プログラミングは難しいよ?」 と言うのは、教習所でいきなりスポーツカーに乗ろうとしたようなものなのかも*1。 重たいステアリングとクラッチに戸惑っているような。
それから、言語も車と同じで目的に応じて使い分けるものだな、と改めて思った。
備考
なんでこんなことを考えたのかというと、車の「ライトウェイトカー」と言語の「Lightweight Language」は意味が違うよなぁと思ったから。 どちらも乗り手(書き手)に対して運転(プログラミング)の喜びを与えることを目的としているけど、車のそれが余計な機能・設備(車内空間やスライドドアやリアシート)を無くして物理法則に忠実にあろうとする*2のに対して、言語のそれはインタプリタやライブラリやヘルパ機能を充実させて使い勝手を向上させようとする。 だから、「Lightweight Language」は、車で言うところのファミリーカーやコンフォートカーやミニバンなんだろうな…と。
車の物理法則が直感的なのに対して、コンピュータ (ハードウェア) の仕組みが直感的じゃないところが違うのか。 ハードウェアの直感的じゃないところをカバーするのが、ソフトウェアの役割ということか。
追記
思った以上に反響があったみたい。 Pascal がないのは、単によく知らないだけだったり。 はてなブックマークで言及されていたので引用させてもらう。
Pascal:フルマニュアル、どころか、行き先をちゃんと宣言しないと動かない。事故が減ると期待されたが、面倒なので誰も乗らない。で、楽に乗れる車に乗って(以下略/Fortrun,vect.を積んだダンプカー?
FortrunとLispが抜けているのも同様。 Lisp は知ったかぶりで書こうとしたんだけど、忘れてた。
- Lisp
- 一昔前に発売された限定車。当時としては先進的なハイテク機能を搭載していた。乗りこなすのは難しいが、そのテクノロジーは最近の車にも反映されている。