
なぜプログラミング言語は複数あるのでしょうか?
それは「柔軟性の階層」が関係しています
今でも「一番速いが、一番難しい」と信じられている言語がC言語、C++です。
しかし今はAIによって、誰でも難しい言語を扱える時代になりました。
ならば、AIに出力させる言語はC言語にすべきではないか――
そうはなりません。
なぜなら、言語の進化は「難易度」ではなく
柔軟性の階層構造によって決まってきたからです。
ITは半世紀以上にわたり、
「柔軟性の階層」を一段ずつ積み上げてきた産業です。
そして市場は、その階層ごとに
最も経済合理的な言語を選び取ってきました。
第一階層:機械語 ―― 完全な決定性
パンチカードの時代、
プログラムは機械語でした。
0と1。
CPUが直接理解できる命令です。
柔軟性はありません。
しかし決定性は完璧でした。
ここでは、
人間が機械に合わせる
という構造だったのです。
第二階層:アセンブラ ―― 記号化という最小の抽象化
ADD
MOV
JMP
命令に名前をつけただけです。
しかしこれは、最初の抽象化でした。
それでも依然として、
- CPU依存
- 移植性ゼロ
- ハードウェア中心
という構造は変わりませんでした。
柔軟性は限定的だったのです。
第三階層:C言語 ―― コンパイラという革命
1970年代、C言語が登場します。
Cが変えたのは速度ではありません。
コンパイラによる移植性
です。
CPUが変わっても、
コンパイラを書き直せば動きます。
ここで初めて、
「柔軟性」が経済合理性に勝った
のです。
UNIXが広がったのも、この柔軟性ゆえでした。
Cは“速かったから”普及したのではありません。
「抽象化と性能の均衡」が取れていたから
広く受け入れられたのです。
第四階層:JITと仮想マシン ―― 実行時最適化
次に登場したのが、JavaやPythonです。
これらは一見すると遅い言語のように思われました。
しかし裏側では、
- JITコンパイル
- 実行時最適化
- VMによる抽象化
が発達し、性能差は次第に縮まりました。
ここでITはさらに一段、
実行時柔軟性
を手に入れたのです。
そして現在:第五階層 ―― AI
ここが本題です。
AIとは何でしょうか。
それは、
仕様を解釈し、コードを生成する抽象化層
です。
機械語
アセンブラ
C言語
JIT言語
に続く、
第五の柔軟性階層
と位置付けることができます。
重要なのはここです
ITの歴史は、
階層ごとに「最適な言語」を選び続けてきた歴史
でもあります。
機械語には機械語の役割があります。
CにはCの役割があります。
JIT言語にはJIT言語の役割があります。
そして現在の構造は、
半世紀を超える競争の中で洗練された
経済合理性の極致に近いものです。
この構造が全面的に崩れる可能性は低いと考えられます。
行き過ぎた柔軟性は地獄です
ここで少し視点を変えてみます。
ITは柔軟性の階層を積み上げてきました。
しかしなぜ、それぞれの階層は「固定」されてきたのでしょうか。
なぜ、すべてを一つの超柔軟な仕組みに統合しなかったのでしょうか。
答えは単純です。
行き過ぎた柔軟性は、地獄になるからです。
スイスの多機能ナイフ
73機能を搭載したスイスアーミーナイフを思い浮かべてみてください。

あなたはこれを持ってサバイバルしたいでしょうか。
あるいは、日常使いしたいでしょうか。
確かにすごい製品です。
確かに何でもできます。
しかし、
重い。
分厚い。
何がどこにあるのか分からない。
結局、日常で使うのは3つか4つの機能だけです。
プログラマも同じです。
機能を足し続けたツールは、日常では不快になります。
できることが限られているからこそ、快適に開発できます。
C++がC言語を拡張し続けた結果、
今なお「最も習得が難しい言語」として君臨しているのは
プログラマの我慢の限度をよく表しています。
クックパッドのレシピ約393万
私は今日、楽に美味しいものを作って食べたいだけです。
約393万ものレシピを検索して使いこなしたいわけではありません。
選択肢が増えすぎると、体験は悪化します。
これは感覚論ではありません。
行動経済学でも示されています。
選択肢が多すぎると、人は決断できなくなるのです。
同じように、自由すぎるプログラミング言語は常に嫌われてきました。
生き残った言語は、
柔軟性や抽象度に応じて
きちんと「制限」が加えられています。
制限こそが、洗練です
C言語は自由ですが危険です。
Pythonは柔軟ですが、できることは整理されています。
どの言語も、
その階層において「程よく制限」されている
からこそ使いやすいのです。
だからこそ生き残りました。
ITの歴史は、
柔軟性を積み上げる歴史であると同時に、
制限を洗練させる歴史
でもあります。
そして今、AIは第五の階層に加わりました。
しかしAIもまた、
既存の階層を壊すのではなく、
その上に乗る存在と考えるのが自然です。
だから結論は逆になります
AIがCを書けるかどうかは問題ではありません。
問題は、
AIという第五階層が、どの階層を扱うのが自然か
という点です。
答えは明らかです。
AIは抽象化の上に積み重なった層です。
ゆえに自然に扱うのは、
JIT言語や高抽象言語
です。
Cは第三階層です。
AIは第五階層です。
階層を飛び越えて直接制御する必要はありません。
結論
少しだけ、私の身の上話をさせてください。
私が最初に習得した言語はJavaScriptでした。
その後、Perlを習得しました。
当時、まだ物事をよく理解していなかった私は、
Perlでデーモンを書くという暴挙に及びました。
その結果については、説明するまでもないでしょう。
言語には、その階層(レベル)に応じた
環境的な柔軟性と、それに最適化されたクールな制約があります。
それらは偶然そうなったのではありません。
長年の競争と淘汰の中で磨かれてきた、
いわば「完成されたレシピ」です。
AIが登場したからといって、
そのレシピを無視してよいわけではありません。
AIもまた、その階層構造の上に乗る存在です。
置き換えるのではなく、活かす。
それが、自然であり、経済合理的なのです。
