什麼程式碼是ChatGPT無法編寫的? - datachimp
ChatGPT改變了遊戲規則,而且,更廣泛地說,這種語言模型可能是我們這一代最重要的開發工具。(承認這一點需要一些謙虛,因為我們正在為資料科學家開發一個開發工具。)
但是,無論是ChatGPT還是一些更大的後代模型,都不可能編寫出我們的軟體中最困難的部分:所需功能的自然語言描述(功能描述)。
以下是我對這一說法的論證,借鑑了Fred Brooks的 "No Silver Bullet "和Eric Evans的《領域驅動設計》中的觀點。
1. 構建軟體的“難點”是指定它的行為
Fred Brooks 在“No Silver Bullet”中指出了“構建軟體的難點”:
軟體實體的本質是相互關聯的概念的構造:資料集、資料項之間的關係、演算法和函式呼叫……我相信構建軟體的難點在於這個概念的規範、設計和測試構造,而不是表示它和測試這種表示的保真度的勞動。
透過將英語轉換為程式碼,ChatGPT 幫助我們用程式語言表示軟體,但困難的部分首先是用英語表示它。
2.我們不能先驗地指定這種行為
用英語或其他人類自然語言將需求表述成軟體可實現的功能是很難的,一個重要的原因是,在我們看到它之前,我們實際上不知道我們想要什麼。
布魯克斯在這裡再次指出了這一點:
......軟體建設者為他們的客戶所做的最重要的工作是對產品需求的反覆提取和細化。因為事實是,客戶不知道他們想要什麼。他們通常不知道必須回答什麼問題,而且他們幾乎從來沒有考慮過必須指定的細節問題......此外,複雜的軟體系統是行動的、移動的、工作的東西。此外,複雜的軟體系統是一種行動的東西,是一種運動的東西,是一種工作的東西。這種行動的動態是很難想象的。
我們的軟體中最重要和最困難的部分解決的是以前沒有解決過的不為人知的問題,而且由於它們的新穎性,很難想象解決方案是什麼樣子的。如果我們無法想象解決方案,我們當然也就無法用英語來說明它。
(banq:ChatGPT需要被問了一個問題才能回答,但是這個問題怎麼問很關鍵,它也不會,問題域是關鍵,會問問題的學生才是真正優秀學生,而不是答題高分的學生)
3.自然語言誤導了我們對規範的充分性的判斷
即使我們對軟體的行為有很強的預見性,用英語或其他自然語言來指定這種行為也不是最好的選擇。自然語言是混亂的,而這種混亂可以掩蓋我們規範中的模糊性。它可以使我們認為我們對所需軟體的瞭解比我們實際瞭解的更多。
Eric Evans已經在領域驅動設計的背景下觀察到了這一點 :
領域模型可以成為一個軟體專案的共同語言的核心。該模型是在專案中人們頭腦中建立起來的一套概念,其術語和關係反映了領域的洞察力。這些術語和相互關係提供了一種語言的語義,這種語言既適合於領域,又足夠精確地用於技術開發......當領域專家在與開發者討論時或在他們之間使用這種語言時......領域專家(在開發者的幫助下)也會發現基於模型的語言的精確性暴露了他們思維中的矛盾或模糊之處。
因此,用程式碼來表達我們的規範並不僅僅是將我們的軟體願景變為現實的一種手段。相反,它是準確闡述我們願景的關鍵一步。
結論
ChatGPT對構建軟體中最難也是最重要的部分沒有幫助:
在不甚瞭解的問題的背景下指定它的行為。它在這裡沒有幫助,因為它需要對所需軟體的行為進行自然語言描述,而生成這種描述既不容易也不可取。
它不容易是因為我們無法從扶手椅上想象我們的軟體應該如何表現,它不可取是因為自然語言缺乏充分指定軟體所需的精確性。
相關文章
- 低程式碼與無程式碼真正的區別是什麼
- 無程式碼和低程式碼最大的區別是什麼?
- 火爆全球的ChatGPT是什麼?ChatGPT
- 什麼是無程式碼?無程式碼應用開發的12大好處!
- css的三種常用寫法是什麼CSS
- 幽默:編寫Python程式碼你們使用什麼偵錯程式?Python
- webstorm 無法編輯程式碼問題WebORM
- 為什麼 const 無法讓 C 程式碼跑得更快?
- PS指令碼篇--1.程式碼是什麼,寫程式碼幹嘛?指令碼
- 老碼農冒死揭開行業黑幕:如何編寫無法維護的程式碼(上篇)行業
- 幽默:無程式碼是編寫安全可靠的應用程式的最佳方法,教程入內!
- 什麼是寫程式碼及基本資料型別資料型別
- 這樣可以寫出無法維護的程式碼
- 如何寫出讓同事無法維護的程式碼?
- 【譯】為什麼ReasonReact是編寫React的最佳方式React
- 什麼是視訊編碼(Codec)?
- 為什麼VSCode是程式碼編輯器而不是IDE?VSCodeIDE
- 什麼是低程式碼的窘境?
- html的空格程式碼是什麼HTML
- 什麼是程式碼整理?
- 低程式碼是什麼?
- python無法匯入包是什麼原因Python
- 低程式碼是什麼意思?低程式碼平臺的技術特點是什麼?
- 只會寫程式碼的程式設計師永遠無法出色?程式設計師
- 什麼樣的程式碼稱得上是好程式碼?
- 什麼是計算機編碼的定義?計算機
- 在大公司寫程式碼是一種什麼樣的體驗?
- 什麼是 unicode 程式碼點Unicode
- 低程式碼是什麼意思?
- 低程式碼是什麼意思
- 未來什麼樣的工作是絕對無法取代的?
- 什麼是低碼開發平臺?低程式碼平臺需要編碼嗎?
- 什麼是程式碼審計?程式碼審計有什麼好處?
- 為什麼說一個好的Java程式設計師,是無碼勝有碼?Java程式設計師
- 為什麼你寫的程式碼糟透了?
- 什麼是低程式碼?低程式碼平臺能解決什麼樣的問題?
- 無需編寫程式碼,API業務流程測試,零程式碼實現API
- 通過程式碼解釋什麼是API,什麼是SDK?API