AI News HubLIVE
站内改写

AI並沒有讓軟體變糟,是人本身

本文認為,將軟體質量下降歸咎於AI是錯誤的。實際上,開發者長期以來已經接受了平庸、浪費和缺乏匠心的做法。AI只是加速了已有的不良實踐。

文章情報

工程師進階

要點

  • AI出現前,軟體質量標準就已下降
  • AI只是加速了已存在的糟糕開發習慣
  • 真正的匠人精神已被快速交付文化取代

為什麼重要

這條新聞值得關注,因為AI出現前,軟體質量標準就已下降。

技術影響

可能影響模型選型、推理成本、產品能力和評測基準。

本文作者Raphael Amorim在開篇指出,AI是一個敏感話題,所以這篇文章並未連結到他的主頁,只是記錄個人想法,以防朋友問起。他擔心有人誤解他喜歡AI生成的“垃圾程式碼”,因為他認為當前非黑即白的討論缺乏中間地帶。

作者看到越來越多的頭條指責“AI讓軟體變得更糟”,但他的回應始終如一:不,AI沒有讓軟體變糟,是人本身。AI只是交到那些早已習慣於釋出糟糕軟體的人手中的最新工具。他明確表示自己並非AI擁躉,但也不是反對者——他喜歡技術本身,曾構建和微調過模型,也常閱讀論文,只是不贊成讓AI佔據主導地位。

他認為,將責任推給AI是逃避更深層次問題的最簡單方式。這個問題存在已久:在AI能自動補全函式之前,我們就已經在製造糟糕的軟體了。究其原因,年復一年,我們不斷降低標準,並稱之為進步。我們容忍那些浪費資源的軟體,因為對釋出者而言成本為零,而代價由使用者的機器、電池和記憶體承擔。

最明顯的例子是每天擺在開發者面前的編輯器。許多人使用偽裝成桌面應用的瀏覽器來編寫程式碼。VS Code固然有許多優點,但它是一個基於瀏覽器的編輯器,可以輕鬆消耗超過10GB記憶體,只為了編輯幾個文本檔案。編輯文本——這就是任務。我們竟然認為編輯文本值得十千兆位元組的記憶體,而且幾乎沒人覺得有問題。作者本人從未使用Electron應用,這是原則而並非偶然。他拒絕僅僅因為對開發者方便就接受低質量軟體。

作者懷念當約束真實存在的時代:64KB記憶體意味著什麼,人們曾在如此有限的資源下構建完整的體驗。那些約束並沒有讓軟體變糟,反而促使人們思考,迫使工匠精神——每個位元組都必須證明其存在的價值。而如今,我們幾乎沒有任何約束,但並沒有利用自由去創造美好,反而集體選擇“燒掉30GB記憶體”,幾乎是在慶祝浪費。我們擁有前所未有的計算能力,卻用它來變得前所未有的懶惰。

問題不止於編輯器。看看程式語言本身:臃腫的語言正被推向系統程式設計領域——這本應是每個位元組、每個週期都必須精打細算的領域,但人們卻聳聳肩說“還行”。這絕不行。選擇一個沉重、帶垃圾回收、執行在層層執行時之上的技術棧去做需要精確性的工作,併為其辯護,正是作者批評的態度。曾經界定系統程式設計的約束被悄然拋棄,而我們稱之為“實用主義”。

更讓作者感到好笑的是:透過npm安裝來自完全不同語言編寫的二進位制檔案,用IPC呼叫包裝,然後作為一個“包”釋出。從另一種語言拉取原生二進位制,生成子程序,透過管道通訊,稱之為“包”。層層疊加,每一層都消耗記憶體和複雜度,只為了讓每個人都不必離開舒適區。這樣做當然能執行,但“能執行”從來不是優秀工程的標準——那只是我們錯誤地當成目標的底線。

核心觀點是:AI並沒有降低標準。標準早已低至地面。AI只是讓我們更快地觸底。如果一個開發者不關心資源使用、不關心所有權、不關心自己釋出的內容,AI不會讓他們變得更糟——他們本來就是這樣。AI只是移除了最後一點阻礙他們的摩擦。垃圾程式碼遲早會來,AI只是給了它更快的運輸車。

垃圾程式碼的真正來源是:人們失去了優秀工程的感覺,或者更可能的是,他們根本不在乎。一切變成關於交付而非匠心,關於時間而非工作本身。釋出,關閉工單,繼續下一項。當唯一的問題是“完成了嗎?”而從不問“做得好嗎?”,垃圾程式碼就不是偶然——它是獎勵速度、忽視匠心的系統的可預測輸出。AI並沒有發明這種激勵機制,只是完美地滋養了它。

所以當人們指著AI生成的程式碼說“看,軟體變得更糟了”時,作者想問:比什麼更糟?比那個10GB的文本編輯器?比需要1GB記憶體才能顯示訊息的聊天應用?比那些只是披著視窗外衣的網站式桌面應用?我們都接受了這些,甚至為之喝彩。別等到模型取代人寫出糟糕程式碼時才突然生出良知——那是徹頭徹尾的虛偽。

誠實的態度更難:承認質量多年來一直是可選的,我們早已用工匠精神換取便利。AI只是反映我們真正重視什麼的一面鏡子。如果把工具交給不關心質量的文化,結果只是加速生產該文化已有的產物。所以,AI沒有讓軟體變得更糟。是我們,一直如此。承認這一點的那一天,我們才能真正開始建設更好的軟體。