ChatGPT や GitHub Copilot などの大規模言語モデル(LLM)の台頭により、ソフトウェア開発において予期しない副作用が生じている。これらのAIツールは Python や JavaScript などの人気プログラミング言語でははるかに優れた性能を発揮するため、開発者はより新しい言語や専門的な言語を放棄し、AIが最も得意とする言語を選ぶ傾向にある。
Python 支配の問題
LLMは作業するプログラミング言語によって劇的に異なる性能レベルを示す。研究データによると、これらのモデルは訓練データに頻繁に現れる言語では優秀な成果を上げる一方、一般的でない言語では著しく苦戦することが明らかになっている。数百万のユーザーを持つ確立されたプログラミング言語でさえ、AI訓練時に十分に表現されていなければ、LLMの性能は低下する。
これは厄介な循環を生み出している。開発者は特定の作業に最適なツールだからという理由ではなく、AIアシスタントが最も効果的に支援できる言語だからという理由で Python を選ぶケースが増えている。新しいスクリプト言語に取り組んでいるある開発者は、潜在的ユーザーが新しい言語の学習を却下し、たとえそれがより醜く、2倍の長さで、あまりうまく動作しなくても、LLMが代わりに Python コードを生成できると言う様子について言及している。
プログラミング言語別 LLM パフォーマンス
- 高パフォーマンス: Python 、 JavaScript 、 TypeScript (訓練データに十分に含まれている)
- 低パフォーマンス: ドメイン固有言語、新しい言語、ニッチな言語
- 研究結果: 数百万人のユーザーを持つ確立された言語であっても、言語がより専門化されるにつれてパフォーマンスは劇的に低下する
脅威にさらされるドメイン固有言語
この影響は特定のタスク用に設計された専門プログラミング言語であるドメイン固有言語(DSL)に最も深刻な打撃を与えている。これらの言語は従来、特定の種類のプログラムをはるかに書きやすくし、エラーを起こしにくくすることで大きな利点を提供していた。例えば、ビデオゲームの対話システムでは、冗長なAPIコールの代わりにシンプルで読みやすい形式を使用する場合がある。
しかし、DSLはLLM時代において二重の負担に直面している。言語設計者は言語とそのツールを作成するために時間とリソースを投資する必要があるだけでなく、ユーザーもこれらの専門言語で作業する際にAI支援を犠牲にしなければならない。これにより新しい言語の採用障壁が大幅に高くなっている。
新たなソリューションと適応
プログラミング言語コミュニティは戦わずして諦めるつもりはない。専門言語とLLM機能の間のギャップを埋めるいくつかの有望なアプローチが登場している。
一つの戦略は Python を中間言語として使用することである。研究者たちは、まずLLMに馴染みのある言語でコードを生成させ、その後自動的に専門言語に翻訳することで成功を収めている。このアプローチは、ドメイン固有設計の利点を提供しながら、人気言語に対するAIの強みを活用している。
もう一つの方向性は、AI支援開発ワークフローとより良く連携する言語の作成に焦点を当てている。一部の設計者は、正式なコードと非正式な自然言語記述を組み合わせる方法を探求しており、開発者が興味深い部分を手動で書きながら、AIに日常的な接続や定型コードを処理させることを可能にしている。
「プログラミング言語の研究者や設計者は、プログラミング実践者が実際に『特定のドメインに合わせた構文と意味論を持つ言語』や、本当に洗練された言語機能を求めているという誤った前提の下で作業している。」
DSL-LLM統合のための新興ソリューション
- Python中間翻訳: まず Python でコードを生成し、その後自動的に特殊言語に翻訳する
- 形式的・非形式的ブリッジング: 複雑なロジックには手動コーディングを使用し、 AI が生成するボイラープレートと接続を組み合わせる
- 検証言語統合: LLM を使用して自動検証可能な仕様を持つコードを生成する
- セマンティックデザイン: LLM がより理解しやすい、人間が読みやすく意味のある構文を持つ DSL を作成する
停滞のリスク
より広範な懸念は、プログラミング言語だけでなく、フレームワークや開発アプローチにまで及んでいる。開発者を Python に押し向けているのと同じ力が、新しいイノベーションよりも古い確立されたフレームワークを優遇している。これにより、人間の開発者がLLMが最も得意とするものに依存し、LLMは主に人間が現在書いているものから学習するというフィードバックループが生まれている。
一部の専門家は、これがプログラミング言語の進化を完全に凍結させる可能性があることを懸念している。開発者がAIツールが理解しない新しい言語機能の実験を止め、開発者が使用していないためにAIツールがこれらの機能を学習しなければ、イノベーションは停止する可能性がある。
今後の展望
これらの課題にもかかわらず、楽観的な理由もある。LLMは意味的で人間が読みやすい構文での作業が向上しており、明確で意味のあるキーワードを持つ適切に設計された言語が、AI支援の世界で実際に利点を持つ可能性があることを示唆している。さらに、LLM訓練がより頻繁で安価になるにつれて、新しい言語機能が登場してからAIツールがそれらを理解するまでの遅れは縮小するはずである。
鍵となるのは、プログラミング言語が今や人間の開発者とAIアシスタントという二つの主人に仕える必要があることを認識することかもしれない。最も成功する将来の言語は、専門言語を価値あるものにするコア利益を損なうことなく、両方の対象を満足させることができるものになるだろう。
プログラミング言語設計コミュニティは重要な瞬間に直面している。AI支援にどのように適応するかについて今行われる選択は、計算的アイデアの表現方法における継続的なイノベーションを見るか、それとも単にマシンが最もよく理解するからという理由ですべてが Python で書かれる世界に落ち着くかを決定する可能性がある。
参考: Programming Language Design in the Era of LLMs: A Return to Mediocrity?