
2025/12/10 2:11
If you're going to vibe code, why not do it in C?
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
スティーブン・ラムズは25年間にわたりコーディングを教えてきた経験豊富な教授で、非プログラマーをプログラマへと転換させることを目指しています。彼は「バイブコード」(AI生成コード)を強く嫌い、それは不正行為のように感じられ、自分自身の作品を完全に理解する喜びが奪われるためです。それでも、バイブコードは堅牢で複雑なシステムを作り出し、問題解決に効果的であることを認めています。
Structure and Interpretation of Computer Programs(SICP)を用いて、ラムズはプログラムは機械だけではなく人が読むために書くべきだと強調し、プログラミング言語は主に人間の利便性とエルゴノミクスの周りで設計されていることを指摘します。彼は次の問いを投げかけます。「機械効率を優先するバイブコードがあるなら、人間最適化された言語を使う必要はないのでしょう?Cやx86アセンブリを直接書く方が良いのでは?」また、バイブコードは未定義動作やメモリ管理といった低レベルの問題をほとんどのプログラマよりも上手に処理していることにも触れています。
将来について、ラムズはAI生成に特化した「バイブ指向プログラミング言語」(VOPL)の可能性を示唆しています。VOPLは実行可能な擬似コードとして機能し、アセンブリを生成するか、コード作成の文学的・批評的実践へと進化するかもしれません。しかし、新しい言語を立ち上げることは困難です。大規模言語モデルは訓練された言語でしか優秀ではなく、完全にAIネイティブな新言語を作るには時間と広範な開発者採用が必要になるからです。
ラムズの曖昧さは明らかです。彼は「手書きコーディング」が時代遅れになることを恐れつつも、ENIACからストアドプログラムコンピュータへの移行に似た新しい計算パラダイムの興奮も感じています。彼は歴史的抵抗(グレース・ホッパー、EDVAC)を引用し、機械自動化と人間制御との継続的な緊張関係を示しています。
本文
スティーブン・ラムズ
「それでは、x86アセンブリでやってみるのはどうでしょうか?」
この「ちょっと無礼に聞こえる」考えにさらに踏み込む前に、まずいくつか整理しておきましょう。実際にはそのほど皮肉らしいものではありません。
まず、私は**Vibe Coding(ヴァイブ・コーディング)**が好きではありません。
プログラミング自体は大好きで、90年代半ばから末尾にかけて最初の一歩を踏み出して以来ずっと愛しています。その情熱はまるで仕事としてではなく「遊び」であるような感覚です。プロフェッショナルとしても取り組んでいますが、趣味としてもやっています。
「好きなことをすれば、人生のどこでも働く必要はない」と誰かが言ったことがあります。コードを書く私にとってそれは真実です。25年間教鞭を執り続けてきましたが、新学期の初日であっても今の私は当初と同じくらいワクワクしています。プログラミング経験のない人をプログラマーに育てることこそ、私の人生の仕事です―それが大学教授として最も誇りに思うことです。
Vibe Codingは言葉で説明しにくい汚れた感覚を抱かせます。単なる「カンニング」(それは確かにそうですが)だけではありません。また、全体の楽しさを大きく奪ってしまうとも感じています。私は人々によくこう言います。「プログラミングとは世界最高のクロスワードパズルを解くようなものだが、解けた瞬間に実際に踊ったり歌ったりする」そうした瞬間をVibe Codingは奪ってしまうので、本当に自分でやったという感覚が薄れます。
プログラマになるとは、ほぼ永続的なアポリオー(コンパイラが何をしているか完全に理解できない、仮想メモリの仕組みがわからないなど)と共存することですが、自分のコードを一寸も見落とさずに理解できる喜びは否定できません。フラストレーションがある――でもそれが満足感にもつながります――自分が書いたコードの境界線を知ることで、Claude が何を書いたか完全には掴めなくても。
Vibe Coding は実際に機能する
それは堅牢で複雑なシステムを構築できます。多くの人は「そんなことはできない」と思うでしょうが、それは誤解です。Vibe Coding はコード問題の検索エンジンとしても、さらにその上を行くものとしても優れています。自分で解決するには面倒すぎる小さなタスクを渡せば、素晴らしい結果を出します。「あるプログラムのアイデアがあります…」と AI モデルに投げかけた瞬間、その驚きは言葉に尽くしがたいものです。
完璧? ほぼそうではありません。しかしそれも人間のコーダーにとっては重要な点ではないでしょう。将来については、質問自体が答えを持っているように思います。
SICP(Structure and Interpretation of Computer Programs)から学んだこと
プログラミングへの愛着が深まる初期段階で「コンピュータ・プログラムの構造と解釈」を読み、今では教育的傑作として評価しています。その中に記憶に残る教訓があります。
「私たちは、コンピュータ言語は単なるコンピュータを操作する手段ではなく、方法論についてのアイデアを表現する新しい形式的媒介であるという考えを確立したい。従って、プログラムは人が読むために書くべきものであり、機械が実行するために偶然に合わせているものだ。」
この言葉を私は学生たちへ何度も繰り返してきました。コンピュータは「機械のため」だけでなく「人間のため」にコードを書かれるべきです。
アセンブリを含むすべてのプログラミング言語は、人間にとって便利になることが目的です。もしある言語が革新的だと言えるなら、コンピュータに新たな機能を与えるためではなく、私たちがより簡単に表現・推論できるようにするためでしょう。オブジェクト指向言語はメンテナンス性や拡張性、エラーチェックなどを助けますが、コンピュータの観点からすればそれらは単なるヒープメモリの変化に過ぎません。
関数型プログラミング、代数的データ型、依存型、ホモイコニシティ、不変データ構造、ブラケットスタイル…これらを議論できますが、私たちが主に解決すべきは人間の問題です。機械側の課題として対応するものはずっと少ないのです。
Vibe Coding に人間中心言語を使う理由
もし Vibe Coding がソフトウェア開発の未来であるなら、なぜ人々が「Vibe Coding しない」人向けに設計された言語を使い続けるのでしょうか? VOPL(Vibe-Oriented Programming Language)――Vibe に特化したプログラミング言語――は存在すべきでしょうか?
VOPL は以下のような形になる可能性があります。
- 実行可能な擬似コード:本当の擬似コードでアセンブリを書きつつ、その過程を示す。
- リテラトゥープログラミングスタイル:AI が文学的ドキュメントから機械語を生成し、構造主義やポスト構造主義へと進化する可能性。
- 自然言語に近い言語:既存のものよりも自然言語に近く、AI を信頼できる解決策へ導くイディオムを備える。ゴルーチンは不要だが「並列スラング」が存在する。
LLM はすでに数十億行の JavaScript, C++ などを学習しているため、VOPL のブートストラップは難しいですが不可能ではありません。多くのプログラマは既に Vibe Coding を通じてプロダクションレベルのコードへと手探りで進んでいます。
パラドックス
私がこの全体についてどのように感じるか、まだ定まっていません(最初と二番目のポイントを参照)。「手書きコーディング」がモンテッソーリ式のステージとして終わりを迎えることは、ある意味で残念です。将来 Photoshop を使う人や計算機なしでは生きられない人にとっては、単なる輪郭描画や代数的なバランス方程式が必要になるだけかもしれません。
一方、新しい計算パラダイムの誕生には興奮があります。近頃、人々は「計算を行うたびに機械全体を書き換える」こと(1945 年の ENIAC を思い出してください)が非効率だと気づきました。EDVAC のようなストアド・プログラム型コンピュータが登場すると、人々は「信頼性が低く、速度が遅く、オペレーターが作業から外れた」「専門職が脅かされる」「概念の純度が失われる」と不満を述べました。グレース・ホッパーもまた、「機械が別の機械に命令を書き込む」という人気の考えに対して反論しなければならなかったことがあります。
同じ Vibe、子供たちが言うように――
インカミング: home | blog | index
キーワード: プログラミング, AI
最終更新: 2025‑12‑07T16:29:42-0600