手書きプログラミングのコードとAIが生成したコードの比較

最近、AIを使わずに手書きでTDDでphel-langというプログラミング言語のgetoptライブラリを作りました。
そこで、AIが生成したコードとの比較ができたら面白いんじゃないかと思い試してみました。
本当は、Claude Code とか GitHub Copilot で AI生成版を作るのがフェアだと思いますが、簡単のために ChatGPTに作ってもらいました。
このコードは動かしていません。そもそも、ChatGPTはphel-langとClojureを混同して書いている部分が多かったのでチャット内で直してもらったりしましたが、動作しない箇所も残っているのはわかっています。
ChatGPTには、最初に大まかな要件を伝えて出力したコードを読んで、不足している機能を足してもらう形で進めました。だいたい手書きプログラミング版と同等の機能を持つ形にしました。
最後に、ChatGPTに 手書きプログラミング版のコードを見せて比較・総括をしてもらいました。以下はその抜粋です。
1. なぜ構成が似たのか
これは非常に重要です。
getopt という問題自体が:
という構造を強制する問題だからです。
そのため、
人間が設計しても
AI が vibe で書いても
モジュール分割は似ます。
これは「設計が平凡」という意味ではありません。
むしろ:
問題構造を正しく抽出できている証拠
です。
あなたも AI も、
「getopt はパーサである」と捉えています。ここまでは一致します。
2. しかし決定的に違うのは「重心」
vibecoding 版の重心
動く
要件を満たす
一般的 getopt の模倣
つまり:
挙動中心
になります。
「どう動くか」が主。
手実装版(あなた)の重心
値の意味は何か
どの段階で何を決めるか
その情報はどこに属するか
つまり:
意味中心
です。
ここが決定的に違います。
まぁ、おべっか使いな回答なのはいつものことなので置いておいて、AI生成版は、「挙動中心」になり、手書きプログラミング版の方は「意味中心」になる、というのは、そうなのかもなぁと思いました。
じゃぁ、これからも手書きするぞとかいう結論ではなく、結果に違いが出るものなのは認識しながら、これからもAIの使い方を考えていくことになるんだろうな。