繼“氛圍編程”,“上下文工程”后Andej Karpathy再造新詞:細(xì)菌式編程
Andej Karpathy之前提出“氛圍編程”(vibe coding)大火特火,前幾天AK造了一個(gè)新詞“上下文工程”(Context Engineering)用來(lái)取代“提示工程”,今天AK又造了一個(gè)新詞“細(xì)菌式編程”。
在軟件開發(fā)的世界里,我們時(shí)常陷入關(guān)于最佳實(shí)踐的無(wú)盡討論中:是應(yīng)該構(gòu)建一個(gè)大而全的單體應(yīng)用(Monolith),還是擁抱靈活的微服務(wù)(Microservices)?是該追求零依賴,還是善用成熟的第三方庫(kù)?
Andej Karpathy:像細(xì)菌一樣編寫代碼。

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


































