Automatic programming

Salvatore Sanfilippo

自動化程式設計

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

如果你還沒注意到,Automatic Programming 即使使用的是同樣的 LLMs(大型語言模型),也會因為引導過程的人不同,憑藉其直覺、設計、持續的引導以及對軟體的理念,而產生截然不同的結果。

拜託,別再說「這個軟體是 Claude 幫我 vibe coding 出來的」了。Vibe Coding(氛圍編程)是指完全不參與過程、純粹利用 AI 來生成軟體的過程。你只用非常籠統的語句描述你想要什麼,而 LLM 就會根據其訓練、在那次執行中恰好佔主導的特定取樣等等,自發地產生它第一個想到的點子/設計/程式碼。而 Vibe Coder 最多也只是回報哪些地方無法運作或不符合預期。

當這個過程是在你清楚掌握狀況下的實際軟體生產時,請記住:那就是*你*正在打造的軟體。此外也要記住,預訓練資料雖然不是 LLM 學習的唯一環節(RL(強化學習) 也佔有很大的比重),但它是由人類所產生的,所以我們並不是在挪用他人的東西。我們可以把 AI 生成的程式碼當作是「我們的」,我們有權利這麼做。預訓練其實是我們集體的禮物,讓許多個人得以做到原本絕對無法做到的事,就好像在某種意義上,我們現在連結成了一個集體心智。

話雖如此,如果說 Vibe Coding 是在對過程沒有太多理解的情況下產出軟體的過程(它有其存在的價值,也讓軟體生產更加普及,所以我完全可以接受),那麼 Automatic Programming 就是在 AI 輔助下,試圖產出高品質、並嚴格遵循製作者對軟體之願景的過程(這個願景是多層次的:從較高的層次上精確地決定某些事情該如何完成,到直接介入並告訴 AI 該如何撰寫某個函式),而這個過程中一個根本的部分,當然就是*要做什麼*。

我是一名程式設計師,我使用 Automatic Programming。我用這種方式產生的程式碼,就是我的程式碼。我的程式碼、我的成果、我的作品。我和你,都可以為此感到驕傲。

如果你還沒有完全被說服,想想 Redis。在 Redis 裡並沒有太多的技術新意,尤其是在初期,它只是一堆任何稱職的系統程式設計師都能寫出來的基本資料結構與網路程式碼的總和。那麼,它為什麼會成為一套非常有用的軟體?正是因為它所蘊含的理念與願景。

程式設計現在已經自動化了,願景還沒有(至少目前還沒有)。

原文由 Salvatore Sanfilippo 發布

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