- プログラミングは曖昧な仕様を精密に磨き上げていく創造行為であり、AIは英語の仕様をコードに変換してこの過程を加速する
- 「Vibe coding」 は感覚的な開発スタイルを可能にするが、抽象化の漏れによる複雑性とバグの問題は避けられない
- 人間は複雑性を扱うために抽象化と圧縮を活用し、これはプログラミングの本質的な価値として機能する
- AGI時代には、AIがより良い抽象化を支援し、精巧で芸術的なコード創造を可能にすると見込まれる
- 「コードは死んだ」という認識とは異なり、AIはコーディングの終焉ではなく新たな始まりを開く道具として提示される
コードの死は誇張された主張
- 英語仕様の曖昧さと精密さの限界を指摘しつつ、プログラミングは文章を書くように反復的に精度を高めていく行為だとする
- Bertrand Russellの引用を通じて、「正確にしようと試みるまでは、あらゆるものは曖昧である」という点を強調
- AIは英語で書かれた仕様を実行可能なコードへ素早く変換し、利用者が段階的に望む結果を具体化できるようにする
- 「Vibe coding」 は、AIが生成した成果物に反応しながら感覚的に開発するやり方だが、これは正確な抽象化という幻想を与えうる
- 抽象化が漏れると予期しないバグが発生し、規模が大きくなるほど深刻になる
- Dan Shipperの事例のように、「vibe coding」で作った共同テキストエディタが人気を得た後、複雑性の問題でダウンした経験が紹介される
- 「ライブコラボレーション」は直感的には単純に見えるが、実際には非常に難しい問題であり、複雑性の本質を示している
抽象化と複雑性の制御
- 人間は一度に約7±2個の項目しか認識できないため、複雑性を扱う唯一の方法は「圧縮」、すなわち抽象化である
- Edsger Dijkstraの引用を通じて、「抽象化の目的は曖昧さではなく、新たな意味レベルにおける精密さである」ことを強調
- Sophie AlpertがSlackの複雑な通知フロー図を単純化した事例を例として挙げる
- プログラミングの核心は複雑性を扱うためのより良い抽象化の創造であり、関数型リアクティブプログラミングなどにその美しさを見ることができる
- 共同テキストエディタのように本質的に複雑な問題も、ReactJSやTailwindCSSのような抽象化ツールを通じて段階的に攻略できる
AGI時代とコードの役割
- AIがますます速く安価に進歩するにつれて、やがて**人間と区別できない知能(AGI)**に到達するだろう
- AGI時代には、誰もが「Karpathy級の天才100人」を安価に活用できるほど強力な知能を使えるようになると見込まれる
- しかしそれは「より多くの粗悪なコード」を量産するためではなく、より良い抽象化と複雑性理解のための道具として使われるはずだ
- コードは単にソフトウェアを作る手段ではなく、それ自体が重要な芸術的成果物であり、よく書かれたコードは詩にたとえられる
- 文章に「vibe writing」が存在しないように、コーディングも単なる感覚的行為で置き換えられるものではない
- AGIが到来すれば、機械が「粗悪でない(non-slop)」コードを書けるようになり、それは人類にとって栄光ある前進となるだろう
AIとコード品質の向上
- 現在のAIは依然として不完全なコードを生成するが、開発者たちはそれを踏まえて活用している
- Simon Willisonの見解のように、AIはより良いコードを作るための道具として使われるべきだ
- AGIが登場すれば、まず最も難しい抽象化の問題解決に投入され、共同編集エディタのライブラリのような複雑なシステムを改善することになるだろう
- Opus 4.6を活用してVal Town向けの**フルスタックReactフレームワーク(vtrr)**を開発した事例が紹介される
- React Router 7に関する未解決問題を一度に解決し、50行の単一ファイルデモで複雑性を優雅に扱った
- このようにAIと人間の協業による精巧なコード創造が可能であることを示している
コードの未来と形式主義の価値
- 社会の多くが「コードは死んだ」と信じているが、それは印刷機の発明によって物語の終わりを宣言するような誤りである
- AIはコーディングの終焉ではなく、コーディングの新たな始まりを意味する
- Edsger Dijkstra、Tony Hoare、Charles Babbageの引用を通じて、形式的思考と記号の圧縮力が人間の思考を拡張することを強調
- Dijkstraは、形式言語の使用を負担ではなく特権と見るべきだと述べる
- Hoareは、「欠陥が明白に存在しない単純な設計」と「欠陥が明白ではない複雑な設計」という2つのアプローチを対比する
- Babbageは、記号の圧縮が思考を促進する力であると指摘する
- 結論として、コードは死んでおらず、むしろAI時代においてさらに強力な創造的道具として台頭する
1件のコメント
Hacker Newsの意見
Chris LattnerがClaude AIで書かれたコンパイラをレビューしたが、革新的な部分はなかったとのこと
AIは既存の知識を平均的に再構成する傾向があり、批判的思考や新しいパラダイムを自ら生み出すことはできない
人間は既存のコンセンサスから外れて考えることができるが、AIにはそのコンセンサスへ引き戻そうとする力がある
結局のところAIは**同調主義者(conformist)**であり、それが同時に強みでもあり弱みでもある
関連記事
OAuthやSAMLのような複雑な認証設定を文書から自力で把握するのに何時間も使う必要はなく、LLMがすぐに動作する統合コードを作ってくれる
また、AIと対話しながら自分の考えを整理するラバーダック・デバッグのようにも使っている
こうした対話は、実際の開発経験がない人には難しいレベルの複雑さを持っている
本当の懸念は、AIが需要を減らして業界が供給過剰になるかどうかだ
新しいビジネス上の課題が次々に生まれるならAIは道具として役立つだろうが、そうでなければAIの有無に関係なく仕事は減っていくだろう
ニューラルネットワークは本質的に**補間(interpolation)**を行うのであって、**外挿(extrapolation)**はしない
つまり、学習済みの領域の中では精巧だが、その外では予測不能だ
Wikipediaの記事とSolidGoldMagikarpの例がそれをよく示している
Claudeの目標は革新ではなく、「AIがコンパイラを作れるか」を証明することだった
AlphaDevやAlphaEvolveのような事例を見れば、探索的学習と知識の結合によってAIが実際に革新を生み出す可能性も十分ある
ほとんどの場合、私たちが欲しいのは予測可能なツールであって、自律学習する不安定な存在ではない
AIには、矛盾した要求を整理して一貫した実装を作り出す能力がある
たとえば「青いインクで赤い線を7本引いてくれ」のような不可能な要求にも論理的に対応する
Claudeが実際に「それは不可能なので、0本の線を引くのが正直な答えだ」と答えたのは批判的思考の例だ
「AIは新しい技術を作れるのか?」という問いについて、私は懐疑的だ
AIは既存データに依存するため、新しい言語やフレームワークが登場すると、学習データが足りず進化速度が遅くなるリスクがある
AIコーディングはむしろ「車輪の再発明」を減らし、NIH症候群から抜け出す助けになるかもしれない
学習データがほとんどなくても、文書を読み、コードを書き、新しい試みを実行できる
いつかAIも創造的な技術的合成を行えるようになる可能性は開いておくべきだ
結局、開発者がAIの学習データに含まれるためにお金を払う時代が来るかもしれない
たとえばskills.shのようなプラットフォームは、AIに新しいフレームワークを教えるスキルシステムを提供している
文書とサンプルコードだけで、AIがそのフレームワークをすぐに使えるようになる
私はコードに対して相反する感情を持っている
仕事ではコードは負債だが、同時に趣味としての楽しさでもある
Star Trekのコンピュータのように、「言葉で頼めば勝手に処理してくれる」世界が近づいている気がする
社会の多くの知的資源が広告技術や監視産業に使われている
AIがコーディングを代替すれば、こうした人材再配置のきっかけになるかもしれない
私はツリー構造で、tombstoneなしに移動・削除・並べ替えが可能なCRDTを作っている
Claude Codeはコードを書くのはうまいが、何度もtombstoneを追加しようとするので、論理的証明で説得しなければならなかった
まだこうした細かな構造理解はAIが完全には身につけていないようだ
新しい技術が登場するたび、人間は常に過度な期待と実験の時期を経験する
その過程を通じて技術の限界を学ぶのが人間のやり方だ
エージェント型プログラミングの約束はあまりに魅力的に見えるが、結局は誰もが試行錯誤を通じて現実を学ぶことになるだろう
私は「コードは死んだ」という主張よりも、人間が抽象化のレベルを一段上げているのだと見ている
今では英語で仕様を書けばAIがコードを書く
しかし、完全な明確さ(specificity)が必要なときは、依然としてコードのほうが有用だ
写真編集のように、精密な制御が必要なら自分でやるほうがよいが、ほとんどの場合はAIに任せても十分だ
時間がたてば、AIは安定していてセキュアなコードを人間よりもうまく書けるようになると思う
Simon Willisonが言うように、vibe codingの本当の価値は「より速く」ではなく、「より良いコード」を作ることにある
複数の設計モデルでプロトタイプを生成し、可読性・信頼性・耐障害性の基準で反復改善できる
今ではコードレビューで「この部分をこう変えよう」と言えば、AIがすぐに修正してくれる
しかし多くの同僚は、ただ「コードが消える世界」だけを期待している
少し前にDonald KnuthがAIに証明を依頼したところ、AIがこれまで知られていなかった証明を見つけたという記事があった
しかし、それは新しい発見というより、忘れられていた資料を見つけ出した可能性が高い
こうした点が、LLMを強力な研究ツールにする一方で、まるで創造的であるかのように見せてもいる
Dragon Bookを見れば数か月で動くものを作れ、その過程で原理をすべて理解できるだろう
私はプログラミング言語が人間の意図を圧縮して表現する手段だと考えている
しかし時には、自然言語のほうがより正確で密度の高い意図伝達になることもある
良い抽象化とはこのギャップを縮めることであり、DSLやML/Lisp系言語がその例だ
たとえばElectric Clojureチュートリアルのように、コードが意図を最もよく表せることもある
結局、Wittgensteinの言うように、「曖昧な絵が、時に私たちに必要なまさにそのものかもしれない」