⛳
AIとプログラミング言語を作ったら、Rustの二重ロック地獄にハマった話
AIと一緒にプログラミング言語「Nyash」を作っている話
Nyashという「Everything is Box」哲学の言語を作ってます。
最近、とんでもないバグに遭遇しました...
server = new SocketBox()
server.bind("127.0.0.1", 8080) // ✅ 成功
server.isServer() // ❌ false !?!?
なぜ状態が消えるのか?原因はRustの二重ロック地獄でした。
🔍 問題の詳細
何が起きていたか
Rustド素人の私がAI(Claude/Copilot)と作った設計:
// インタープリター側(外側のロック)
Arc<Mutex<dyn NyashBox>>
// SocketBox内部(内側のロック)
struct SocketBox {
is_server: Arc<Mutex<bool>>, // またロック!
}
→ 二重ロック地獄でデッドロック+状態不整合
💡 解決策
Gemini先生に救われた
「責務の二重化です」と一発診断。
解決策:
- Box内部:Arc<Mutex>完全禁止
- インタープリター:一元ロック管理
// 新設計
struct SocketBox {
is_server: bool, // シンプル!
}
🎯 学び
AIプログラミングの落とし穴
- AIは正しいコードを書くが、アーキテクチャ判断は人間次第
- 言語知識不足でAIの出力を適切に評価できない危険性
- 複数AI(Claude設計+Copilot実装+Gemini診断)の威力
Everything is Box言語の今後
現在Phase 9.75として15個のBox型を大改造中...
Discussion