NLP AI可以理解程式碼,並快速生成程式碼注釋或說明文件。以GitHub Copilot為例,工程師可以在Visual Studio Code先選擇要解釋的程式碼(1),展開Explain畫面(2),指定輸出正體中文(3),按下Ask Colipot按鈕(4),就能得到條理清晰的程式碼注釋。(圖片來源/多奇數位創意)

自然語言處理AI可以成為程式開發工作的強力輔助。事實上,從自動生成程式碼、提供修改建議,到撰寫程式碼註解、生成程式說明文件,軟體開發公司多奇數位創意已經用ChatGPT和同樣使用GPT-3模型的Copilot,來簡化這些環節的許多工作。這些工具對開發工作帶來的改變,讓語言邏輯能力成為工程師重要能力之一,「甚至以後文組的人,即使程式能力不是很強,也可以把開發做得很好。」多奇數位創意總經理黃保翕(Will保哥)直言。

自動化高重複性開發及解釋性文書工作

黃保翕他以自家一位Java工程師首次嘗試體驗Copilot的故事,來說明AI如何應用於程式開發。

這位工程師當時正在與黃保翕討論專案程式碼重複性高,是否要建立一些設計模式(Design pattern)來優化開發流程。「這種事情用Copilot其實一下就搞定了。」黃保翕說。

起初這位工程師還半信半疑,加上當時Copilot免費試用已經結束了,因此工程師不太情願。黃保翕只好直接掏出300塊,並當場教這位工程師如何使用Copilot。

「結果他在IDE剛打了一個@,後面100%正確的程式碼就自動完成了。」黃保翕解釋,Copilot可以自動將專案所有的原始碼進行建模跟分析。當工程師輸入提示文字,它便會考慮專案的設計模式跟架構,並預測一個最適合的回答。這意味著,許多重複性的程式碼,例如增刪查改(CRUD)指令,都能用AI又快又好的完成,省下開發人員撰寫重複程式碼的時間和精力。黃保翕並表示,由於AI生成的程式碼是依照提示指令及開發中專案既有程式碼,動態生成的產物,因此這些程式碼沒有抄襲的疑慮。

多奇還會利用Copilot及ChatGPT,來生產程式碼註解及程式碼說明書。黃保翕說,工程師通常不喜歡寫程式碼說明文件,而AI生成的說明書,不只條理清晰,幾乎不用修改,還可以文情並茂,容易閱讀。現在多奇PM或SA只要把程式碼輸入ChatGPT裡面,再把生成的說明文字貼到Word裡,程式說明書就接近完成了。由於程式碼是邏輯性很強的文字內容,因此NLP可以輕易生成說明文件,且錯誤率很低,「如果ChatGPT看不懂你的程式碼,那你寫的東西也是夠爛的。」他笑道。

ChatGPT還能用來優化或檢查程式碼,多奇甚至為此開發了輔助工具,進一步加速工程師用ChatGPT做這件事。他們開發了一個Google Chrome擴充功能,能自動填入Web版ChatGPT的提示文字,再寫了一個Teams機器人,可以將輸入的程式碼拋轉到這個擴充功能上。這樣一來,工程師只要在自家Teams頻道上貼入程式碼,就能直接拋轉到Web版ChatGPT,讓AI幫忙檢查,並提出建議。黃保翕補充,這樣不只能簡化程式碼檢查工作,而且每個工程師一天至少會使用ChatGPT 10至20次,透過這個工具來利用免費的Web版ChatGPT,還能省下呼叫ChatGPT API的使用費用。

顛覆開發工作流程,語言邏輯能力更加重要

Copilot和ChatGPT自動化了許多開發環節,不過黃保翕強調,這並不代表工程師會被取代,因為AI沒有自主發想能力,因此人類工程師發起新專案、新功能的角色,難以由AI替代。儘管如此,工程師的工作內容和流程,以及被重視的能力,還是會因為這些AI工具的問世而改變。要用提示文字來操作AI寫程式、寫文件,工程師必須具備兩種能力,其一是語言邏輯能力,其二是對開發技術及框架的理解。

給你一個情境,如果你要對ChatGPT描述它,你會怎麼說?黃保翕拿這個問題考過許多人,「很多人會詞窮,對工程師來說,這是一個警訊。」他指出,重複性高、有明顯設計模式的程式碼,工程師可以輕易命令AI生成。但如果要AI生成的內容,涉及較為複雜的業務邏輯或程式邏輯,就需要工程師用更精準的語言提示AI。此時,比起寫程式的能力,工程師的語言邏輯能力就顯得更加重要。「以後甚至可以找文組生來生成程式碼,因為他們更能對AI清楚描述需求。」他說。

要清楚描述需求,除了理解業務邏輯,工程師還得對開發框架及技術足夠熟悉。若工程師對技術理解有限,就無法準確告訴AI怎麼寫程式。黃保翕說,目前Copilot和ChatGPT約省下了工程師20%的工作時間,這些時間,工程師應該用來深化自己對技術的了解,以利未來能命令AI寫出更多、更複雜的程式碼。研究開發技術的方向,也會從記憶特定程式碼怎麼寫,轉向理解這個開發框架或技術的強弱項及運作邏輯,因為有許多程式碼已經不再是由工程師親手敲出來,而是由AI工具代為生成。

 更多相關報導  

熱門新聞

Advertisement