未來五年内将不會有人類程序員。
這是最近 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 認爲,現在就說程序員将被替代,還爲時尚早。
參考鏈接:
[ 1 ] https://spectrum.ieee.org/ai-programming/
[ 2 ] https://www.educative.io/blog/will-ai-replace-software-developers/
[ 3 ] https://www.linkedin.com/pulse/we-asked-developers-driving-impact-age-ai-heres-what-said-github/?trk=organization_guest_main-feed-card_feed-article-content/