未來五年內將不會有人類程式設計師。
這是最近AI圈新晉嘴炮哥,Stability AI行政總裁伊瑪德·莫斯塔克又一驚人言論。
此話一出,立刻引得一眾科技圈大佬吐槽,直指大錯特錯。
ChatGPT的出現催生出一批代碼生成工具,AI取代人類話題已久,但對「程式設計師飯碗不保」這種觀點,反對之聲並不少見。
最近,IEEE Spectrum發佈了一篇GPT時代程式設計師生存指南。
文章從四個方面,表述在大模型為核心的編碼時代,程式設計師如何不被替代,並認為現在還無法做到代碼100%靠AI生成,具備編程素養的人類程式設計師依然很重要。
接下來,就來具體看看這篇文章的主要觀點。
基礎是一切
儘管現在已經有很多基於AI的編碼助手,可以幫助完成生成代碼。
但編程的基本原則和前提仍然是理解。
Python軟件基金會研究員、軟件公司Explosion聯合創始人兼CEO伊內斯·蒙塔尼(Ines Montani)說:AI本質上是大模型的統計輸出,程式設計師的工作不僅僅是編寫多少行的代碼這麼簡單。
當前,程式設計師仍然需要具備最基礎的「閱讀、理解」自己和他人代碼的能力。
比如,通過對代碼進行分析和調試的能力,以及對問題解決和算法設計的理解,才能將所編寫的代碼融入到更大的系統中。
此外,事實證明,良好的軟件工程實踐比以前更有價值,包括規劃系統設計和軟件架構。
「人類編碼員仍然必須弄清楚一段代碼的結構、組織代碼的正確抽象以及不同界面的要求」,MIT計算機科學和人工智能實驗室副總監兼首席運營官Armando Solar-Lezama說道。
通過理解問題、拆解問題、設計算法以及實施和測試解決方案,人類編程人員能夠提供獨特的洞察力和創造性解決方案,而這些是AI無法完全取代的。
找到適合的工具
現在已經有大量工具被應用到編程領域,包括GitHub Copilot、ChatGPT、Bard等,但每個工具交互方式都有差異。
例如,GitHub Copilot和其他AI編碼助手可以增強編程過程,提供代碼建議。
而ChatGPT、Bard這類則更像是一個對話式AI程式設計師,可以用來回答關於API的問題或生成代碼片段。
此前GitHub曾採訪了500名開發人員,其中92%的人表示在工作和私人時間都使用AI編碼工具。
AI是一個發展迅速的領域,保持開放的態度,持續嘗試使用不同的AI工具。
同時,要考慮適當的使用場景。生成式AI可以為學習新的編程語言或框架提供快捷途徑,也可以更快地啟動小型項目並創建原型。
而想要讓對話式AI程式設計師發揮作用,就需要清楚了解「如何與AI溝通」。
提到溝通,這就涉及提示工程。
學會與AI溝通
對話式AI程式設計師,就像一個具備豐富知識但經驗不多的實習生,需要引導。
OpenAI創始人Sam Altman就直接表示:
能夠出色編寫Prompt跟AI對話,是一項高級技能。
讓AI從頭開始編寫整個程序,不僅無法最大程度發揮AI的能力,還可能獲得一些不相關的回覆。
這就需要將一個問題分解為多個步驟,並逐個解決每個步驟以解決整個問題的分而治之策略。
進一步拆解需求,讓AI為每個任務編寫特定的函數。
因此,了解AI和機器學習的基本概念,學習LLM工作原理及其優勢和局限性也是很有必要的。
現在已經有很多關於「提示工程」的教程,之前DeepLearning.ai創始人吳恩達與OpenAI開發者Iza Fulford聯手推出ChatGPT提示工程。
另外,「ChatGPT提示工程」課程的講師之一「Iza Fulford」,此前還編撰了OpenAI Cookbook(官方手冊)。
手冊講述了大量GPT相關的使用案例,能幫助快速上手並掌握GPT模型的開發與應用。
關於模型和機器學習基礎知識的內容,可以看看Jay Alammar的Illustrated Transformer。
獨立思考和批判思維
相關數據顯示,目前GitHub平台上的所有代碼,有41%都是在使用CoPilot輔助下生成的。
用大模型生成代碼,效率很高,但也有一些問題。
首先,大模型會產生不準確、錯誤的代碼。另外,也可能生成包含漏洞的代碼。
此前,加拿大魁北克大學的四位研究人員就發現,ChatGPT生成的代碼往往存在嚴重的安全問題,而且它不會主動提醒用戶這些問題,只有在用戶詢問時才會承認自己的錯誤。
其次,就是私隱問題。程式設計師在開發過程中輸入的代碼,平台是否會非法獲取。
雖然現在一些代碼工具公司,比如Tabnine承諾企業版會嚴格保密業主私隱,但這一問題仍然不能忽視。
因此,在使用由大模型生成的代碼時,我們需要保持批判性思維,仔細檢查和驗證結果,並對其進行評估。
每一個新的技術突破和重大的範式轉變都帶來了一系列新的可能性,人工智能也不例外。
比如,2010年雲計算的興起,人們擔心傳統IT可能不再重要,但實際情況卻完全不同。
事實上對雲技術相關職位的需求大幅增加,如雲計算專家、雲架構師和雲工程師等。
程式設計師需要將AI作為一種工具,將其納入他們的工作流程,並認識到這些工具的機遇和局限性,同時依靠自己的編碼能力來保持活力。
IEEE認為,現在就說程式設計師將被替代,還為時尚早。