概要
- Bend の設計を例に、「vibe-coding」の落とし穴を指摘
- Bend はAI時代向けの新言語だが、既存の形式手法を無視
- SPARK との比較で、現代的な形式検証とのギャップを解説
- 事前調査の重要性と vibe-coding のリスクを強調
- LLMの提案に頼りすぎる問題点を明確化
Bend言語設計におけるvibe-codingの罠
- Bend はAI時代のための新言語として注目される高プロファイル事例
- 人間が「法則」を記述し、AIが実装や証明を書き、コンパイラが証明の正当性を検証する設計思想
- デモプログラムでは、プレイヤーが旗に触れたり勝利したりできないことを示すだけで 58行 のコードが必要
- LLMによる証明生成はさらに 442行 と非常に冗長
- 形式検証という分野の知見が Bend の設計やドキュメントにまったく登場しない問題
- 形式検証(Formal Verification)というキーワードすら Bend のWebページやコードベースに見当たらない
SPARKによる同一要件の実装比較
- SPARK はオープンソースの形式検証対応言語
- Bendのデモと同じ要件(プレイヤーが勝利できない)を 簡潔なコード で実装可能
- 法則と証明が一体化し、冗長な証明コード不要
- GNATprove を使えば「全てのチェックが証明された」と即座に確認
- 形式検証分野の標準的アプローチが既に存在し、 Bend はそれを無視している
vibe-codingのリスクと教訓
- vibe-codingは「雰囲気」で設計や実装が進み、 本質的な調査や既存知見の活用を怠る 傾向
- その結果、 時代遅れ や 非効率 な設計が生まれやすい
- LLMに「証明付きプログラム言語を作って」と頼むと、既存技術を無視した冗長な解決策を提案しがち
- LLMは「既に存在する標準的アプローチ」の利用を自発的に勧めない
- 事前に分野調査を行い、 既存技術や標準手法に目を通す ことの重要性
- Bendの例は、 vibe-coding の危険性や、LLMや新技術を使う際の落とし穴を示す好例