輔助程式寫作的AI(上)
延續上次談到的輔助工具型AI,作為案例探討,我們來聊聊「AI輔助寫程式」。為什麼AI能夠輔助寫程式?能夠達到什麼程度?對產業有多大的衝擊?對從業人員又有什麼影響?
為什麼AI能夠輔助寫程式呢?道理很簡單,因為網際網路上有大量的程式碼,可以用來訓練LLM。以GitHub這個世界上最大的程式碼代管網站為例,根據維基百科,截至2022年6月,已經有1.9億個程式庫,其中包括至少2800萬個開源專案。微軟在 2018 年以75億美元收購 GitHub,眾人對微軟的目的有各種揣測,但微軟、OpenAI和GitHub在2021年推出了他們共同開發的GitHub Copilot程式協作AI工具之後,這個佈局策略應該相當明顯了。跟據官方聲明,GitHub Copilot僅使用公開的程式碼,但這也引起了一些爭議。
先不論GitHub Copilot是否真的僅使用開源專案來訓練LLM,還是默默地將所有GitHub中的程式碼作為訓練資料集,即使官方聲明是真確的,這也不見得符合開源專案創作者的想法以及授權條款的範疇。要知道開源專案有各種授權方式,即便是相對寬鬆的MIT授權,也要求使用者在運用時要包含授權條款和版權聲明,至於更嚴格的授權,例如採用GPL授權的Linux作業系統,要求使用了GPL程式碼也必須採用GPL,以確保軟體的自由性。[1]
因此,使用GitHub Copilot產生的程式碼的授權模式為何?產出的程式是否有著作權?這是目前仍有爭議的地方,也是所謂的灰色地帶。迄今AI的開發和運用有相當多法規未定義或實際上難以介入的灰色地帶,各國在制定規範的步調和規範差異很大,台灣在立法院審查中的「AI基本法」,目前還在凝聚共識之中[2]。
由於AI發展太快,有不少灰色地帶。有些喜歡投機的人樂見灰色地帶,可以趁機賭一把、混水摸魚,或是有關係就沒關係,但安分守己的人就吃虧了,所以我還是希望早點有合理的基本規範讓大眾遵循。
就技術而言,目前AI程式寫作助理(AI Coding Agent)的能力已經很強了,常見的功能包括:
- 程式碼自動完成
- 將自然語言轉換為程式碼
- 程式碼解釋
- 測試程式的生成
- 程式碼修改與優化
- 輔助除錯
基本上,LLM最擅長的就是語言處理,包括各種程式語言在內,只要想開發的程式類似於存在於公開程式資料集的程式,AI程式寫作助理大概都能幫忙,所以寫程式作業、複刻書上的演算法應該都沒有問題,而最近興起所謂Vide Coding的風潮,進一步降低門檻,讓完全沒有程式基礎的人也能使用,也因此有人開始說,程式設計師要失業了、資訊工程系不再吃香了,真是如此嗎?
首先我們要知道,程式設計只是軟體開發的形式、資訊工程的入門而已,好比作文之於文學創作,能夠快速寫作的人不見得能成為文學家、暢銷書作者。對一般人而言,程式設計的門檻之所以高,是因為程式設計所使用的語言和人類平時溝通所使用的自然語言差異非常大,而且語法特別嚴謹,一個小地方錯了可能導致完全不同的計算結果,因此也強調邏輯和數理的素養。
其次,軟體的研發工作也分很多種,有些軟體是以創意和包裝加值為主,例如遊戲、網站、手機App,有不少軟體是大同小異的,或是針對使用者的需求進行客製化,往往可以仰賴現成的開發套件來實作構想,資訊科技的門檻並不高。大家可能聽說過小學生靠著自學就開發出手機App賺錢的故事,憑藉著多半是創意和個人興趣,而非技術。各行各業的運營和研發工作,時常會用到資訊科技,因此目前的108課綱已納入資訊科技課程,而不少大學科系也將程式設計列為必修或建議選修的課程,但這類應用的重點往往在於設計者的創意和專業,並不在於程式寫作(coding)。
AI程式寫作助理的出現,能夠大幅減少重複性、低門檻的程式開發工作所需的時間和精力,因此一般人在AI的協助下就可完成這類型的程式,而專業的程式設計師亦可利用AI助理來大幅提高生產力,這是我在系列文章(5)所提及的第四次工業革命。如附圖所示,只要能夠以自然語言明確表達想要開發的軟體的功能與運作流程,AI即可代勞、快速產生程式,甚至自動進行測試,確保功能正確。其實很多數位硬體設計的開端也是程式設計,只是選用的是硬體設計語言而已,例如Verilog、SystemC,和C語言差不多,所以目前也有AI代理能夠協助設計晶片。
然而,資訊科技所涵蓋的領域何其廣,探討的不只是把軟體開發出來,還要讓軟體跑得快、系統運作有效率、安全又可靠,仍有相當多AI可以協助但難以取代人類專家的地方。
以我本身所從事的平行程式設計和效能優化為例,AI目前的程度與專家還有頗大的距離。原因也不難理解,首先是平行程式的數量,遠較一般程式來得少,其次是平行程式和效能優化,通常與系統架構有關,這部分仍缺乏大量的資料可供AI參考,所以目前的能力相當有限。
(未完待續)
[1] 開源軟體(Open Source Software)的文化,可以追溯到1980年代初期的自由軟體(Free Software),而GPL與自由軟體的理念較接近。雖然在意涵上有所不同,但實際上中多數符合自由軟體定義的軟體也符合開放原始碼的定義,故在此以開源軟體來泛指這類可公開取得的原始碼。
[2] 工商時報(2025.06.12): AI基本法立院審議 無共識, https://www.ctee.com.tw/news/20250612700093-439901