導讀 事實表明,AI無法替代开發者,但更適用於優秀的开發者。而識別大型語言模型(LLM)生成的代碼什么時候會出錯,需要开發人員具有豐富的知識和經驗。軟件工程師DavidShowalter在談到AI編程時表...
事實表明,AI無法替代开發者,但更適用於優秀的开發者。而識別大型語言模型(LLM)生成的代碼什么時候會出錯,需要开發人員具有豐富的知識和經驗。
軟件工程師DavidShowalter在談到AI編程時表示:“目前,AI模型在幫助編程人員提高工作效率方面表現出色。”那么,這一觀點是否站得住腳?Showalter的言論實則是對AI專家SantiagoValdarrama的回應——他認爲大型語言模型(LLM)作爲編碼助手目前還不完全可靠。Valdarrama說:“除非LLM給我們同樣的保證(就像編程語言一樣讓計算機始終響應命令),否則它們只能被視爲華而不實的‘炫技’,對多數應用程序的开發來說並無實際價值。”他的觀點頗具見地,LLM在如何回應提示方面顯然是不一致的,即使是同一提示可能會得到截然不同的回應。因此,Showalter的看法可能過於樂觀:雖然AI模型在輔助开發人員編寫更多代碼方面有不俗的表現,但這並不等同於能夠生成高質量的可用代碼。
AI和軟件开發成功的關鍵在於敏銳地識別那些潛在的不完善之處。許多开發人員並沒有意識到這一點,他們過於依賴LLM的輸出結果。正如計算機科學網站HackerNews的一位評論員所說,“我想知道的是,用戶對於ChatGPT的信任有多少是建立在那些看似完美無缺的示例之上的……尤其是對於特定類型的用戶來說。”爲了能夠在軟件开發中有效地使用AI,开發人員需要足夠的經驗判斷LLM的輸出什么時候可能不夠准確或存在誤導。
並沒有簡單的解決方案
關於LLM在軟件开發中的應用和表現存在不同的看法。正如HackerNews網站的一些評論所展示的那樣,許多开發人員並不贊同過度依賴LLM的輸出。他們反駁的理由通常歸結爲:“當然,开發人員不能盲目地信任LLM的輸出,就像他們不會無條件地信任在StackOverflow上找到的代碼,或者完全依賴集成开發環境(IDE)等工具一樣。”
就目前而言,這種看法是正確的,但現實往往並不盡如人意。例如,雖然开發人員不應該完全相信他們使用的集成开發環境(IDE),但IDE在處理基本編程任務時具備一定程度的准確性和穩定性,例如不會隨意“破壞”程序或弄亂Lisp括號。ChatGPT很可能會出錯,但是IDE很少出現這種情況。
對於堆棧溢出(StackOverflow)上的代碼來說,可能有不同的使用方式。有些开發人員可能會直接復制粘貼代碼,而不進行檢查。但明智的开發人員則會採取更爲審慎的態度。他們會首先查看有關代碼的評論,以評估其質量和適用性。
LLM的輸出並不包含這樣的信號。正如一位开發人員所建議的那樣,“將StackOverflow和LLM的輸出都視爲可能是錯誤的結果,並且可能是由經驗不足的开發人員編寫的代碼。”這是一種明智的做法。即使存在錯誤,這些代碼片段或建議也可能爲提供有價值的啓示,幫助开發人員朝着正確的方向前進。
同樣,這需要开發人員具備足夠的經驗以識別StackOverflow的代碼示例或LLM生成的代碼是否存在錯誤。或者开發人員足夠明智,只將這些代碼用在“200行樣板文件”或“React頁面中的大表”等常見的場景中。在這些場景中,可以不必完全信任這些代碼,只需在完成之後進行測試即可。
總之,正如一位开發人員所總結的那樣,“我對LLM的信任程度就像我對初級开發人員或實習生的信任一樣。我會給它分配一些我知道如何完成的任務,以此驗證其准確性,但不會在這些任務上花費過多的時間。這無疑是最佳的策略。從AI中獲益最大的开發人員是那些明智的人,他們知道LLM什么時候可能會出錯,但同時也能從中得到一些好處。”
尋求正確使用的方法
开源Python工具Datasette創始人SimonWilison曾經提出這樣的觀點,“從AI中獲得最佳結果實際上需要大量的知識和經驗,因爲很多都歸結於直覺。”他建議經驗豐富的开發人員測試不同LLM的局限性,以衡量它們的相對優勢和劣勢,即便一些LLM模型表現不盡如人意,仍然可以利用其價值。
初級开發人員如何有效利用AI進行編程?AWSAI开發者體驗主管DougSeven表示,像AmazonQDeveloper(前身爲CodeWhisperer)這樣的編碼助手,對經驗不足的开發人員同樣可以提供幫助。這些工具能夠爲他們提供有價值的建議,幫助他們明確編程思路,從而減少編程過程中頻繁向他人求助的需求。
也許正確的答案是:取決於具體情況!
而且重要的是,軟件开發的理念通常不是“更快、更多地編寫代碼”。實際上,優秀的开發人員編寫代碼的時間很少,而花費更多的時間思考需要解決的問題以及如何找到最佳解決方案。LLM可以在這方面提供幫助,正如Willison所指出的那樣:“ChatGPT(以及GitHubCopilot)爲我節省了大量的‘深思熟慮’的時間。從在Bash中編寫For循環到記住如何在Javascript中進行跨域CORS請求,我甚至不需要再查找其他資料。”
標題:AI在軟件开發中的角色:輔助而非替代
地址:https://www.utechfun.com/post/372832.html