程序員「求生寶典」!AI大發展下的程序員求生指南,干貨滿滿
前幾天Stability AI的CEO剛剛放下豪言,說AI在5年內將會徹底取代人類程序員。
今天「求生寶典」就來了!
國外網友梳理總結了程序員如何跑贏生成式AI的一些技巧,包教包會,拿來就用!
趕快學起來!拒絕AI取代,從我做起。
基礎知識學習和實踐兩手抓
雖說有無數基于AI的編碼助手可以幫助程序員們生成代碼,但編程的基礎仍然存在——閱讀和推理自己和他人的代碼,以及理解編寫的代碼如何適應更大的系統。
這些能力亙古不變,是編程的地基。
Priyan Vaithilingam是哈佛大學工程與應用科學學院的一名博士生,他主要研究人機交互和編程語言的交叉領域。
他表示,「我相信AI可以顯著提高軟件開發人員的生產力,但軟件工程不僅僅是生成代碼——從用戶需求到調試、測試等等,都是他們的工作。」
實際上,任何技能落實到最后都是四個字:解決問題。
而如何找到問題所在(這個問題并不是某個具體的問題,而是抽象的需求),如何找到最佳的解決方案,仍然是人類程序員的核心競爭力。
Python軟件基金會研究員、軟件公司Explosion聯合創始人兼CEO Ines Montani表示,解決問題的許多技能比實際的語言或工具更重要。
「程序員們應該專注于AI和自然語言處理的開發工具,但不要陷入將自己與AI進行比較的陷阱,作為開發人員,我們的工作并不僅僅是寫代碼這么簡單。」
此外,有效率的軟件工程實踐比以往會更加有價值。
這些實踐包括規劃系統設計和軟件架構,這些實踐可以給基于AI的工具提供良好的環境,更有效地預測接下來需要完成那些代碼。
「人類程序員必須弄清楚一段代碼的結構、組織代碼的方式,以及滿足不同的要求。這些才是軟件工程的核心,而這并不會很快被AI取代。」
找到符合需求的工具
第二,對于人類程序員來說,找到適合自己的AI編程工具非常重要。
每個工具都有自己的交互方式,并且可以通過不同的方式將每個工具合并到的程序員的開發工作流程中,無論是自動創建單元測試、生成測試數據還是編寫文檔,都是如此。
例如,GitHub Copilot和其他AI編碼助手可以增強編程能力,在開發者寫程序的時候提供建議。
而ChatGPT和Google的Bard更像是對話式的AI程序員,可用于回答有關 API(應用程序編程接口)的問題或生成代碼片段。
而想要找到適合自己的工具,關鍵就在于實踐。
對于開發者來說,應該廣泛試用AI工具,體會不同工具的工作原理,評估輸出的質量,同時對其它工具保持開放的態度。
而且,快速適應新出現的AI編程工具的能力同樣非常重要。
清晰準確的對話是關鍵
在用AI工具輔助編程的時候,開發人員應該詳細、清晰、嚴謹地輸入需求,把這個不斷調整輸出內容的過程視為一種迭代。
專家建議,編寫注釋會非常有用。
而對于對話式AI程序員來說,程序員需要知道構建prompt的最佳方式。
這里建議的一種方法是「思想鏈提示」。這涉及到一種分而治之的策略,將問題分解為多個步驟并解決每個步驟,從而解決整個問題。
一口氣讓模型在同一時間內完成太多任務反倒會導致結果一團亂麻,更可取的方式是一步一步來,從生成一個個代碼塊開始。
例如,不要要求AI編程工具從頭開始一口氣編寫整個程序,而是考慮程序試圖完成不同的細分任務。
專家給出了這么一個類比,把AI編程工具當作一個實習生,他可能在知識層面差不了太多,但在經驗層面還有不少欠缺。
此外,精確度和清晰度對于快速實現需求至關重要。
「你需要非常清楚地詢問模型你想要什么,非常準確地說明你要求它做什么,并確保你在一步步跟進整個落實的過程。」
學習AI和機器學習的基本概念,以及了解大型語言模型的工作原理及其優缺點也很有價值。
為了幫助開發者快速入門,Abraham推薦了OpenAI的Cookbook,其中包含有關提示庫和工具、提示指南和視頻課程的部分,而Vaithilingam則建議閱讀Illustrated Transformer,以了解有關模型和機器學習基礎知識的更多信息。
保持批判態度并了解工具的風險
最后,開發人員應該對大型語言模型的輸出持辯證的態度,首當其沖的就是幻覺問題。顯然,一味聽信AI編程工具的輸出結果總有一次會捅大簍子。
這就是為什么檢查生成的代碼至關重要。
在檢查的過程中,開發人員可以按以下這幾個問題來審視初步的輸出結果:
該模型是根據哪些數據進行訓練的?
有哪些內容被過濾掉了,且沒有包含在該數據中?
訓練數據的時間有多長,模型訓練時使用的編程語言、軟件包或庫的版本是什么?
還有一個不容易注意到的細節——版權。
原創性非常重要,開發人員應該在檢查AI輸出的結果時關注有沒有哪部分是專用代碼。
最后就是安全性問題。
拋開幻覺不談,輸出的代碼可能有不少bug。這就需要輸出審查,以及測試管道等方式來進行妥善解決。
有經驗的人類程序員可以快速識別出常見的bug,以及代碼中薄弱的部分。這種直覺就來自實踐。
總而言之,對待任何新興事物都應該以一種積極的心態去面對。
對于人類程序員來說,在被有可能的取代之前,利用AI編程工具提升自己的工作效率、提高工作質量才應該是首要考慮的目標。
希望以上內容對大家能有所幫助。