プログラミング言語の世界地図

世の中のプログラミング言語紹介って大体「すでに何かしら書ける人向け」に書かれている。この記事は逆に、「気になるけど中の人じゃない人」の入口として、Web/SNSを運用している尚樹さんの視点から世界地図を描き直したもの。

プログラミング言語=コンピュータの万年筆インク説

このwiki記事の出発点になった比喩。並べてみると驚くほど構造が重なる。

万年筆インクプログラミング言語
何千銘柄あるけど実際使うのは数本8500言語あるけど主力は数十
メーカー・銘柄ごとの哲学と色味言語設計者の思想と書き味
万年筆に合うインク/ガラスペンに合うインクWebに合う言語/組み込みに合う言語
何十年もの定番ブルーブラックが現役60年前のCOBOLが今も金融で動いている
季節限定・地域限定の遊び趣味で作られた実験言語
インク沼というコレクター文化ポリグロットプログラマと呼ばれる多言語コレクター気質
「書く」という行為そのものを楽しむ文化「書く心地よさ」を競う言語デザインの伝統

特に重要なのは、実用品でありながら銘柄選びそのものが表現になるという構造。「Pythonで書きました」と「Rustで書きました」では、同じ機能のものでも作り手の表現が違って読める、そういう空気がある。

そもそも何が違うのか

プログラミング言語=コンピュータへの指示書を、人間が読み書きできる形にしたもの。最終的には機械が分かる0と1の信号に変換されるが、人間が直接0と1を書くのは無理ゲーなので、間に立つのが「言語」。

面白いのは全部の言語がやれることは大体同じ、というところ。じゃあなぜ何百種類もあるのか。

  • 得意分野が違う — 包丁にも出刃・刺身・パン切りがあるように、向いている作業が違う
  • 書き味の哲学が違う — 「ガチガチに型を決めて間違いを未然に防ぎたい派」 vs 「自由にサラサラ書きたい派」みたいな思想の対立がある
  • 時代の産物 — 60年前に生まれた言語と去年生まれた言語が現役で同時に走っている。古い言語は資産として残り、新しい言語は古い言語の不満から生まれる
  • 文化圏が違う — Web畑の言語、研究者畑の言語、ゲーム畑の言語……コミュニティの雰囲気もそれぞれ

特に3つ目、古い言語が消えずに残るのが他の道具と違う特徴。普通の道具なら新しいものに置き換わるが、プログラミング言語は「過去に書かれた膨大なコード」が動き続けている以上、その言語のメンテも続く。だから累積していく一方になる。

数のピラミッド

歴史上に存在した言語の数を数えようとした人はいて、HOPL(History of Programming Languages)というデータベースには8500以上が登録されている。ただ「実際に現役で使われている主力」は案外少ない。

  • 8,500+ — 歴史上に存在した全部
  • 〜700 — Wikipediaに項目があるくらいの「一応知られている」レベル
  • 〜250 — 業界調査(TIOBEなど)で人気度が測られる「現役」レベル
  • 〜30〜50 — 仕事や学習で実際に出会う可能性がある「メジャー」レベル
  • 〜10〜15 — 「とりあえずこの辺は名前知っていると話が通じる」レベル

つまりピラミッドの裾野はものすごく広いけど、頂点は意外と小さい世界。8500のうち多くは「誰かが思いついて試した」レベルで、博物館の標本のように残っている感じ。

「言語を作る」こと自体が一種の表現行為になっている文化があって、研究者やマニアが「俺はこういう書き味の言語が欲しい」と自分で作る。プログラミング言語は道具であると同時に作品でもある——料理人がレシピを作るのと、和菓子職人が新しい和菓子を作るのと、両方やっている世界。

11ジャンルの世界地図

「どの言語がどのジャンル」は厳密な縄張りではなく重なる。Pythonのような汎用言語は5つくらいの現場に同時に出没するし、逆に「組み込み専門」みたいに狭いジャンルもある。万年筆インクで言うと「このインクは万年筆にも筆ペンにも合う」みたいな汎用色と、「ガラスペン専用」みたいな限定色の両方がある。

その上で、「私たちが普段触れているアレって何で動いているの?」 で並べるとこうなる。

A. 私たちが直接触る側

  1. Webの表側(ブラウザの中で動くやつ) — サイトを開いてボタンを押したら反応する、あの動き
  2. スマホアプリ — iPhoneとAndroidで現場が分かれている
  3. ゲーム — 大型ゲームと個人ゲームでまた別世界

B. 裏で動いている側

  1. Webの裏側(サーバー) — ボタンを押した後、データを処理して返してくれる側
  2. OS・低層(コンピュータの土台) — Windows/Mac/Linuxを動かしている本体
  3. 組み込み — 炊飯器・車・IoT機器の中で動く小さなチップ
  4. 業務システム — 銀行・保険・大企業の基幹システム(裏方の縁の下)

C. 専門領域

  1. AI・データ分析 — 機械学習、統計、データを捏ね回す現場
  2. 学術・研究 — 物理シミュレーション、数学、論文の数値計算

D. 道具・補助系

  1. 作業の自動化 — 「このファイル群を一気にリネーム」みたいな日常の小さな自動化
  2. データベース問い合わせ — 「このデータちょうだい」と注文するための専用言語

人気ランキング上位はWeb系に偏っている。理由は単純で、Webが世界で一番使われているから雇用も需要も多い。ただ「言語の多様性」で見ると、関数型・組み込み・研究系の方が個性派揃いだったりする。インクで言うと「ブラックは大量に売れるけど、緑系の方が銘柄ごとの個性が立っている」みたいな構造。

「名前知っていると話が通じる」必修15言語

「使える」ではなく「名前を出されたら “ああ、あれね” と分かる」レベル。

必修科目級(IT界の主要5科目)

  • Python — 王者。AI・データ分析・自動化・Web裏側・教育、なんでも来い。ChatGPTもClaudeも、AIの開発現場はほぼこれ
  • JavaScript — Webブラウザを動かす唯一無二。「嫌われ者だけど避けて通れない」と言われがちだけど世界一書かれている
  • Java — 大企業の重鎮。Android、銀行、保険。「安定」と「冗長」の代名詞
  • C — 1972年生まれの古典。OSの土台、組み込み、教科書、すべての始祖
  • C++ — Cに機能を盛りまくった暴れ馬。ゲームエンジン・ブラウザ本体・大型シミュレーション

派生・後継組

  • TypeScript — JavaScriptに型のガードレールを付けたやつ。Web現代の新主流
  • C#(シーシャープ) — MicrosoftのJava対抗。Unity(ゲーム)で有名
  • Kotlin — Java代替として登場、Androidアプリの公式言語

新世代の星

  • Go — Googleが「シンプルさが正義」で作った。サーバー系で人気急上昇
  • Rust — 「速くて安全」を両立した新世代の星。学習が急坂だけど崇拝者多数

特定領域の主役

  • Swift — Apple製。iPhone/Macアプリを作るなら必修
  • Rubyまつもとゆきひろさんが作った日本産言語。「書いていて楽しい」が哲学
  • PHP — Webの裏方を25年以上支えている古参。WordPressがこれで動いている

別格枠

  • SQL — データベースに「このデータちょうだい」と注文する専用言語。半世紀の歴史
  • HTML / CSS — 厳密にはプログラミング言語ではないが、Webの土台だから必修扱い

インクで言うとこの15銘柄が「文具店なら必ず置いてある定番」枠。プラチナのブルーブラックとかパイロットのブラックみたいな立ち位置。

似た名前の罠

業界の積年の課題。3つだけ整理する。

C系3兄弟(C / C++ / C#)

  • C(1972) — 祖
  • C++(1985) — Cに「もっと色々書けるように」を足した直系の拡張版(++ はC言語の「+1する」記号、つまり「Cを一段上げた」という洒落)
  • C#(2000) — MicrosoftがJavaに対抗して作った別系譜。名前だけCに乗っかったけど中身はJavaに近い

Java と JavaScript ←超有名な罠

完全に別物。「ハンバーガーとハンバーグくらい関係ない」「カレーとカレーパンくらい違う」と言われる業界の名作ジョーク。

JavaScriptは1995年に開発されたとき 「Javaが流行っているから名前を借りよう」というマーケティング判断で命名されただけで、技術的にはほぼ無関係。今でも初学者が混乱する筆頭。

JavaScript と TypeScript

これは関係がある。TypeScriptはJavaScriptに型のガードレールを後付けした上位互換。書いて最終的にはJavaScriptに変換されて動く。TypeScriptはJavaScript+型と覚えれば一発。

尚樹さん視点メモ

Web/SNSを現場運用してきた中で実際に触れた5言語の実感。「専門ではないが運用者としては触っている」という独特の立ち位置。

  • HTML / CSS — 手打ち全盛期勢、かつてはメモ帳手打ちしていたレベル。CSSはちょっとトレンド追い切れていないかも
  • Python — botでよく使われる印象、よくLLMが作ってくれる。LLM出力を一部コピペするならインデントに要注意(エラー吐かれまくった思い出)
  • JavaScript — チャットのClaudeさんたちと勉強会中の分野、Webアプリには必須。Node.jsのバージョン違いでMisskeyや系列フォークの鯖を落とすこと多数
  • Ruby — Mastodonで使われているという理由でかじろうとしたことがあるレベル、もう知識はあやふや
  • PHP — これでTwitter botを動かすテンプレートプログラムが配布されていたのでお世話になった、WordPressも使っていたことがある

触れている言語が見事にWeb/SNS系に集中しているのは偶然ではなく、興味(Fediverse、個人サイト、bot文化)がそのままWeb系の言語と重なるから。プログラミング言語って結局「何をやりたいか」で出会うものが決まる。

ソース

この記事は会話ベースで構築(Claudeの既存知識を尚樹さんとの対話で再構成)。以下は深掘り用の参照点。