はじめに
プログラミング言語について、ChatGPTと一緒に考えてた事を記事にしておきます。
本題の前に
最近、生成AIのプログラミング力が向上していることは、皆さんも感じていると思います。
この先には、生成AIだけでプログラミングをする時代が来るかもしれません。
そうなった時の事を、ChatGPTに聞いてい見ました。プロンプトは
「プログラミング言語の選定をします。
このプロジェクトでは生成AIでコードをすべて作成します。
このため、人間に対する考慮は全く不要です。
ソフトウエアで、FM変調された電波の信号を復調するプログラムを作成します。言語としてなにを選定しますか。
選定理由も含めて候補を3つ挙げてください。」
FM変調というちょっと変わったテーマを選んでみたのは、たまたま、私が興味があって調べていたからです。
回答は、まとめの部分を貼り付けておきます。
まあ、無難な感じです。
次の質問
「CLIで動作するブロック崩しを作る場合はどう?」
回答
なるほど。
他にもいくつか例を挙げて、聞いてみました。
そして、Elixir Fanの私としては、次の質問をしたくなりました。
「じゃあ、逆にElixirが第一候補になるアプリケーションをあげてみて。」
回答
おお、なるほど。
でもちょっと待てよ。
これって、Elixirについてよく言われている情報で、単に人間の行っている事の受け売りではないか?
本題
そこで、次の質問をしてみました。
「ここに上げた選定の基準は人間が書いたドキュメントの影響を強く受けている可能性があります。このようなバイアスを排除して、生成AIでプログラムを作成するときの言語の選定方法を考えてください。」
以下は、ChatGPTの回答を整形したものです。
🧠 新しい言語選定の原則:AI主導開発パラダイム
以下に、人間の制約やバイアスを排除した、生成AI中心の言語選定方法を整理して表現します。
1. AIが正確に扱える構文と意味論を持つか(生成精度)
-
指標
- 言語の構文的曖昧さの少なさ
- AIが自然言語から構文木を生成しやすい
- 文脈依存の少なさ(例:RubyやPerlのような省略記法は誤生成率を上げる)
-
優位な言語群
- Python(シンプル構文・高い学習比率)
- TypeScript(型情報で意味論的誤りを減らせる)
- Rust(明示的・構造的でAIにとって予測可能)
2. 周辺エコシステムの明示的な構造性と宣言性(組み立てやすさ)
-
指標
- パッケージ・モジュールが構造化されていてAIが推論しやすいか
- DSL的な記述が可能か(宣言型であるほどAIが全体像を把握しやすい)
- 明確なデフォルトとフォールバックがあるか(選択肢が少ないほど安定)
-
優位な言語群
- Elixir(明快なプロセスモデル、宣言的DSL構築が容易)
- Elm(状態管理とUIが明示的、分岐が少ない)
- Haskell(型システムとモジュール構造が明示的)
3. AIが“振る舞い”を一貫してモデル化できる実行モデルか
-
指標
- 言語ランタイムが予測可能(GCタイミング、スレッドモデルなど)
- 言語が副作用を強制的に制御している(AIがロジックと副作用を分離しやすい)
-
優位な言語群
- Rust(所有権とライフタイムが明確)
- Haskell(純粋関数+IOモナドで副作用が隔離)
- OCaml(明示的な評価順と不変性)
4. AIモデルの事前学習データとの親和性(現実的な出力精度)
-
指標
- LLM(特にGPT系)が学習しているコードコーパス内で十分に露出しているか
- OSSプロジェクトやドキュメントが多数存在し、AIがコード文脈を構成しやすいか
-
優位な言語群(現在)
- Python(最大規模の学習量)
- JavaScript / TypeScript(Webフロント全体が対象)
- Rust(新興だが高精度で学習済み)
🔸この指標は人間バイアス由来に見えるが、LLMの内部構造上避けがたい現実的要因です。
5. テスト・バリデーションの自動化適性(自己修正可能性)
-
指標
- 言語がテスト駆動や仕様記述と親和性があるか(AIが自己検証コードを出力しやすい)
- Fuzzingやプロパティベーステストが使いやすいか
-
優位な言語群
- Rust(proptest, quickcheck など強力)
- Haskell(プロパティ記述が本質的)
- Python(doctest, hypothesisなど即時テスト可能)
統合された新しい言語選定アルゴリズム
評価軸 | 重視理由(AI観点) | 有利な性質 |
---|---|---|
構文・意味論の一貫性 | 誤生成防止 | 明示的構文、型安全 |
周辺エコシステムの構造性 | 組み立ての推論 | 宣言型DSL、標準化された設計 |
実行モデルの予測可能性 | 正しい挙動の再現 | 明示的な副作用処理 |
事前学習データとの親和性 | 出力精度に影響 | 学習量が多い言語・ドメイン |
自動バリデーション適性 | 自己修正能力 | テストと統合しやすい記述構造 |
🏁 最終的に選ばれる「生成AIフレンドリー言語」候補(2025年時点)
言語 | 理由 |
---|---|
Python | 構文の明快さ・学習量・テスト容易性が揃っており、AIにとって最も「制御しやすい」言語 |
Rust | 明示的設計とAIにとって予測可能な構造。高速かつ堅牢なコードが出力可能 |
TypeScript | 型付き構造・ブラウザ環境・宣言的UI構築に適し、UI系にもAIが正確に対応可能 |
Haskell | 構造の純粋さと明示性により、制約付きのコード生成には最適。学習量の課題はあるが精度は高い |
Elixir | 並行分散系の定型化・DSL設計・リアクティブ処理がAI向けに非常に適する |
👇補足:この新基準が従来とどう違うか
観点 | 従来(人間中心) | 生成AI中心 |
---|---|---|
書きやすさ | 重要(学習コスト重視) | 無視(AIがすべて書く) |
ドキュメントの量 | 多い方が安心 | 構造が明快なら少なくてよい |
IDE補完性 | 必須 | 重要でない(AIが構文生成する) |
記述の柔軟性 | 高い方が良い | 一貫性・明示性が重要 |
まとめ
この回答の真意は正確にはわかりませんが、ここに書かれているような事が重視される方向になってくるのではないかと思います。
- 生成AIがプログラミングの主役になると、言語選定の基準が大きく変わる可能性があります。
- 生成AIは、構文の一貫性や明示的な構造を重視する傾向があるようです。
- Rustは、生成AIにとって非常にフレンドリーな言語であることがわかりました。
- 私の気に入っているElixirも入っているので、嬉しいです。