王垠:不懂程式設計的人想用AI成功做專案,幾乎是妄想!

好久沒轉王垠的博文了,今天在知乎上刷到關於王垠的話題,原來是他在 7 月初寫的一篇文章《我用 AI 程式設計的經歷》,在知乎上引發了熱議。
全文轉載如下:

王垠:我用 AI 程式設計的經歷

現在網路上真是太多誤導了,說 AI(LLM) 程式設計太厲害,一行程式碼沒寫完成了專案之類。根據我之前用 ChatGPT,Claude,Copilot,最近用 Cursor 的大量實際經驗,不懂程式設計的人想要用 AI 作出成功的專案,幾乎是妄想。
會程式設計,但不懂真正的計算機科學,不懂如何寫出極其簡單,邏輯精密的程式的人,想要靠 AI 寫出“王垠級別”的程式碼,當然也是妄想。
Cursor 這個月給我生成了 6 萬多行程式碼,猜我接受了多少行?不到 5000 行。經常走偏方向,大量重複同樣的邏輯而不懂合理抽象,甚至把我經過反覆手動調整本來正確的部分改錯,把我給它糾正過的地方又改錯,寫一大堆複雜的測試把自己套進去,最後無法明白為什麼測試“不透過”……
幾天前建立的一個新專案,耗費我 20 多個小時的“口舌”,最後生成 2 萬多行程式碼,複雜到無法修補,我不得不決定完全推翻重來,它居然還在歡呼“成功了!” 並列出一項項的“成果”,對完全沒道理的基本錯誤視而不見。一遍遍地給它指出問題沒解決,然後它一次次的回答“哦,我知道了!”,“這次我找到問題的根源了!”結果全是畫餅…… 因為實在沒法改對了,只能自欺欺人吧?
你說目標不要定太高太快了,要有策略。我們一點點的從最基本的小函式開始寫,一步步的進行,它就能做對嗎?我發現它連小塊的程式碼也不一定寫的好。有些幾行的小函式都要我糾正多次,它才能改對。然後說不定將來什麼時候它又把它們改錯了,所以你得盯著它,你得懂什麼程式碼看起來是對的。
但知道什麼樣的程式碼是好的對的,這就是最難的事情。沒有深入的研究和很多的經驗,是無法知道的。是的 AI 現在成了碼農,我成了 VP。但一個不懂計算機科學的 VP 領導著一群寫麵條程式碼的碼農,能做出什麼好東西?呵呵,我看著一個個的公司裡存在的類似現象,就明白了。不知道手下的人在做什麼,不知道誰說的是對的,不知道下一步該做什麼。有多少 VP 是在瞎蒙亂撞,坑蒙拐騙,我都是清楚的。
所以有了 AI 還是沒用,因為你沒有能力駕馭它。你沒有資格做 VP。
因為世界上絕大部分的程式碼都是平庸的麵條程式碼程式設計師寫的,訓練資料都是那樣,所以 AI 幾乎沒法寫出“王垠級別”程式碼,也是意料之中的。我發現把我寫好的程式碼給 AI,它確實能進行一些有用的分析和改進,但完全從頭開始寫的話,AI 真是寸步難行。幾乎每一個小的函式都需要我反反覆覆多次的糾正,才能達到我期望的簡單和可理解程度。
我的計算機科學班裡的程式碼,全都是極其精闢的程式碼,跟普通公司的程式碼有著天壤之別。所以上我的課的同學,是沒什麼希望使用 AI 來完成練習的。因為資料量太少,沒有訓練資料啊,所以 AI 恐怕永遠也無法達到這種精闢程度。當然畢業之後,同學們的水平都遠超 AI,也遠超作為 AI 訓練資料來源的那些平庸程式設計師。
這就是為什麼我的課程叫做“計算機科學”,而不是“程式設計”。計算機科學家和程式設計師/軟體工程師是有巨大差別的。AI 也許能取代普通程式設計師,卻永遠無法取代計算機科學家。它只能被計算機科學家利用,作為他的工具。
別誤會了,我其實覺得 AI 是很好的東西。使用它們的時候,顯然我解決問題的速度加快了很多,很多煩人的事情不用我親自去管了。這就是為什麼經歷了這麼多次失敗我仍然繼續使用它們。但你必須明白,AI 只是把人的能力翻倍了而已,如果你的能力是 0,無論乘以多少都仍然等於 0。

推薦閱讀


相關文章