AI 技術前沿

當程式碼開始自己寫自己:Andrej Karpathy 的 Software 2.0 宣言

2017 年 11 月,剛加入特斯拉五個月的 AI 總監 Andrej Karpathy 發表了一篇部落格文,宣稱神經網路不只是另一個工具,而是一種全新的程式設計方式。八年後回頭看,他抓對了方向,卻低估了規模——他以為神經網路會取代人寫的程式碼,結果是語言模型讓每個人都能寫程式碼。

來源: Medium
當程式碼開始自己寫自己:Andrej Karpathy 的 Software 2.0 宣言

本文為「AI 經典文獻回顧」系列第九篇,介紹 Andrej Karpathy 於 2017 年 11 月發表的部落格文〈Software 2.0〉。這篇文章主張神經網路不只是機器學習的一個分支,而是一種全新的軟體開發範式——軟體的「程式碼」不再由人類撰寫,而是由資料和優化過程自動生成。

封面圖


五個月前他加入特斯拉,五個月後他重新定義了軟體

2017 年 6 月,兩件事幾乎同時發生。

Google 的八位研究員發表了〈Attention Is All You Need〉,提出 Transformer 架構,我們在上一篇已經詳細談過它如何改變了一切。同一個月,Andrej Karpathy 離開了他共同創辦的 OpenAI,加入特斯拉擔任 AI 總監,直接向伊隆.馬斯克(Elon Musk)匯報。他的任務是帶領 Autopilot 的電腦視覺團隊,讓特斯拉的車學會用攝影機看懂世界。

五個月後,2017 年 11 月 12 日,Karpathy 在 Medium 上發表了一篇部落格文,標題只有兩個字加一個數字:Software 2.0。

這篇文章不長,讀完大概十分鐘。它沒有數學公式,沒有引用論文,沒有基準測試的數據表。但它做了一件大膽的事:它宣稱一種全新的軟體開發範式正在成形,而大多數人,包括軟體工程師自己,還沒意識到這件事正在發生。

Karpathy 的觀點很直接。他說,過去五十年來我們寫軟體的方式——用 Python、C++、Java 這些程式語言,一行一行寫出明確的指令告訴電腦該做什麼——這是 Software 1.0。它當然有效,但它有一個根本性的限制:程式設計師必須把問題的解法完整想清楚,然後翻譯成電腦能理解的語言。

Software 2.0 不一樣。在這個新範式裡,你不告訴電腦「怎麼做」,你告訴它「做到什麼」。你準備好資料,設計好目標函數,然後讓梯度下降(gradient descent)在神經網路的參數空間裡搜尋最佳解。最終產出的「程式碼」——也就是神經網路的權重——是人類讀不懂的,但它能完成任務,而且往往比人寫的程式碼做得更好。

從文字遊戲到實戰觀察

如果 Software 2.0 只是一個漂亮的隱喻,它不會成為經典。Karpathy 的說服力來自他舉的例子,而這些例子不是理論推演,是當時正在發生的事。

視覺辨識是最明顯的戰場。2012 年 AlexNet 用深度學習碾壓傳統方法之後(我們在系列的 AlexNet 篇章中詳細介紹過),整個電腦視覺領域在短短五年內幾乎完全轉向神經網路。以前工程師要手工設計特徵提取器——邊緣偵測、色彩直方圖、SIFT 描述子——一層一層堆疊成辨識系統。現在這些全不用了。你餵進去一百萬張有標註的圖片,神經網路自己學會怎麼看。

語音辨識走了同樣的路。機器翻譯也是——統計式的短語翻譯模型被端到端的神經網路取代。圍棋更不用說了,AlphaGo 和後來的 AlphaGo Zero 證明,一個只看棋盤狀態的卷積神經網路,可以下贏任何人類精心打造的手工規則引擎。

但 Karpathy 舉的最有說服力的例子,來自他自己的工作。

在特斯拉,Autopilot 系統原本有大量 C++ 程式碼來處理各種駕駛情境。隨著神經網路的能力增長,這些 C++ 程式碼一段一段被刪除,功能由神經網路接管。攝影機影像的拼接、跨時間的資訊整合、從多個角度理解同一個場景——這些原本需要工程師寫明確規則來處理的任務,最終都交給了一個不斷變大的神經網路。

這不是「用 AI 輔助開發」。這是 Software 2.0 的程式碼——神經網路的權重——實實在在地取代了 Software 1.0 的程式碼——人寫的 C++。

為什麼 2.0 比 1.0 好

Karpathy 不只是宣稱神經網路能做到人類做不到的事,他還提出了一個更根本的論點:Software 2.0 在結構上就比 Software 1.0 優越。

傳統軟體是異質的。一個典型的應用程式裡混雜著字串處理、資料庫查詢、邏輯判斷、I/O 操作、記憶體管理,每一種操作都不一樣,優化起來極為複雜。但神經網路在計算上是同質的。歸根究柢,它只做兩件事:矩陣乘法和激活函數(通常是 ReLU,也就是「小於零的數歸零」)。因為底層運算如此單純統一,你只需要把這兩個運算做到極致,就能讓整個系統跑得飛快。GPU 和後來的 TPU、各種 AI 專用晶片之所以能發揮這麼大的作用,正是因為它們的硬體架構就是為矩陣乘法量身打造的。

這種同質性帶來另一個好處:可移植性。一段 Software 1.0 的程式碼,要從一個平台搬到另一個平台,通常得考慮作業系統、編譯器、函式庫版本等一堆相容性問題。但一組神經網路權重,只要目標平台能做矩陣乘法,就能跑。從雲端伺服器搬到手機晶片,需要的調整遠少於傳統軟體。

Karpathy 也指出了一個更微妙的優勢:Software 2.0 天然適合處理模糊、嘈雜、不完美的現實世界資料。傳統程式碼處理不了的東西,像是帶口音的語音、光線不佳的照片、文法不規則的句子,正是神經網路擅長的領域。你不需要為每一種例外情況寫一條規則,因為模型從資料中自己學會了處理這些例外。

不只是工程師,是史丹佛博士、OpenAI 元老、馬斯克直屬主管

要理解為什麼這篇部落格文的影響力遠超一般的技術觀點文,你需要知道寫它的人是誰。

Andrej Karpathy 1986 年出生於斯洛伐克,15 歲隨家人移民加拿大。他在多倫多大學完成電腦科學和物理學雙學位,這所大學正是「深度學習教父」傑佛瑞.辛頓(Geoffrey Hinton)的大本營。他後來進入史丹佛大學攻讀博士,師從李飛飛(Fei-Fei Li),研究的是如何讓電腦同時理解影像和語言。

在史丹佛期間,Karpathy 做了一件可能比他的博士論文影響更大的事:他設計並主持了 CS231n 這門深度學習課程。這門課後來成為史丹佛最受歡迎的課程之一,線上版本更培養了整整一代 AI 從業者。他在 2015 年畢業,同年加入 OpenAI 成為創始成員之一。

所以當 Karpathy 在 2017 年寫 Software 2.0 時,他不是一個在旁邊觀察的評論家。他是一個在史丹佛教過深度學習、在 OpenAI 做過前沿研究、然後跳進特斯拉親手把理論變成產品的人。他在特斯拉的工作就是每天看著 C++ 程式碼被神經網路取代。Software 2.0 這個概念,是他從實踐中提煉出來的,不是從書房裡想出來的。

這個背景讓他的文章有一種其他人寫不出來的底氣。他不需要假設,他可以直接說:「我看到了。這正在發生。」

回頭看:他說對了什麼,沒說到什麼

2017 年的 Karpathy 說對了核心判斷:神經網路確實不只是另一個工具,它確實代表了一種根本性的程式設計範式轉移。

視覺、語音、翻譯這些他舉的例子,到 2026 年全部被神經網路主導。他在特斯拉觀察到的趨勢——傳統程式碼被神經網路權重取代——不但沒有逆轉,反而加速了。自駕車產業幾乎完全擁抱端到端的神經網路架構,手工規則引擎已經成為歷史。

但 Software 2.0 的框架有一個盲點:它假設「程式設計師」的角色會從「寫程式碼」變成「整理資料集」。這在 2017 年是合理的推論。當時訓練一個好的神經網路,關鍵確實在於資料的品質和數量。但大型語言模型的出現改變了這個圖景。

2022 年之後,一種 Karpathy 自己都沒完全預見的新範式出現了。你不再需要整理資料集,你甚至不需要訓練模型——你只需要用自然語言告訴一個預先訓練好的大型語言模型你想做什麼,它就能幫你生成程式碼、分析資料、甚至設計系統架構。

Karpathy 看到了這個趨勢,而且接受了自己需要更新框架。2025 年 2 月,他創造了「vibe coding」這個詞,描述一種新的軟體開發方式:你不需要真正懂程式設計,只要把你想要的東西描述清楚,AI 就能把它做出來。這個詞立刻在矽谷爆紅。

四個月後,他在 Y Combinator 的 AI Startup School 發表演講,正式提出「Software 3.0」的概念,把整個思想體系做了完整的收束。如果 Software 1.0 是人類用程式語言寫程式碼,Software 2.0 是神經網路用資料學出權重,那 Software 3.0 就是人類用自然語言下達指令,由大型語言模型完成任務。用他的話說:「最熱門的新程式語言是英文。」到了年底,他又進一步修正,認為下一階段應該是「agentic engineering」——不是人類隨興地用 AI 寫程式,而是 AI agent 系統性地參與整個軟體開發流程。

從 2.0 到 3.0,Karpathy 花了八年。這條思想演進的路徑本身,就是 AI 發展速度最好的註腳。

這篇文章在思想史上的位置

把 Software 2.0 放回我們這個系列的脈絡裡,它的位置非常清楚。

2009 年,Google 的三位研究者在〈數據的不合理有效性〉中主張,資料的規模比演算法的精巧更重要。2012 年,AlexNet 用一個深度神經網路證明了這個主張。2017 年 6 月,Transformer 提供了有史以來最強的神經網路基礎架構。

Software 2.0 出現在 2017 年 11 月,它做的事情是把前面這些點連成一條線,然後明確地說出結論:這不是一連串獨立的技術突破,這是一場程式設計範式的革命。從 AlexNet 到 Transformer 到 Scaling Laws,所有的趨勢都指向同一個方向——讓機器從資料中學習的方式,正在系統性地取代人類手動編寫規則的方式。

後來的發展驗證了這條線。2020 年 OpenAI 發表 Scaling Laws,用數學證明了「規模就是力量」這個 Software 2.0 暗示的命題。Gwern 的〈The Scaling Hypothesis〉更進一步,把「越大越好」的觀察上升為 AI 發展的核心假說。到了 2022 年底 ChatGPT 問世,整個世界終於親眼看到了 Software 2.0,以及它的繼任者 3.0 的威力。

Karpathy 後來說,他認為 AI 對經濟的影響不應該類比成電力或工業革命,最精準的類比就是「一種新的計算範式」。Software 2.0 是他在 2017 年就開始推的這個類比框架,而事實證明,這可能確實是理解 AI 最有用的方式。

對了方向,低估了規模

站在 2026 年初回望,Andrej Karpathy 目前經營著自己創辦的 Eureka Labs,一家 AI 教育公司。他離開了特斯拉,二進二出了 OpenAI,然後走向了教育。他的 YouTube 頻道上的 AI 教學影片有數百萬觀看次數,「Zero to Hero」系列讓無數人從零開始學會了建造語言模型。

回頭看他的整個職涯,從史丹佛的 CS231n 到 YouTube 頻道到 Eureka Labs,其實都在做同一件事:用最清楚的語言向最多的人解釋最重要的技術變革。

Software 2.0 這篇文章就是這個模式的濃縮。它的價值不在於提出了什麼原創的技術洞見——神經網路取代手工規則這件事,在 2017 年已經在多個領域發生了。它的價值在於,它用一個乾淨的框架和一個好記的名字,把散落各處的趨勢打包成一個完整的敘事,讓所有人——不只是 AI 研究者——都能理解正在發生什麼。

Software 2.0 抓對了方向。但它低估了規模。

Karpathy 在 2017 年預見的是一場由深度學習驅動的範式轉移,影響範圍主要在視覺辨識、語音處理、自動駕駛這些特定領域。他沒有完全預見到的是,大型語言模型會把這場革命推進到幾乎所有知識工作的領域,而且不只是改變軟體怎麼被開發,還改變了誰能開發軟體。

他以為神經網路會取代人寫的程式碼。結果是,語言模型讓每個人都能寫程式碼。

這個結局比他原本的預言更激進,也更有趣。而他自己——以 Software 3.0 和 vibe coding 的概念——正在親手書寫這個故事的下一章。