# Programming Languages for AI Mark Seemann による、LLM がソフトウェアを生成する時代におけるプログラミング言語のあり方を論じたエッセイ。 ## 導入: 意図的に不合理な選択肢 Seemann は、LLM が生成するソフトウェアシステムに最適なプログラミング言語として、意図的に不合理な3つの選択肢――機械語、アセンブリ言語、[[Idris]]――を提示し、読者に考察を促す。主流言語(Python、Rust、TypeScript、Go)がコード生成に一般的に使われている現状を認めつつ、「[[バイブコーディング]](Vibe coding)」という新しい傾向の出現を指摘する。 ## 機械語という選択肢への反論 「機械語を生成する方が良いのではないか」という仮説の根本的な誤りは、高級言語の利点を単なる人間可読性に帰する想定にある。実際にはプログラミング言語は複数の特性を提供する。 - **ポータビリティ**: 機械語とアセンブリ言語は移植不可能。C やモダンな言語は複数プラットフォームへの翻訳可能性を提供する。 ## ガードレールとしての型システム Seemann は3種類のコード分析を挙げる。 1. **Linting(静的コード解析)**: 誤検知が多く、人間の監督が必要。 2. **静的型システム**: より厳密で、型チェック失敗は未コンパイル状態にとどまる。 3. **形式的手法**: 記事では詳細に踏み込まない。 著者は自身が C# と F# を10年以上書いており、動的型チェックを使っていないと述べる。Haskell についての「コンパイルできたコードはおそらく動作する」というジョークを引きつつ、Turing 完全な言語がその性質を厳密には持ち得ないことも指摘する。[[Idris]] を例に挙げた理由は、Haskell よりも強力な型システム(従属型)を持つためである。 ## 「制約は自由をもたらす」 LLM が重要なシステムを生成する場合、著者は C 言語を信頼しないと述べる。理由はメモリ管理の困難さ、ポインタ演算エラーの危険性、マルチスレッド化の複雑性、バッファオーバーラン脆弱性である。ここで「制約は自由をもたらす」という原理を引用し、静的型付き言語と堅牢なコンパイラの利点を強調する。代数的データ型を持つ言語では、警告をエラーとして扱うことで、すべての sum 型ケースの網羅的処理が必須となる。 ## AI 向けに設計された新言語という提案 Seemann は、Idris が実際に標準言語になる見込みは低く、JavaScript や Python が引き続き採用される可能性が高いと予測する。より現実的な提案として、「LLM 向けに特別設計された新言語」の開発を挙げ、[[Szymon Teżewski]] の研究を参照しながら「Design by inconvenience(不便さによる設計)」という概念を引き合いに出す。 AI 向け言語に求められる特性: - 強力な静的型チェッカー - 精密化型(refinement types) - 従属型(dependent types) - 人間の書きやすさより検証可能性を最適化すること ## 結論 LLM がすべてのコードを書く未来において、プログラミング言語は無関係になるのではなく、むしろ検証可能性がより重要になる、というのが著者の最終的な主張である。 ## 出典 - [[.raw/articles/programming-languages-for-ai-2026-09-10.md]] - https://blog.ploeh.dk/2026/03/30/programming-languages-for-ai/