# 自然言語こそ新しいプログラミング言語だ

- URL: https://gardenplace.me/ja/posts/natural-language-is-the-new-programming-language/
- Published: 2026-09-04
- Stage: 常緑
- Series: Live with AI
- Tags: AI

## プログラミングはもともと一種の文章だ

2022年の秋、友人にPythonを教えていたときのことだ。彼女は自由奔放な人で、Pythonの文法規則に従わず、だいたい意味が通ればいいと思っている。私はひどく頭を抱えた。こう言った——コンパイラには君の自由な書き方は通じない。コードは一層ずつ分解されて、末端ではすべてが式でなければならない。人間にはだいたい同じに見えても、機械にはそう見えない。記号がひとつ欠けるだけで構文木の構造がまるごと変わるんだ、と。

その後の展開は周知のとおりだ。あの冬、ChatGPTが登場した。こうして機械は本当に私たちの言葉を読めるようになった。

だから、思い上がってはいけない。自分が言ったことが揺るぎない真理だと思っていても、真理は変わる。私はPythonインタプリタの裏側の仕組みを知っていたがゆえに、自然言語でプログラミングするなど非現実的だと決めつけ、その需要が確かに存在することを見落としていた。ChatGPTが公開された直後も同じことが起きた。私の周囲で最も冷ややかだったのはNLP研究者たちだ。力業で美しさのかけらもない、と。Transformerアーキテクチャを知り抜いていた人たちこそが、知りすぎていたために魔法を感じ取れなかったのだ。

そして今日、[自然言語こそ新しいプログラミング言語だ](https://x.com/karpathy/status/1617979122625712128)ということを疑う人はいない。書くこととプログラミングの統一性はもっと昔に示されていた。SICPの有名な一節——プログラムは人間が読むために書くべきであり、たまたま計算機が実行できるにすぎない。Paul Grahamは『ハッカーと画家』でもっと直截に述べている。ハッカーと画家は同じ創り手であり、良いコードの基準は良い散文の基準と同じだ——明快で、簡潔で、リズムがある、と。私も大学の国語（中国語作文）の期末レポートでまさにこの主張を書いた。

## プログラミングパラダイムの進化

![Software 1.0、2.0、3.0の版図](https://gardenplace.me/images/posts/Software-3.0.png)

Karpathyは2017年に[『Software 2.0』](https://karpathy.medium.com/software-2-0-a64152b37c35)という記事を書き、ソフトウェアを二世代に分けた。2025年の[YCでの講演](https://www.youtube.com/watch?v=LCEmiRjPEtQ)で第三世代を加えた。三世代の違いは何の言語で書くかではなく、プログラムがどうやって生まれるかにある。

### 1.0：人が書く

まずルールを考え抜き、一行一行if-elseとして打ち込む。コンパイラ、OS、データベース、Excel、TCP/IP——今日使っているソフトウェアの大半はこうして作られた。バグが出れば、書き間違えた箇所まで一行ずつ追える。

コンパイラは1.0の極致だ。テキストが寸分の狂いもなく構文木に分解されなければならず、空白ひとつ多くても通らない。利点は決定性——同じ入力に対して必ず同じ出力が返る。代償は、書けるのが専門家だけだということ。あの時代、ソフトウェアエンジニアは世界中で足りていなかった。

2022年の秋に友人に言ったあの話は、まさに1.0の世界観だった。機械はルールしか理解しない。人が機械に合わせるしかない。

### 2.0：機械学習

人間には書けないルールがある。猫と犬は何が違うのか。スパムメールとはどんなものか。ルールが書けないなら、書くのをやめて発想を変える。目的関数とデータとネットワークの骨格を与え、勾配降下法に重み空間の中でプログラムを探させる。見つかるのは浮動小数点数の山であり、なぜうまくいくのか誰にも説明できない。ブラックボックスだ。

なぜニューラルネットワークでなければならないのか。重み空間が連続かつ微分可能でなければ勾配が進めないからだ。決定木にはその性質がない。Karpathyの原文はこう言い切っている——Software 2.0はニューラルネットワークの重みで書かれている。顔認識、音声認識、機械翻訳、TikTokやYouTubeのレコメンドシステム、AlphaGo、すべて2.0だ。Google検索の転置インデックスは1.0、2015年以降ランキングに組み込まれたRankBrainは2.0。

「ルールを人が書く必要はない」という知見は、実はもっと前に一度勝利を収めている。呉軍は『数学の美（数学之美）』の中でこう述べている。1950年代以降、NLPの主流はルールベース学派であり、Chomskyの路線に従って言語学者が文法を一条ずつ手書きしていた。1970年代にIBMのJelinekが統計的手法を音声認識に持ち込み、誤り率を一気に押し下げて、こんな言葉を残した——"Every time I fire a linguist, the performance of the speech recognizer goes up." 両派は十数年争い、1990年代には統計学派が全面的に勝利した。あれはすでにルールを手書きしない道の勝利だった。ただし当時プログラムを探すのに使っていたのは確率モデルであって、ニューラルネットワークではなかった。

2.0にはもうひとつ特徴がある。ひとつのモデルがひとつのことしかできない。顔認識のネットワークは碁を打てないし、碁を打つネットワークは翻訳できない。問題を変えるたびにデータを集め直し、一から訓練し直す必要がある。これがANI——狭い人工知能、専用知能だ。ソフトウェアエンジニアだけでなく機械学習エンジニアも必要になり、大規模データ基盤も要る。個人がモデルをゼロから訓練するのは、すでに現実的でない。

### 3.0：自然言語

2.0が見つけたプログラムの中に、ひとつ非常に特殊なものがあった。インターネット上のほぼすべてのテキストで訓練されており、文法もライブラリもStack Overflowのあらゆる議論も数兆個のパラメータに圧縮されていて、入力は最初から言語だ。再訓練する必要はない。ただ話しかければいい。あなたの言葉がコンテキストウィンドウに入り、振る舞いが変わる。重みはひとつも動かない。

これが2.0との根本的な違いだ。訓練は一度きり。その後は問題を変えても再訓練は要らない——promptを変えるだけでいい。ChatGPT、Claude Code、これらがこの世代だ。Google検索も移行しつつある。AI Overviewsがすでに転置インデックスの上に表示されている。同じモデルがさっきSQLを書き、次の瞬間に履歴書を直し、そのまた次の瞬間に量子もつれを解説する。これがAGIかどうかは議論がある。「一度の訓練で、どこにでも使える」ことに議論はない。

必要なのは、promptを書ける人だけだ。そしてpromptを書くとは、つまるところ自分の言いたいことを明確に言うことにほかならない。その人は、あなた自身でありうる。

なぜ言語がこれを成し遂げたのか。言語には生まれながらに世界を動かす力があるからだ。呪文、法令、契約——口にした瞬間に現実を変えるもの。Austinが1955年にハーバードで行った講義のタイトルはそのものずばり[『言語と行為（How to Do Things with Words）』](https://en.wikipedia.org/wiki/How_to_Do_Things_with_Words)だった。コードはその中で最も厳密な一種にすぎない。厳密すぎて、専門家しか唱えられなかった。Navalはこう言っている——プログラマはかつて魔法使いのようなもので、難解な呪文を暗記しなければ術を使えなかった。AIとは[すべての人に魔法の杖を配ること](https://nav.al/ai#:~:text=every%20human%2C%20in%20a%20sense%2C%20is%20a%20spellcaster)だ、と。あらゆる問題は言語で記述できる。だから言語を学んだプログラムは、あらゆる問題への入り口を手にしたのだ。

Karpathyはpromptはプログラムだと言う。私はこれを修辞だとは思わない。一片のテキストが機械の振る舞いを変える——これがプログラムの定義だ。

冒頭の図は少し誤解を招く。Software 2.0と3.0は、それ以前の1.0の領土を食い荒らしただけではない。むしろ主に、はるかに多くの新しいソフトウェアを生み出した。とりわけ3.0は、さらに多くの新しいソフトウェアを生み出すだろう。かつてはコストの面からソフトウェアでは満たせなかったニーズが、今は満たせるようになった。

![Software 1.0、2.0、3.0の版図は拡大している——2.0と3.0は主に新しい領土の開拓であり、1.0の置き換えではない](https://gardenplace.me/images/posts/Software-3.0-new.svg)

### 対照表

|           | Software 1.0          | Software 2.0           | Software 3.0                                                                 |
| --------- | --------------------- | ---------------------- | ---------------------------------------------------------------------------- |
| プログラムの生まれ方 | 人が書く：ルールを考え抜き、コードにする | 訓練：データの中から探し出す | 話す：自然言語でコンテキスト内に指定する |
| プログラムの姿 | ソースコード——決定的、可読、監査可能 | 重み行列——数十億の浮動小数点数、解釈不能 | 自然言語——コンテキストウィンドウ内のtoken、人にも機械にも読める |
| 人がやること | 要件分析→アルゴリズム設計→コーディング→テスト | 損失関数の定義、データセット構築、ネットワーク設計、ハイパーパラメータ調整 | 意図・制約・例示をコンテキストウィンドウに入れる |
| ひとつのプログラムが解く問題の数 | ひとつ | ひとつ（ANI） | いくつでも（ある意味AGI） |
| 代表的プロダクト | コンパイラ、データベース、転置インデックス、Excel | 顔認識、音声認識、レコメンドシステム、AlphaGo | AIチャットボット、コーディングエージェント、AI音楽生成、AI画像生成、ワーキングエージェント |
| 必要な人材 | ソフトウェアエンジニア | ソフトウェアエンジニア＋機械学習エンジニア | 言いたいことを明確に言える人（プロダクトマネージャー） |
| デバッグ方法 | ブレークポイント、ステップ実行、スタックトレースを読む | データ分布の確認、ハイパーパラメータ調整、構造変更、再訓練 | promptを直す：コンテキスト追加、例示、言い換え |
| 失敗の姿 | バグ：再現可能、追跡可能 | 汎化失敗、過学習：経験頼みの錬金術 | ハルシネーション、意図の誤解：堂々と間違える |

壁は消えたのではない。場所が変わっただけだ。1.0はアルゴリズムと文法で試され、2.0はデータと数学で試され、3.0は意図を明確に伝えられるかで試される。

では意図と表現はどう鍛えるのか。同じ「promptテクニック」でも、期限切れになるものと永く使えるものがある。[次の記事](https://gardenplace.me/ja/posts/the-prompt-trick-that-never-expires/)を参照してほしい。

## さらに読む

- Andrej Karpathy, [*Software 2.0*](https://karpathy.medium.com/software-2-0-a64152b37c35)（Medium、2017）——1.0/2.0の原型的区分。
- Andrej Karpathy, [*Software Is Changing (Again)*](https://www.youtube.com/watch?v=LCEmiRjPEtQ)（YC AI Startup School、2025）——3.0の提唱。promptはプログラムである。
- Paul Graham『ハッカーと画家——コンピュータ時代の創造者たち』（オーム社、2005年。原著 *Hackers & Painters*、2004）——プログラミングは創作行為であり、良いコードの基準は良い散文と同じ。
- Naval & Nivi, [*A Motorcycle for the Mind*](https://nav.al/ai)（Naval Podcast、2026-02）——「すべての人間は魔法使いだ」の出典。
- 呉軍『数学の美（数学之美）』（人民郵電出版社、2012年。初出は2006年のGoogle中国ブログ連載）——第2章「自然言語処理：ルールから統計へ」。ルールベース学派と統計学派の十数年にわたる抗争。日本語訳はない。

---

Message from Garden Place · https://gardenplace.me/ja/llms.txt
