If programming languages were - zettsu-t/zettsu-t.github.io GitHub Wiki
もしプログラミング言語がシンデレラプロジェクトだったら
If programming languages were Cinderella Project members:
C : 美城専務
OSもコンパイラもデバイスドライバもCで作られている、つまりこの世界を統べるエグゼクティブである。ポインタ(*)は美しく輝くが、その理想はなかなか理解されないのかもしれない。「私は固定番地へのアクセスを、君はガベージコレクションを第一と考えている」のだが、これらはソフトウェアにおいて平行線のままではなく両立している。
「私はプログラマ達にメモリ解放の意思を問うている。」 Tracing GCに起因する予測不可能なブロッキングが(Boehm GCなどを使わない標準の)Cでは発生しないという特性は、古風ではあっても、時計の針は待ってくれない(ハードリアルタイムな)システムを作る上では今なお重要である。
C++ : 諸星きらり
Cがすっぽり隠れるくらい長身。手先が器用で(I/Oも触れる)、気くばりが上手な(型検査が強化されている)、とっても優しい子。「クレープ、はっ、先、食べゆ?」
型推論、テンプレート、ラムダ式、演算子オーバーロード、正規表現…とかわいいもので着飾っている。独特の言葉遣い(難解なエラーメッセージ、特にerror novelと呼ばれる長大なエラーメッセージ)がちょっと変わって聞こえるが、慣れれば正当なことを言っていると分かる。
C++2bで、もっと大きくなる予定。Haskellてきパターンマッチングもまだ標準規格に入っていないので、C++20以後も大きくなる思われる。
Boost C++ Libraries : 双葉杏
C++がいつも連れ歩いている天才。平方根を小数点以下一万桁まで求めて、司会者の度肝を抜いた(Boost.Multiprecision)。働きたくない(実行時に評価したくない)が口癖であるが、それは能力(テンプレートメタプログラミング)の裏返しである。実行時間のためなら、それにかかるコンパイル時間は割と惜しまない。
Ruby : 三村かな子
甘い物(syntactic sugar)で他人をいつも幸せにしている、お菓子の申し子。お菓子をつまみながらのおしゃべり(Smalltalk)も大好きである。ちなみにRubyの出身地の松江は和菓子処である。プログラミングは初めてという人も、美味しいから大丈夫だよ。
Bash script : 緒方智絵里
寂しがりやで、いつも起動するプロセスを探し求めている。(余計な空白文字が入っていないか)いつもおどおどしていたが、今ではビルドとユニットテストを司るレポーターである。
JavaScript : 本田未央
クラスメイトにしたい女の子No.1。あなたもブラウザで、今日も実行しているはず。たくさんいるお友達(altJS)が横断幕を作って持ってきてくれたくらい人気者である。頭がよく、運動能力も高く、状況を読んで適応するのも早い(tracing JIT compilation)。
Java : 島村卯月
どこにでもいる(run everywhere)普通の女の子、に見えるが、どこにでもいるということ自体が普通ではなく華がある。シンデレラの舞踏会ではセンターを務めたが、TIOBE indexでは2017年3月時点で一位である。かつてメモリ管理に悩まされたプログラマを笑顔にした。実行時に最適化ですね、頑張りますっ。
Scala : 渋谷凛
Javaのhot spot VMがキラキラで眩しかったから、私も輝けるかもと思ってデビューした高校生。で、アンタが私のプログラマ? ところで木構造のsibling nodeを日本語で書くとき、シブリングとしぶりんと、どちらが近い発音なんでしょうか。
Assembly : 赤城みりあ
元気いっぱいで、今も語彙(BMI : Bit Manipulation Instruction Setsとか、AVX-512とか)がどんどん増えていく小学生。お外(register renaming)でみんなで一緒に歌う(superscalarとSIMD)ことで通行人を巻き込んでいく。
VBA (Visual Basic for Applications) : 城ヶ崎莉嘉
Excelファイルをキラキラにデコって、オフィスのみんなをノックアウトしちゃう子。姉のVisual Basic(城ヶ崎美嘉)に憧れてこの世界に入った。木登りして虫を捕まえていたが、虫といえばLotus 123に由来する、1900年を閏年とみなすかどうかの動作についてJoel Spolsky氏の逸話がある。
Make : 神崎蘭子
独特の言葉遣いが原因で、多くの人にはその言葉が理解されない。でも分かる人にはその良さが分かるし、熱狂的なファンがいる。最近はconfigureやcmakeと共演することが多い。
Haskell : 新田美波
足が速い(コンパイル済バイナリを高速で実行できる)大学生。遅延評価つまり、合宿で全体練習より先に運動会をすることで、うまく全体をまとめ上げる。
Clojure : アナスタシア
LISPの方言だが、Javaのインタフェースも呼び出せるバイリンガル。
HTML (HyperText Markup Language) : 前川みく
ブラウザ画面のコンテンツの方。自分を曲げない(改行位置はともかく全文を表示する)ことが大事。いつも猫耳(<>)をつけている。
CSS (Cascading Style Sheets) : 多田李衣菜
ブラウザ画面のレイアウトの方。見た目と形が大事。
補足
- 本文章にアニメ「アイドルマスターシンデレラガールズ」公式は一切関係ありません。
- Jazz Rosende 氏による"What if Programming Languages were Pokémon?"という記事があるのですが、私自身はポケモンについて知らないので残念ながら内容が分かりません。
- はしれ!コード学園(公式)の非公式な設定資料集が各プログラミング言語を知るために役に立つでしょう。
- ユニットの組み合わせと、初出時の私の知識から上記のプログラミング言語を選びましたが、今だったら ( * ) asterisk は R(みく)とPython(だりー) にするでしょうね。統計的学習と機械学習のユニットとして、共通する部分も対照的な部分もあってそれが持ち味なので。