繼“氛圍編程”,“上下文工程”后Andej Karpathy再造新詞:細菌式編程
Andej Karpathy之前提出“氛圍編程”(vibe coding)大火特火,前幾天AK造了一個新詞“上下文工程”(Context Engineering)用來取代“提示工程”,今天AK又造了一個新詞“細菌式編程”。
在軟件開發(fā)的世界里,我們時常陷入關于最佳實踐的無盡討論中:是應該構建一個大而全的單體應用(Monolith),還是擁抱靈活的微服務(Microservices)?是該追求零依賴,還是善用成熟的第三方庫?
Andej Karpathy:像細菌一樣編寫代碼。
細菌編碼的三大法則
Karpathy 指出,如果我們想構建一個蓬勃發(fā)展的開源社區(qū),就應該學習細菌基因組的演化智慧。細菌的“代碼”(即基因組)有三個顯著特點:
小巧(Small):在生物世界里,復制和維護每一行“代碼”(DNA堿基對)都需要消耗能量。因此,自然選擇的壓力使得細菌的基因組非常精簡,杜絕任何不必要的膨脹。
模塊化(Modular):細菌的基因(功能)被組織成可插拔的“操縱子”(Operon,功能相關的基因簇)。這種模塊化的設計使得不同的功能單元可以被輕松地組合或替換。
自包含(Self-contained):細菌通過“水平基因轉移”(Horizontal Gene Transfer)的方式,可以直接“復制粘貼”有用的基因片段,而無需理解對方整個基因組的上下文。這種能力是它們快速適應環(huán)境的關鍵。
Karpathy 向所有開發(fā)者提出了一個靈魂拷問:
對于你寫的任何一個函數(shù)(基因)或類(操縱子),你能想象有人在不了解你項目其余代碼、也無需導入任何新依賴的情況下,直接“順手牽羊”(yoink)地拿走它,并立即從中獲益嗎?你的這段代碼,有沒有潛力成為一個熱門的 GitHub Gist?
如果答案是肯定的,那么你就掌握了“細菌式編程”的精髓。正是這種編碼風格,讓細菌能夠在地球深處、太空真空、酷熱、嚴寒、強酸、強堿等各種極端環(huán)境中繁衍生息,并演化出千奇百怪的代謝能力。
從“細菌”到“真核生物”:平衡
這種“細菌式”編碼風格極擅長快速原型設計和創(chuàng)新,因為它鼓勵代碼的自由傳播與重組,極大地促進了社區(qū)的“水平基因轉移”。
然而,Karpathy 也承認它的局限性:它無法構建復雜的生命體。
相比之下,更高級的真核生物(比如人類)的基因組,就像一個巨大、復雜、高度耦合的單體倉庫(Monorepo)。它的創(chuàng)新性遠不如細菌基因組,但這種高度的組織性和協(xié)調性,是構建完整器官并使其協(xié)同工作所必需的。
那么,我們該如何選擇?Karpathy 認為,憑借人類的智慧設計,我們完全可以兼得二者之長:
“如果你必須這樣做,那就去構建一個‘真核生物式’的單體倉庫骨架,但要在這個骨架之內,最大化‘細菌DNA’的比例。”
換言之,我們可以在一個統(tǒng)一、結構化的項目(Monorepo)中進行開發(fā),以確保大型系統(tǒng)的復雜協(xié)調。但在這個大框架內,我們應該竭力將每一個功能、每一個模塊寫得像細菌基因一樣——小巧、獨立、自包含、易于“復制粘貼”。
現(xiàn)實困境:“依賴噩夢”
有網(wǎng)友對Karpathy 想法不買賬,比如當前流行的“預構建軟件包”(pre-built packages)和包管理器(如 npm, pip)的初衷似乎正是為了實現(xiàn)這種模塊化,但結果卻事與愿違,演變成了一場難以解決的“依賴噩夢之網(wǎng)”。
Karpathy 認為問題的根源是:
依賴泛濫的問題已經(jīng)像一場瘟疫。在生物學中,代碼(基因)是昂貴的,因為它消耗能量,所以基因組有自然的正則化(natural regularization)機制來防止臃腫。但在軟件世界里,代碼的成本太低了,導致它瘋狂膨脹,最終變成一個脆弱不堪的爛攤子。