Automatic programming

Salvatore Sanfilippo

自動化程式設計

原文由 Salvatore Sanfilippo 發布,訂閱此部落格

在我的 YouTube 頻道中,有段時間以來,我開始用「自動化程式設計」這個詞來稱呼在 AI 協助下撰寫軟體的過程(我相信,很快它就會直接被稱為「撰寫軟體的過程」)。

如果你還沒發現,同樣的 LLM,在自動化程式設計中會因為引導過程的人不同——取決於他的直覺、設計、持續的引導以及對軟體的理念——而產生天差地遠的結果。

拜託,別再說「這套軟體是 Claude 幫我 vibe coding 做出來的」了。Vibe coding 指的是完全不參與過程、直接用 AI 產生軟體的方式。你用非常籠統的描述告訴它你想要什麼,然後 LLM 就會根據它的訓練、在那次執行中恰好占上風的特定取樣等等,吐出它直覺想到的第一個點子/設計/程式碼。Vibe coder 頂多就是回報哪裡跑不動、或哪裡跟自己預期的不一樣。

當這個過程是你清楚掌握狀況、真正在生產軟體時,請記住:那是你正在打造的軟體。而且別忘了,雖然預訓練資料並非 LLM 學習的唯一環節(RL 也占了很重的份量),但這些資料是由人類所產生的,所以我們並不是在侵占別人的東西。我們大可以把 AI 產生的程式碼當作「我們自己的」,我們有權利這麼做。預訓練其實是我們集體的禮物,讓許多原本不可能做到這些事的人如今也能做到,就好像在某種程度上,我們現在透過一個集體心智連結在一起。

話說回來,如果說 vibe coding 是在不太理解背後發生什麼的情況下產出軟體的過程(它有其存在的價值,也讓軟體生產更加民主化,所以我完全可以接受),那麼自動化程式設計就是在 AI 協助下,試圖產出高品質、並嚴格遵循製作者對軟體願景的過程(這個願景是多層次的:從較高層次上要如何精確地實現某些事情,到直接介入告訴 AI 某個函式該怎麼寫),而這個過程中最根本的一環,當然就是*要做什麼*。

我是一名程式設計師,我使用自動化程式設計。用這種方式產出的程式碼,就是我的。我的程式碼、我的成果、我的作品。我,還有你,都可以為此感到驕傲。

如果你還不太信服,想想 Redis。Redis 並沒有太多技術上的創新,尤其在初期,它不過就是基礎資料結構與網路程式碼的組合,任何稱職的系統程式設計師都能寫得出來。那麼,它為何會成為一套非常有用的軟體?正是因為它所蘊含的想法與願景。

寫程式如今已經自動化了,願景還沒有(至少目前還沒有)。

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

留言