Don't fall into the anti-AI hype

Salvatore Sanfilippo

別掉進反 AI 的炒作陷阱

我熱愛一行一行地寫軟體。可以說,我的整個職涯就是持續努力創作出寫得好、極簡、而人的手感是核心特色的軟體。我也期盼一個不遺忘弱勢者的社會。再者,我並不希望 AI 在經濟上取得成功,我不在乎現行的經濟體制是否被顛覆(老實說,如果走向大規模財富重分配,我會非常開心)。但是,如果我對軟體與社會的理念蒙蔽了我的視野,我就無法尊重自己與自己的智慧:事實就是事實,AI 將永遠改變程式設計。

2020 年我離開了工作,為了寫一本關於 AI、universal basic income(無條件基本收入)、以及一個適應工作自動化、面臨諸多挑戰的社會的小說。2024 年底,我開設了一個專注於 AI 的 YouTube 頻道,探討 AI 在寫程式任務上的應用,以及其潛在的社會與經濟影響。然而,雖然我很早就意識到將會發生什麼,我以為在程式設計被徹底重塑之前,我們還有更多時間,至少還有幾年。我現在已不再這麼認為。最近,最先進的 LLMs(大型語言模型)只要給予一組關於最終成果應該是什麼的良好提示,就能幾乎在無人協助的情況下,獨自完成大型子任務或中型規模的專案。你能獲得的成功程度,與你所從事的程式設計類型有關(越是獨立、越能以文字形式呈現的就越好:system programming(系統程式設計)尤其適合),也與你能否在腦中建立問題的心智表徵並傳達給 LLM 有關。但是,總體而言,現在已經很清楚,對於大多數專案而言,親手寫程式碼已不再明智,除非是為了樂趣。

過去一週,我僅僅透過 prompting(提示)、並不時檢視程式碼以提供指引,就在短短數小時內完成了以下四項任務——原本需要數週的工作,現在只需數小時:

  1. 我修改了我的 linenoise 函式庫以支援 UTF-8,並打造了一個用於行編輯測試的框架,它使用一個 emulated terminal(模擬終端機),能夠回報每個字元格中顯示的內容。這是我一直想做的事,但過去很難為了測試自己的一個支線專案而證明投入這些工時是合理的。但如果你只要描述想法,它就能在程式碼中具體實現,情況就完全不同了。
  2. 我修復了 Redis 測試中偶發的失敗。這是非常惱人的工作,涉及時序相關問題、TCP 死結狀況等等。Claude Code 持續反覆嘗試,花費所需的時間來重現問題,檢視行程的狀態以了解發生了什麼,並修復了這些錯誤。
  3. 昨天我想要一個能對 BERT 類 embedding models(嵌入模型)進行推論的純 C 函式庫。Claude Code 在 5 分鐘內就把它做出來了。輸出結果相同、速度也相當(比 PyTorch 慢 15%)。700 行程式碼。還有一個用於轉換 GTE-small 模型的 Python 工具。
  4. 過去幾週,我對 Redis Streams 的內部實作進行了修改。我為這份工作寫了一份設計文件。我試著把它交給 Claude Code,它就在大約 20 分鐘或更短的時間內重現了我的成果(主要是因為我檢查並授權執行所需指令的速度很慢)。

根本不可能無視正在發生的現實。在很大程度上,寫程式碼已經不再是必要的。現在,更有趣的是去理解該做什麼、以及該怎麼做(而關於後者,LLMs 也是很棒的夥伴)。AI 公司能否收回資金、股市是否會崩盤,都不重要。從長遠來看,這一切都無關緊要。某家獨角獸公司的這個或那個執行長說了什麼令人反感或荒謬的話,也都不重要。無論如何,程式設計已經永遠改變了。

對於我寫過的所有被 LLMs 汲取的程式碼,我有什麼感覺?我覺得能成為其中一部分很棒,因為我將此視為我一生努力目標的延續:讓程式碼、系統、知識民主化。LLMs 將幫助我們更快地寫出更好的軟體,並讓小團隊有機會與大公司競爭。就像 90 年代 open source software(開放原始碼軟體)所做的一樣。

然而,這項技術實在太重要,不能掌握在少數幾家公司手中。就目前而言,你可以把 pre-training(預訓練)做得更好或不好,你可以用比別人有效得多的方式做 reinforcement learning(強化學習),但開放模型,尤其是中國所產出的那些,仍持續與封閉實驗室的 frontier models(前沿模型)競爭(即使仍落後)。到目前為止,AI 仍有一定程度的民主化,儘管並不完美。但是:完全無法確定未來永遠都會如此。我對集中化感到害怕。同時,我相信 neural networks(類神經網路)在規模化後,確實能夠做到不可思議的事,而且當前的 frontier AI 裡並沒有多到讓其他實驗室與團隊無法追上的「魔法」(否則就很難解釋,例如,為什麼 OpenAI、Anthropic 和 Google 多年來成果如此接近)。

身為一名程式設計師,我現在想比以往寫更多 open source。我想改進自己那些因時間因素而被擱置的某些儲存庫。我想把 AI 應用到我的 Redis 工作流程中。改進 Vector Sets 的實作,然後是其他資料結構,就像我現在對 Streams 所做的那樣。

但我為那些將被解雇的人感到擔憂。未來的動態會如何發展,尚不明朗:公司會試圖雇用更多人、打造更多產品嗎?還是會試圖削減人事成本,雇用更少但更擅長 prompting 的程式設計師?而且,我擔心在其他領域,人類將變得完全可被取代。

那麼,社會的解方是什麼?畢竟創新是無法收回的。我相信我們應該投票給那些認清現況、並願意支持失業者的政府。而且,被解雇的人越多,要求投票給那些能保證一定程度保障者的政治壓力就越大。但我也期待 AI 可能帶來的好處:科學上的新進展,或許能減輕人類處境中並不總是快樂的苦難。

總之,回到程式設計。我的朋友,我只有一個建議給你。無論你認為什麼才是正確的事,你都無法透過拒絕眼前正在發生的事來掌控它。跳過 AI 對你或你的職涯不會有幫助。好好想一想。用心、投入數週的時間去測試這些新工具,而不是用五分鐘的測試來僅僅鞏固你既有的信念。找到一種讓自己倍增的方法,如果這次對你行不通,每隔幾個月再試一次。

是的,也許你覺得自己如此努力才學會寫程式,現在卻由機器代勞了。但當你為了讓專案動起來而寫程式到深夜時,你內心的那團火是什麼?那是創造。現在,如果你找到有效運用 AI 的方法,你就能建造得更多、更好。其中的樂趣依然存在,絲毫未減。

原文由 Salvatore Sanfilippo 發布

本文章由 muse-spark-1.2-contributor 進行翻譯