程序員如何在ChatGPT世界中生存?


來源:神譯局

編者按:隨著ChatGPT的推出,市面上湧現出一批人工智能代碼生成助手。生成式人工智能炙手可熱,已滲透到人類生活的方方面面,AI真的會取代人類程序員嗎?對於程序開發人員而言,如何在在ChatGPT世界中生存發展呢?本文將分享4個小技巧,幫助人類程序員領先於生成式AI。文章來自翻譯,希望能對你有所啟示。

圖片來源:由無界AI‌ 生成

人工智能,尤其是由大型語言模型(LLM)驅動的生成式人工智能,可能會顛覆整個程序員行業。但一些專家認為,人工智能不會取代人類程序員,至少不會立即取代。

加州大學戴維斯分校生物醫學工程博士、醫療人工智能研究中心MedARC 首席執行官塔尼什克·馬修·亞伯拉罕(Tanishq Mathew Abraham)說:“你將不得不擔心那些使用人工智能取代自己的人。”

那麼,在LLM編碼時代即將到來之際,軟件開發人員如何才能讓自己變得更有價值、更有用呢?以下是編碼員在生成式人工智能時代生存和發展的一些提示和技巧。

堅持基本原則和最佳實踐

雖然眾多基於人工智能的編碼助手可以幫助我們編寫代碼和生成代碼,但學會編程的基本能力依然要具備,即需要具備閱讀和分析代碼的能力,以及理解所編寫的代碼如何適用於大型系統。

哈佛大學約翰·A·保爾森(John a . Paulson)工程與應用科學學院從事人機交互與編程語言交叉研究的博士生普里揚·維斯林格姆(Priyan Vaithilingam)表示:“我相信人工智能可以極大地提高軟件開發人員的生產力,但軟件工程不僅僅是生成代碼,還包括從出用戶需求、調試及測試等更多內容。”

其中最不可或缺的編程技能之一仍然是人類編碼員的專長領域:問題解決。分析問題並為其找到合適的解決方案仍然是備受推崇的編碼專長技能。

“編程有其創造性的一面,而解決問題的那些技能比實際的編程語言或工具更為重要。不要執著於與人工智能做比較,AI或多或少只是一個大型語言模型的統計輸出。開發人員所做的與模型輸出的是有區別的,作為開發人員,除了編寫代碼,還有更多其他的工作。”Python 軟件基金會研究員、Explosion 公司聯合創始人兼首席執行官Ines Montani 說道。

此外,良好的軟件工程實踐比以往任何時候都更有價值。這些實踐包括規劃系統設計和軟件架構,程序員可以利用人工智能工具更有效地預測接下來所需的代碼。

麻省理工學院計算機科學與人工智能實驗室副主任兼首席運營官阿曼多·索拉·萊薩馬(Armando Solar-Lezama)是該實驗室計算機輔助編程小組的負責人,他談道:“程序員必須弄清楚一段代碼的數據結構、組織代碼的正確抽象,以及不同界面的要求。所有這些都是軟件工程實踐的核心,而且未來很長一段時間內都不會消失。”

找到滿足你需求的工具

找到合適的人工智能工具至關重要。每種工具都有自己的交互方式,並且可以以不同的方式將每個工具融入到開發工作流程中,無論是自動創建單元測試、生成測試數據,還是編寫文檔。

例如,GitHub Copilot 和其他人工智能編碼助手可以增強我們的編程能力,為我們提供編碼建議。另一方面,ChatGPT 和谷歌的Bard 更像是會話式人工智能程序員,可用於回答有關API(應用程序接口)的問題或生成代碼片段。

關鍵在於實驗。嘗試使用人工智能工具,熟悉它的工作原理,考慮其輸出質量,同時也要對其他智能工具保持開放的心態。亞伯拉罕說:“人工智能領域發展瞬息萬變,你不可能永遠只使用某一種工具,所以你需要快速適應新的工具。”

此外,還要考慮適當的使用案例。生成式人工智能工具可以幫助我們快速學習一門新的編程語言,也可以短時間內實現創建項目原型。

清晰和精確的對話至關重要

在使用人工智能編碼助手時,需要詳細闡述你的需求,並將其視為一個更新迭代的過程。亞伯拉罕建議編寫一段用於解釋代碼的註釋,這樣助手就能根據註釋生成符合你要求的代碼。

對於會話式人工智能程序員來說,你需要知道如何以最佳方式設置提示,這就是提示工程的作用所在。

亞伯拉罕建議採用思維鏈提示法。這種方法其實涉及到一種“分而治之”的策略,即把問題分解成多個步驟,然後逐一解決,最終解決整個問題。 “要求模型在特定時間內做太多事情反而效果不佳。它要做的是能夠處理可管理的信息塊,並生成可管理的代碼塊。”他說。

例如,與其要求人工智能程序員從頭開始編寫整個程序代碼,不如認真考慮一下程序需要完成的所有任務。進一步劃分這些任務,要求模型為每項任務編寫特定的函數,這就需要與模型來回探討實現某項任務所需採取的步驟。

亞伯拉罕說:“將其視為一個了解某個主題知識但經驗不太豐富的聰明實習生。”

提示工程的精確性和清晰性非常重要。亞伯拉罕提到:“你需要非常清楚地告訴模型你想要什麼,非常準確地告訴它你要求它解決什麼問題,並確保你在一直跟進。”

學習人工智能和機器學習的基本概念,以及了解大型語言模型的工作原理和優缺點也很有價值。你需要深入研究,但掌握一些常識對於判斷結果至關重要。

為了幫助你快速入門,Abraham 推薦OpenAI Cookbook,其中包含有關提示庫和工具的章節內容、提示指南和視頻價格等,而維斯林格姆則建議閱讀《圖解轉換器》(the Illustrated Transformer),以了解更多有關模型和機器學習的基礎知識。

保持批判態度,並關注風險

軟件工程師應對大型語言模型的輸出結果持批判態度,因為它們往往會產生幻覺,生成虛構、不准確甚至是錯誤的代碼。維斯林格姆說:“盲目使用人工智能生成的代碼很容易陷入死胡同,而且很難發現其中細微的錯誤。”

維斯林格姆說道,”這就是為什麼檢查生成的代碼至關重要,儘管這會增加一定的工作量,但對於提高工作效率可能弊大於利。但亞伯拉罕認為,”在某些情況下,驗證代碼比從頭開始編寫代碼要容易得多,而且先生成代碼,然後進行驗證,最後再整合至現有的代碼庫中是一種更快的方法”。

我們不妨對這些模型的輸出結果進行分析,並提出以下問題: 這個模型是根據什麼數據訓練的?哪些數據被過濾掉了,哪些數據沒有包括在內?訓練數據的歷史有多長?模型是在什麼版本的編程語言、軟件包或庫上訓練的?這些問題的答案可能會影響結果並提供更多相關信息。

開發人員還應該警惕在這些模型中輸入專有代碼。一些公司,如Tabnine,提供企業版的人工智能編碼助手,在提供隱私的同時還能學習企業的編碼模式和風格。

版權是另一個需要考慮的因素,不過如果你使用這些工具來完成幾行代碼或為普通瑣碎的任務生成代碼,那麼與生成大段代碼相比,版權問題就不那麼令人擔憂了。

“程序員應該對自己所要做的事情的獨創性有一定的認識,以及這種獨創性在多大程度上符合他們的環境,”萊薩馬說。 ”如果模型生成的代碼具有一定的原創性,那麼在將其放入代碼庫之前,一定要保持懷疑和猜忌的態度”。

一個更大的問題是代碼的安全性,因為這些模型可能會生成包含漏洞的代碼。維斯林格姆認為,軟件開發的最佳實踐,比如代碼審查和強大的測試流水線有助於防範這種風險。

萊薩馬說:”更有經驗的軟件工程師能夠帶來的一種意識是,代碼中最常見的漏洞和代碼容易受到攻擊的最常見方式。”他們會建立一種直覺,知道哪些地方需要注意,哪些地方會引起警覺。今後,這類技術將成為軟件工程組合中更重要的組成部分。 ”

程序員要想在生成式人工智能世界中生存下去,就需要將人工智能視為一種工具,並將其融入到工作流程中,同時認識到這些工具的機遇和局限性,並且依靠人類的編碼能力來發展壯大。

譯者:Araon_

資訊來源:由0x資訊編譯自8BTC。版權歸作者所有,未經許可,不得轉載

Total
0
Shares
Related Posts