人が読んで確かめる量を、言語の側で減らします。
AI にコードを書かせ、人が確かめる作り方です。書く速さは AI が決め、生産性は人が確かめる量で決まります。 AI が書いたコードを人が 1 行ずつ読んでいたら、AI がどれだけ速く書いても意味がありません。
仕様どおりに動くかは、走らせれば判ります。テストで確かめられ、AI 自身が回せます。
メモリが安全かは、走らせても判りません。通ったテストの外で壊れます。 解放した後に使う、確保した外へ書く、2 つのスレッドが同じ値を同時に触る。 人がコードを 1 行ずつ読んできたのは、このためです。
*C++ で書いた部分では、検査を全部効かせた姿で、メモリの安全は言語の側が保証します。 危ない書き方は書けず、寿命の問題は起きず、不正な操作はその場で理由を出して止まります(= 安全性)。
*C++ で書いた部分では、人がコードを読んで確かめる理由が無くなります。 残るのは仕様どおりかの確認で、それは走らせて確かめられます。人のレビューは「読む」から「走らせる」に置き換わります。もちろん、耐久性のテストは AI が得意とするところです。
AI の得意なやり方は、書く → 走らせる → 止まった理由で直す、の繰り返しです。*C++ は、このやり方に 3 つの点で合います。
| 止まる時に、理由が出る | 前処理の検査と実行時の検査が、何がどこで違反したかを出します。黙って壊れることがありません。 |
|---|---|
| 直しが、その場所で済む | 制約は 4 つで、違反した行を直せば通ります。設計を組み直す要はありません。 |
| AI は、もう知っている | *C++ は C++ です。新しく覚えるのは、制約 4 つと書き方だけです(= トレードオフ)。 |
Java や C# も、メモリの安全を言語の側が持つ言語です。直しがその場所で済む点でも、AI と相性の良い言語です。 *C++ がそこに足すものは 2 つです。
1 つは、囲い忘れた競合を見つけることです。Java と C# にも synchronized や lock があり、正しく囲えば競合は起きません。 ただし、囲い忘れた所を言語は見つけません。気づかないまま値が壊れます。 *C++ で書いた部分では、囲い忘れに遭遇するたびに、その場で止めます。
もう 1 つは、ネイティブで動くので処理が速く、さらに速さが要る所では、いまの C++ のまま書けることです。実行環境を挟まず、要らない管理と検査は外せます。
AI に書かせるときに効く 5 つの点で、Java・C#・Rust・いまの C++ と *C++ を比較します。
| 言語 | 止まる時に理由が出るか | 直しはその場所で済むか | メモリの安全 | 囲い忘れた競合 | AI が学習した量 |
|---|---|---|---|---|---|
| Java(JVM)実行環境が回収する | 出ます(例外) | 済みます | 言語が持ちます | 見つけません | 多い |
| C#(.NET)実行環境が回収する | 出ます(例外) | 済みます | 言語が持ちます | 見つけません | 多い |
| Rust所有権を型で書く | 出ます(コンパイル時) | 済まないことがあります(借用の検査は通るまで動かず、直しが組み直しになります) | 言語が持ちます | コンパイル時に排除します | あります |
| いまの C++確保と解放を自分で書く | 出ません(黙って壊れます) | 済みます | 持ちません | 見つけません | 最も多い |
| *C++C++ に制約 4 つ | 出ます(前処理と実行時) | 済みます(違反した行を直せば通ります) | 言語が持ちます(検査を全部効かせた姿) | 見つけます(実行時) | まだ無い(C++ の知識で書けます) |
※ 当社が調べた範囲です(= 2026 年 9 月 13 日時点。公開されている資料に基づきます)。
いまの AI は、*C++ を知りません。学習した文章が、まだ無いためです。 ただし *C++ は C++ ですので、仕様書を文脈に入れれば書けます。そして、前処理のエラーと変換ツールが、教師になります。
まず向いているのは、ネイティブで動く速さが要る所(= ゲーム・モバイル・組み込み)です。 サーバー側のように実行環境の上で足りる所は、Java や C# のままで良い場面が多いと考えています。