人工智能“上位”會讓程序員消失嗎?
隨著低代碼和無代碼平臺迅猛增長,個人和組織都可以用相對較少的傳統上稱為編寫代碼的東西,來創建強大的生產應用程序。該趨勢的下一步,就是人工智能生成代碼,比如,最近的Open AI Codex和Github Autopilot就展示了這一步的實現。
那么,這些趨勢意味著什么呢?編寫代碼會過時嗎?
背景是什么?
在我們回答這個問題之前,要先把這些趨勢置于背景之中,這是有幫助的。在編程代碼的早期,使用匯編語言和機器語言是當時的常態。編寫代碼后來演變為高級語言,開發人員可以用一種與機器無關的語言描述高層次的意圖,再用編譯器在下面生成特定機器的代碼。
這種趨勢一直持續到現在,今天的主流語言(例如python)帶有許多可多次使用的庫。所以,要創建強大的應用程序也相對簡單,只需要編寫少量的新代碼即可。
低代碼/無代碼是什么?
低碼/無碼是這種演變的下一步。開發人員無需去尋找和組裝可重用的代碼塊。低碼平臺能夠遵照高層次的指示及識別正確的可重用代碼塊并組裝出必要的代碼。開發人員則仍然要作出許多決定,例如構建什么樣的應用以及軟件應該如何運作等等。
那么低碼是自己做一些決定或是什么都由開發者決定呢?答案是前者,而且根據平臺的不同,自動化做決定的數量也不一樣。之前的編譯器其實也是這樣。比如說開發者使用編譯器編寫一個循環,開發者很少會指定該循環應該如何用機器代碼實現。編譯器決定如何用機器代碼實現該循環,用到的實現方法,可能是一系列啟發式算法和由編譯器設計者絞盡腦汁創建的算法。
人工智能可以寫代碼嗎?
人工智能寫代碼是最近的發展,這是比低碼更高大上的一種方法。低代碼平臺上的人類(即低代碼平臺設計者)可能已經組裝了自動化邏輯,在用戶提供了高層次的指示后,自動化邏輯得以觸發并生成代碼。人工智能在研究了大量的現有代碼語料庫后確立一些組裝規則,進而可以生成代碼。
對于用戶而言,人工智能生成的代碼可能看起來和低碼平臺生成的代碼一樣,但這些代碼是人工智能創造的低碼。這意味著現在可以更容易地用人工智能創建新的低碼平臺,而平臺自動化模式則是基于人工智能。
這一類的平臺可以做很多事情:
創建應用程序
如今,業界的一些人工智能原型已經可以根據人類的日常語言指示編寫簡單的應用程序,這顯示了人工智能在這領域的發展前景。這些人工智能用了許多用不同語言編寫的程序例子進行訓練,但從簡單的層面上看就是個代碼的自動更正。而從更復雜的層面上看,它實際上是一個引擎,這個引擎可以為開發者指定的任務編寫代碼。
調試代碼
現在,程序員用到的一些集成開發環境(IDE)已經可以識別代碼中的簡單語法問題。新的人工智能技術在這方面則更進了一步,它能通過分析代碼庫、錯誤修復和代碼更新進行訓練,達到檢測常見錯誤模式并在新代碼中找到這些錯誤。
編寫人工智能代碼
現在已經可以將一個數據集交給自動化工具,使得自動化工具生成正確的代碼類型,再從數據集中構建一個人工智能。這種類型的人工智能自動化已經可以用于一些特定的學習背景,例如在各種生產人工智能環境里用于生成后端代碼,去教初中和高中學生如何利用人工智能編寫代碼。

圖中顯示的編譯器、人類設計的自動化和人工智能設計的自動化逐步擴展了編程助手平臺。新技術的出現擴展了編程助手的適應范圍,編程助手也涵蓋了更大范圍的使用案例。(圖:AIClub.World)
程序員該何去何從?
無疑,這些趨勢將產生深遠的影響。許多開發者擔心這將使他們丟掉工作——但筆者不這樣認為。
編譯器并沒有讓開發者失業,而是大規模地增加了所需的開發者數量、代碼的使用以及所創建的應用程序的規模和范圍。筆者預計上述的趨勢也是這樣。但這將從根本上改變編寫代碼的性質(如果你是一個熟練的匯編語言開發人員,相關的工作有限)。這些趨勢令人類成為設計者的角色,而不是實施者。未來的開發者將可以自由地專注于可用性、設計、特征功能等等,而無需擔心如何使用特定的API等細節問題。
當然,該趨勢的發展還有待觀察。生產軟件是一項復雜的工作,結合了設計、功能、實施、測試、修改和維護、DevOps等等。任何能實施自動化的東西都可以令開發者騰出手來處理其他事情。可以說,我們正在挺進一個新的領域,人類的任務在這個領域中將集中在功能、設計、道德等主題上,而低層次的實施將由人工智能和自動化來處理。
總結
回到標題的問題——人工智能“上位”會讓程序員消失嗎?
筆者認為不會。開發人員的工作是創造一個產品,產品需滿足用戶的需求,相應的解決方案需要特定運行的環境(如公司使用什么技術、現有的基礎設施、團隊技能、法律限制等)和許多其他因素。而人工智能生成的代碼是對大多數這些事情的補充。不過筆者確實認為,人工智能正在從根本上改變編寫代碼的含義并將在未來持續改變編寫代碼的含義。關鍵是我們如何與我們編碼教育以及行業編碼實踐保持同步。
企業或技術領導者務必確保你的團隊了解這些發展以及如何利用這些發展,這一點很重要。低碼已經在幫助開發人員提高生產力。人工智能生成代碼是一個相對較新的現象,但我們可以預期,人工智能生成代碼在未來幾年內會變得更加普遍。即使是熟練的開發人員也可以受益于持續的教育和培訓計劃,達到保持對最新技術的了解的目的。如果現在還沒有這樣的計劃的話,最好制定一個。