2025年12月6日 星期六

火爆的斯坦福“不寫一行代碼”計算機課,到底在教什麼?(Eric Hsu)

 //Eric Hsu

火爆的斯坦福“不寫一行代碼”計算機課,到底在教什麼?

快刀青衣
上周,斯坦福計算機系的CS146S這門課在我的X(原Twitter)裡刷屏了。這裡說一下,CS就是計算機科學的意思。這門斯坦福計算機系的課程全名叫《現代軟體發展者》,授課老師米哈伊爾·埃里克(Mihail Eric)說過一句話:要在不寫一行代碼的情況下完成所有課程專案。
就是這話引爆了輿論。不少自媒體直接拿來就用,宣稱以後程序師再也不用學代碼了,這是編程的終結,AI已經讓碼農失業;也有網友更直接,說斯坦福這是在培養“提示詞工程師”,以後連代碼都不用看懂了。
看到這些短視頻時,我的第一反應是:斯坦福計算機系真的會開一門這麼“傻瓜”的課嗎?帶著這個疑問,我找到了課程的完整教學大綱,還看了一些深度分析。結果發現這些媒體都理解錯了。這門課不僅不是“降維打擊”,反而是“升維要求”。說實話,它對計算機基礎能力的要求,比傳統課程只高不低。
所謂的“不寫代碼”,其實是一個徹頭徹尾的誤導性說法,或者說是一種爽文寫法。這種說法就像“躺在家裡天天刷短視頻,不用工作,天上突然掉下一個白富美,死心塌地帶著巨額財富非要嫁給自己”一樣,只能在腦海裡想想,不能當真,更不能誤人子弟。
咱們先搞清楚這門課到底在教什麼。首先,CS146S這門課程,從課程編號就能看出來,是一門高年級課程。這裡,我岔開分享一下斯坦福的課程編號規則,還挺有意思的,也方便你以後看到斯坦福的計算機課程時,馬上知道它屬於什麼等級。
咱們開頭說過,CS是計算機科學的意思。重點在146這個數字,在編號體系裡,編號為1到99的課程,通常是基礎課或通識課,面向包括非計算機專業在內的所有學生;而100多的基本是計算機本科生專業課程。最後的字母尾碼S含義比較靈活,通常是課程主題或特別班的縮寫。
所以,翻開教學大綱你就能發現,這門課的設計,不是在學校禮堂裡搞一個那種AI編程的通識公開課,而是預設學生已經完成數據結構、作業系統、軟體工程這些傳統CS課程。也就是說,選這門課的學生本身就有扎實的編程基礎。
課程大綱裡的內容相當硬核,比如第二節課就要構建自訂的MCP伺服器、編寫終端自動化腳本、搭建AI測試套件。這些內容的技術深度,遠超任何圖形化的低代碼工具。更關鍵的是,學生必須具備識別AI幻覺、發現邏輯漏洞、排查安全後門、優化性能問題的能力。換句話說,你得看得懂代碼,還得看得出代碼的問題。
那“不寫代碼”到底是什麼意思?其實是代碼的生成方式變了。
在這門課裡,學生不需要一行一行手敲代碼,但他們要做的事情一點都不簡單:用自然語言向AI下達清晰指令,讓AI生成代碼,然後對AI生成的代碼進行嚴格審查、測試和驗證。需要注意的是,這裡的產出物可不是拖拽式低代碼平臺生成的玩具,而是標準的、工業級的代碼,Python、TypeScript、Rust這些語言一個不少,運行在真實的伺服器和架構上。
這就帶來一個有意思的矛盾:不寫代碼,不等於不需要懂代碼。恰恰相反,這門課對學生的要求是升維的。傳統編程課,你只要會寫就行了,語法對了、邏輯通了、能跑起來就算過關。但在這門課程裡,你不僅要懂代碼,還要懂系統架構、數據流程轉、介面設計,要理解大模型的工作機制、智慧體的架構邏輯。因為你要指揮AI完成複雜工程任務,如果你自己都不清楚系統應該長什麼樣,AI怎麼可能幫你做出來?
值得一提的是,授課老師米哈伊爾·埃里克是斯坦福計算機系畢業的,之前在亞馬遜Alexa擔任AI科學家,還創立過AI代碼工具公司。這樣的背景說明,他比誰都清楚大模型的局限性和風險,開這門課也不是為了趕時髦。
所以,CS146S的核心不是“不寫代碼”,而是“編程方式的轉變”。從手動編寫代碼,變成用自然語言編排系統、用測試驗證品質、用邏輯推理發現問題。這種轉變的本質,是從“碼農”變成“架構師”的思維升級。
在我看來,這種轉變背後,其實藏著一個更深層的變化:驗證能力正在取代生成能力,成為程序師的核心壁壘。也就是說,“品味”正在決定程序師的護城河。
有一些場景,可能在外行人看來特別不可思議,比如一群程序師會圍著一台計算機螢幕指指點點,由衷感歎“太美了”。你以為他們在看什麼亂七八糟的東西,擠進去一看,才發現他們在看黑色窗口上的綠色代碼,還用“美”“帥”這類明顯形容人的詞來誇獎代碼。這就是優秀程序師的特質,和優秀的作者、優秀的設計師一樣,他們不僅會做,更重要的是對自己領域的作品有審美能力。
過去,寫代碼是技術活。你得記住語法規則,知道各種庫怎麼調用,一行一行把邏輯翻譯成計算機能理解的語言。這個過程慢,還容易出錯,但好處是你對每一行代碼都心裡有數。現在AI把代碼生成這件事變成了容易事,幾秒鐘就能吐出幾百行代碼。那麼問題來了,這些代碼靠譜嗎?
說實話,AI寫代碼確實快,一天寫上萬行都不在話下,但它也確實愛犯錯。有時候是邏輯漏洞,有時候是安全後門,有時候是性能低下。更要命的是,這些錯誤往往藏得很深,表面上代碼能跑,實際上埋了一堆雷。這就要求程序師必須具備一種新能力:在不親自編寫代碼的情況下,通過測試、邏輯推理和對系統的理解,來判斷AI生成的代碼到底有沒有問題。
這種能力,可比寫代碼難多了。寫代碼是確定性過程,你知道輸入是什麼、輸出應該是什麼,中間邏輯一步一步推導就行。但驗證代碼是開放性問題,你得想到各種邊界條件,考慮各種異常情況,從系統角度去審視這段代碼會不會引發連鎖反應。這需要更強的抽象思維能力,也需要更深的系統理解。
所以現代程序師的職責,不僅是指揮AI,更重要的是擔任AI的“看門人”。在CS146S的課程設計裡,有個很重要的環節是教學生如何識別“AI垃圾代碼”——那些不加節制地堆積起來,導致代碼庫膨脹、邏輯混亂、難以維護的垃圾代碼。
從這個角度看,也能說明CS146S要求的能力比傳統編程課高。傳統課程只要會寫就行,這門課卻要求你不僅會寫,還得會審、會測、會判斷,這可比之前難多了。
不過,對於這種教育變革,國內學者的態度要冷靜得多。南京大學軟體學院副院長劉嘉老師,他也就斯坦福這門計算機課發了一條朋友圈。他認為,像斯坦福CS146S這類“AI-native軟體發展課”,大概率會成為未來計算機科學體系的一塊重要拼圖,甚至可能成為非專業學生的必修課,但有個前提是,它不能替代傳統的基礎課程。
劉嘉老師的邏輯很清楚。學生要驗證代碼、判斷代碼品質,靠的是什麼?是對底層知識的扎實掌握。你得懂數據結構,才能判斷AI生成的演算法效率高不高;你得懂作業系統,才能發現AI寫的多執行緒代碼有沒有鎖死風險;你得懂網路通訊協定,才能看出AI設計的介面會不會有安全性漏洞。所以僅僅會用AI工具,遠遠不夠。
他還特意強調了一點,從米哈伊爾·埃里克的教學大綱來看,CS146S是一門高年級課程,預設學生已經完成了數據結構、系統、軟體工程這些傳統課程。也就是說,這門課的定位是“在扎實基礎之上,學習如何與AI協作”,而不是“用AI替代基礎學習”,這個順序不能顛倒。
更有意思的是,劉嘉老師還提出了一個他正在糾結的問題:AI編程課程到底應該面向低年級學生,還是高年級學生?他認為,AI編程未來應該成為大學的基礎類課程,就像高等數學和英語一樣。因為在未來,即使是非計算機專業的學生,也需要具備低門檻的AI編程能力——比如寫腳本、處理數據、編寫自動化報表。這些能力可能會像使用Word和Excel一樣,成為最基本的職場技能。
基於這個判斷,他提出了三層課程設計思路。第一層是通識課,叫《AI與計算表達》,目標是讓所有學生看懂一點代碼,能用AI編寫程序解決身邊的小問題,並且敢於懷疑AI寫的代碼。第二層是理工和經管專業的基礎課,叫《AI輔助編程與分析》,目標是讓需要用代碼的學生會用AI寫工具和實驗,有一定的修改能力,培養迭代提示詞的能力和習慣,還有代碼驗證能力。第三層是實踐訓練營,叫《AI4Code Bootcamp》,目標是讓有意願深入的學生能為一個真實場景設計人機協作方案,並做出可用的原型。
這個三層設計思路,其實揭示了一個事實:AI編程不是讓編程變簡單了,而是讓編程的門檻和天花板同時發生了變化。門檻降低了,普通人也能用AI完成一些基礎編程任務;但天花板也提高了,要成為真正的高手,你需要掌握的知識反而更多、更複雜。
對咱們同學來說,這件事意味著什麼?
我覺得最重要的一點是:別被“不寫代碼”這種說法誤導了。AI確實在改變編程方式,但它改變的不是“編程變簡單了”,而是“編程能力的定義變了”。現在,會編程意味著你會設計系統、會驗證品質、會指揮AI,這要求其實更高。比如我們這樣的互聯網公司產研團隊,以前程序師的界限很清楚,有前端工程師、架構師、後端工程師、測試工程師,但是在未來,這個界限會非常模糊。每個人都應該能在AI幫助下,完成一個方向的閉環工作,不會再出現自己寫完代碼、其他工程師來測試的情況。
當然,過去一段時間,也有不少家長問我,AI時代是不是還需要讓孩子學編程。我的建議是,如果孩子喜歡,還是可以學的。因為一些青少年編程課,教的不是成年人的編程技能,而是面對問題的邏輯思維能力。不過家長也要留意,有些編程課只是讓孩子拖拖拽拽生成點兒互動小遊戲,但沒有任何思考環節,這種課程還不如讓感興趣的孩子自己在家玩《我的世界》這類需要動腦的遊戲。
相關連結:斯坦福CS146S課程

沒有留言: