什麼程式碼是ChatGPT無法編寫的? - datachimp

banq發表於2022-12-08

ChatGPT改變了遊戲規則,而且,更廣泛地說,這種語言模型可能是我們這一代最重要的開發工具。(承認這一點需要一些謙虛,因為我們正在為資料科學家開發一個開發工具。)

但是,無論是ChatGPT還是一些更大的後代模型,都不可能編寫出我們的軟體中最困難的部分:所需功能的自然語言描述(功能描述)
以下是我對這一說法的論證,借鑑了Fred Brooks的 "No Silver Bullet "和Eric Evans的《領域驅動設計》中的觀點。

1. 構建軟體的“難點”是指定它的行為
Fred Brooks 在“No Silver Bullet”中指出了“構建軟體的難點”
軟體實體的本質是相互關聯的概念的構造:資料集、資料項之間的關係、演算法和函式呼叫……我相信構建軟體的難點在於這個概念的規範、設計和測試構造,而不是表示它和測試這種表示的保真度的勞動。

透過將英語轉換為程式碼,ChatGPT 幫助我們用程式語言表示軟體,但困難的部分首先是用英語表示它

2.我們不能先驗地指定這種行為
用英語或其他人類自然語言將需求表述成軟體可實現的功能是很難的,一個重要的原因是,在我們看到它之前,我們實際上不知道我們想要什麼。
布魯克斯在這裡再次指出了這一點:

......軟體建設者為他們的客戶所做的最重要的工作是對產品需求的反覆提取和細化。因為事實是,客戶不知道他們想要什麼。他們通常不知道必須回答什麼問題,而且他們幾乎從來沒有考慮過必須指定的細節問題......此外,複雜的軟體系統是行動的、移動的、工作的東西。此外,複雜的軟體系統是一種行動的東西,是一種運動的東西,是一種工作的東西。這種行動的動態是很難想象的。

我們的軟體中最重要和最困難的部分解決的是以前沒有解決過的不為人知的問題,而且由於它們的新穎性,很難想象解決方案是什麼樣子的。如果我們無法想象解決方案,我們當然也就無法用英語來說明它。

(banq:ChatGPT需要被問了一個問題才能回答,但是這個問題怎麼問很關鍵,它也不會,問題域是關鍵,會問問題的學生才是真正優秀學生,而不是答題高分的學生)

3.自然語言誤導了我們對規範的充分性的判斷
即使我們對軟體的行為有很強的預見性,用英語或其他自然語言來指定這種行為也不是最好的選擇。自然語言是混亂的,而這種混亂可以掩蓋我們規範中的模糊性。它可以使我們認為我們對所需軟體的瞭解比我們實際瞭解的更多。

Eric Evans已經在領域驅動設計的背景下觀察到了這一點 :

領域模型可以成為一個軟體專案的共同語言的核心。該模型是在專案中人們頭腦中建立起來的一套概念,其術語和關係反映了領域的洞察力。這些術語和相互關係提供了一種語言的語義,這種語言既適合於領域,又足夠精確地用於技術開發......當領域專家在與開發者討論時或在他們之間使用這種語言時......領域專家(在開發者的幫助下)也會發現基於模型的語言的精確性暴露了他們思維中的矛盾或模糊之處。

因此,用程式碼來表達我們的規範並不僅僅是將我們的軟體願景變為現實的一種手段。相反,它是準確闡述我們願景的關鍵一步。

結論
ChatGPT對構建軟體中最難也是最重要的部分沒有幫助:
在不甚瞭解的問題的背景下指定它的行為。它在這裡沒有幫助,因為它需要對所需軟體的行為進行自然語言描述,而生成這種描述既不容易也不可取。
它不容易是因為我們無法從扶手椅上想象我們的軟體應該如何表現,它不可取是因為自然語言缺乏充分指定軟體所需的精確性。

什麼程式碼是ChatGPT無法編寫的? - datachimp

相關文章