はじめに
この記事は理情アドベントカレンダー2025の12月9日の記事です。
どうも、初めて日本語で記事を書くStevesRHです。日本で暮らし始めてもう3年ぐらい経っているが、日本語に対しての把握は、3ヶ月前ぐらい触り始めたrustよりも弱いままだ。自然言語というものは、普段CFL言語だらけの世界に浸っている身からすると、脳内パーサが絶対に拒否するほどの力を持っているものなのである。特に意味も推測できないオノマトペあたりは、見た瞬間に頭がstallして全探索を行って意味を探す。nullが返してくるのがほとんどであるが。
閑話休題本記事は言葉に関わっているが。前世紀中期から、徐々にその無限の可能性を世界に示していたコンピュータの世界でも、開発者が長い時間をかけて考え出したものであれ、誰かさんが一時的な余興で決定したものであれ、様々な「専門用語」がある。今回は「面白そう」な用語とそのエピソードをいくつか紹介しようと思う。読み手のあなたが一度でも読んでる途中で「なるほど」や「これは面白い」と思ってくれれば、本記事はその役割を果たしたのだろう。
プログラミング言語
There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton
Robert NystromはCrafting Interpreterで、言語の命名に対して以下四つの原則を提唱した:
- まだ使われてない
- 発音しやすい
- 独特であり、検索しやすい
- 様々な文化においてマイナスな印象がない
とはいえ、プログラミング言語の名前から言語の特性を推測することは、実践的にはあまり当てにならない。むしろ、プログラミング言語の名前の本来の意味指向は、利用者が増えるほど失われていくのも珍しくない。Pythonと聞いて、蛇を真っ先に連想する人は、この世にはもう存在しないであろう。では、様々なプログラミンゴ言語名のセマンティックを見ていこう。
- Python:ニシキヘビ。よく見ればPythonのアイコンは二つの蛇だとわかる
- C:CharacterのC…ではなく、BCPLにおけるBの次の文字。B言語の後継なのでC(acc)を採用した。
次はP言語かな - Ocaml:ラクダ。ML方言Caml由来で、Camlのラクダアイコンをそのまま継承した
- Dune:砂の丘。ラクダから連想できるものだなあ
- Java:島。ちなみにJava Islandはコーヒーが著名なので、アイコンはコーヒーにしたようだ
- Lua:月。ポルトガル語においては「美しい月」の意味を持っているらしい。優雅な名前にふさわしく優雅な言語だ
- Go:グーグル。自社が開発した言語はもちろん自社の名前を冠した
- Ruby:ルビー。Perl由来の言語なので、同じく宝石の名前を採用した
- Rust:鉄さび。諸説あり
若すぎる- Cargo:貨物。これも謎
- HTML:リテラル「Hyper Text Markup Language」
- Brainf**k:自己規制
あと、JavaScriptの名前をまわって、まだ紛争が続いているらしい。
Java、JavaScriptとOracle
1995年、Netscape Communication社はSun Microsystems社と協力してインターラクティブなウェブサイトを開発していた。当時、Netscape社員のBrendan Eichは「LiveScript」という、「JavaScript」の初期バージョンをわずか十日間で作り上げた。同年、Sun社のJavaは世界的な注目を集めていたため、流行に乗る形で、Netscape社はSun社と相談し、「JavaScript」という名前で「LiveScript」をリリースした。Sun社もこの改名により「JavaScript」の商標を持つようになった。
時が移り、「Java」も、「JavaScript」も世界中で巨大な成功を収めた。しかし、その裏側にあるのは、Oracle社によるSun社の買収であった。買収後、Sun社の持っていた「JavaScript」商標は、「Java」と一緒にOracleの所有物になり、Oracle膨大な法務部分の「努力」のおかけでオープンな言語である「JavaScript」は自分の名前を自由に使えなくなってしまった。例えば「JavaScript開発者大会」は「JSCon大会」とか、「JavaScript標準」は「ECMAScript標準」とかに名前を変えなければならない。Oracle社はこの言語に対して何のポジティブな貢献があるかを問うと、それはゼロである。標準の制定も、ecosystemの構築にも一切参加していないOracle社は、単なる弁護士意見書を電子メールで配っている。
ハードウェア
ハードウェアの世界にも、多くのマジックワードが存在している。たくさんの領域にも流用されている、周知の「Bug」はまさにその一番著名な例であろう。皆さんがご存知の通り、トランジスタ時代の大型コンピュータは昆虫などの邪魔でエラーが生じることは少なくなかったから、こういう名前が付けられた。ちなみに現在のスーパーコンピュータでさえ、昆虫が変なところに現れると壊れる可能性が高い。
元々「エラーの原因」を指していた言葉が、使われている人の増加につれ「エラーそのもの」を表す言葉にだんだんなっていた。現在はその両方の意味とも表現されている。こういう「言葉意味の遷移」こそが、言葉の元の意味を遮蔽する要因であり、本文のunshadowingの対象である。
歴史を遡って、どのようなマジックワードがどのようなシチュエーションで作られたことを見ていこう。
サウスブリッジ、ノースブリッジとCPU
2Aの「計算機システム」の授業で習ったように、CPU-メモリバスとCPU-IOバスという二つの通信路が存在している。大雑把にいうと、これは「高速デバイス」と「低速デバイス」の応答時間がオーダー的に違うから、二つのバスと処理チップを分けて処理するという仕組みの結果である。それは、昔のマザーボードに載っていた、「ノースブリッジ」と「サウスブリッジ」チップの本体である。
「ブリッジ」は、ネット「ブリッジ」と同じような意味を持っており、ブリッジみたいにデータストリームを多数の対象デバイスに接続することを表現している。だとすると、「ノース」と「サウス」はどこからの言葉なのだろうか。
答えは割と単純である。高速バスは、CPUに近いほど転送が早くなるから、一般的にはCPUに近いところで置かれている。相対的に、低速バスはよりCPUから遠い場所にある。CPUに近いところはノースと呼ばれ、遠いところはサウスと呼ばれ、ノースブリッジ(高速バス)とサウスブリッジ(低速バス)が誕生した。
しかし、残念ながら性能向上によって、高速バスと低速バスが統合されている。今はPCH(Platform Controller Hub)という名前が付けられている。
i386、x86、x86_64とAMD64
オープンソースソフトウェアのDistributionをダウンロードするときに、「AMD64」、「x86_64」あるいは「AMD64(x86_64)」という表記をよく目にする。これは実はすべて同じく、x86アーキテクチャの64位拡張を指している。
x86アーキテクチャは、Intel社が1978年最初に開発したIntel 8086アーキテクチャを起源とするアーキテクチャシリーズで、2001年前後までに32位のアドレスを使っている。その後、4GBのメモリリミットが段々ボトルネックになり、64位のCPUをチップメーカが発売し始めた。ところが、今回は先に動きを見せたのはAMD社であった。したがって、AMD64というAMD社に名付けられた言葉が今にも流用されている。
一方、Intel社がこの命名に不満を持ち、自分の開発した64位アーキテクチャをIntel64と呼んだ。
けれども、命名の混乱を引き起こさないように、多くの下流のプロジェクトは、この二者をともに「x86_64」と呼んでいる。その例外として、MicrosoftとOracleは「x64」と呼んでおり、Linux系は「AMD64」を採用している。ちなみに、Linuxカーネルは、LinusがIntel 80386チップで開発したため、「x86」を「i386」と呼ぶ。
Bootstrap
コンピュータ世界の人に、「Boot」あるいは「Bootstrap」とは何かを訊ねると、必ず「起動する」と答えてくるだろう。しかし、この言葉の正体は、実はリテラルそのものである。
19世紀のアメリカでこういう俗語があった。「pull oneself over a fence by one's bootstraps」、「自分の靴紐を使って自分を持ち上げてフェンスを踏み越える」という意味である。これが自力で不可能であることは、高校物理が教えてくれた。
OSのCold Startは、このような「自分自身の力では不可能」なことである。しかし天才的なエンジニアたちは、デバイスも初期化してない、メモリも使えない状態でシステムを起動する方法を考案した。例えば、Intelはキャッシュを初期カーネルメモリとして使っている。このことを、Bootstrapという名前で表現している。
ソフトウェア
プログラミング言語もソフトウェアの領域に入っているけど、分けている
Cookie
HTTPは状態がないことは、ウェブサービスの発展によって、1995年前後に大問題となっていた。現代のウェブサービスにおいては普通なルグイン状態保持、カート機能などは、すべてCookieによって実現されている。
1994年、Netscape社で働いでいたLouis J. Montulli IIは、Cookieという仕組みを開発したが、Cookieという名前自体はすでに存在したいた。1979年のUNIXシステムには、「magic cookie」という変数があり、UNIXプログラムのデータパッケージを意味している。Loiusはそれを流用した。
それで、「magic cookie」はどこからの名前だろうか。これは、アメリカの中華料理屋で常にディザートとして出てくる「fortune cookie」だ。クッキの中に、短い言葉を記録した紙を入れていることは、非常にわかりやすくデータパッケージの仕組みを表現している。ところが、中国ではこういう料理がなかったらしい。元々日本由来の料理だが、ある経緯を経て最終的に北米の中華料理屋の定番として定着したという説がある。
GNU
最後に、無限展開できる有名な言葉で本記事を締めよう。
GNU -> GNU is Not Unix。