人工智能:編程員為何喜愛這些可能令他們失業的新科技?

Janine Luk, a 26 year-old software engineer in London.
學習編程是陸小姐"史上最好"的決定。

「當你開始學寫代碼,本身就能讓你覺得自己很聰明,好像在《駭客任務》(Matrix,《黑客帝國》)裏面一樣,」26歲的陸伶彥(Janine Luk)說。她是一名在倫敦工作的軟件工程師。

出生在香港的她職業生涯初期是在法國南部做遊艇市場營銷,但是卻發現這一行「有些千篇一律和膚淺」。

於是,她開始在下班後自覺編程,之後又跟了一個15周的培訓營。

在培訓營的最後一天,她向一家網絡安全軟件公司Avast申請了一份工作。

三個星期後就開始上班了。

「兩年半之後,我真的覺得那是我做過最好的決定,」她回憶說。

她剛開始進入這家公司時,她是團隊裏第一個女的軟件開發人員。現在,她會用業餘時間來鼓勵其他女性、有色人種和LGBT(同性戀、雙性戀及跨性別)人士嘗試編程。

她說,對於像她這樣的程序員來說,最近最有趣的轉變是人工智能(AI)工具的興起,它能夠自己完成越來越巨量的代碼編寫。

6月,位於舊金山(三藩市)、擁有5600萬用戶的代碼託管平台GitHub公布了一個新的AI工具,叫做Copilot。

你開始鍵入幾個新的代碼字符串,然後AI會給出建議,如何寫完剩下的部分。

Mike Krieger, co-founder Instagram
Instagram的聯合創始人邁克·克里格對於將人工智能技術引入編程表示歡迎。

「我見過最震撼腦袋的機器學習功能應用,沒有之一,」Instagram的聯合創始人邁克·克里格(Mike Krieger)對Copilot發出這樣的熱情讚嘆。

它是基於一項被稱為「GPT-3」的人工智能技術,在去年夏天由OpenAI發佈。那是一家位於舊金山的人工智能實驗室,由伊隆·馬斯克(Elon Musk)聯合創辦。

這個GPT(代表「generative pre-training」,即「生成預訓練」)引擎做的一項「非常簡單但是非常大量的工作——預測一串文字當中的下一個字母,」Codility公司的創始人,工作地在華沙的格澤戈茨·賈卡奇(Grzegorz Jakacki)解釋說。他的公司製作了一個廣受歡迎的招聘測試軟件。

OpenAI訓練人工智能,是通過網絡上已經存在的文本,比如書籍、維基百科和數十萬網頁,他說,這樣的原始素材是「有點經過人為策劃但是盡可能多地包含了各種人類語言」。

而且,賈卡奇表示,「可怕的是,它沒有被教導任何特定語言當中的規則。」

這樣得出的結果還是像模像樣的文字段落。

之後,人們還曾叫它去用多種不同風格來寫作,比如,寫一個新的哈利·波特(Harry Potter)故事,但是用厄內斯特·海明威(Ernest Hemingway)或者雷蒙·錢德勒(Raymond Chandler)的風格。

Sam Altman, OpenAI's chief executive
薩姆·阿爾特曼指出,AI可能會犯"非常傻的錯誤"。

最終,OpenAI的首席執行官薩姆·阿爾特曼(Sam Altman)在推特(Twitter)上發文稱,對於GPT-3的炒作「太過份」,而且人們需要記住,AI「有時間會犯一些非常傻的錯誤」。

GitHub的母公司微軟(Microsoft)在9月買下獨家許可使用GPT-3,而GitHub還決定訓練另一個類似的模型。只不過這一次,是訓練AI寫軟件的源代碼。

GitHub是世界最大的源代碼庫,擁有至少2800萬個公共代碼庫(軟件代碼組存放的地方)。所以,這家公司也能給Copilot一個可觀的公共代碼原始素材。

據曾經嘗試給AI出代碼難題的陸伶彥說,這樣的結果是,Copilot能夠提供「相對好的解決方案,儘管有時候會需要一些微調」。

作為一名程序員,她遠沒有把這個工具看作是她工作的威脅,而是喜歡有AI來幫她做寫代碼當中那些「比較沉悶的部分」,比如檢查那些被叫做「正則表達式」(regular expressions)的複雜字串,她過去總是要「三番四次複查」。

Dina Muscanell, Vermont-based senior programmer at open-source software company Red Hat
紅帽公司的資深程序員迪娜·穆斯卡內爾表示,經驗不足的編程員應該警惕不要依賴人工智能的幫助。

而且,佛蒙特州開源軟件公司紅帽(Red Hat)的資深程序員迪娜·穆斯卡內爾(Dina Muscanell)說,由於AI接收的是由專業程序員寫的代碼,它真的能幫助編程者運用同僚的集體智慧結晶。

現在已經有一些像「Stack Exchange」這樣的代碼社群網站,程序員會在上面問問題然後得到建議。或許這也沒什麼不一樣?

「如果你想想,是在敲代碼的同時立即得到回饋,那還是很讚的。」她說,雖然是由AI來堆砌,但是其實「你有一整隊人在給你投餵這些代碼」。

不過,專業程序員對於AI這個初來乍到的新兵還是有一些顧慮。

其中一個是找錯。賈卡奇說,在軟件工程行業當中,「在垃圾顯而易見的時候,你是比較幸運的,但是這個東西可能會製造一些非常微妙的垃圾。」

在代碼當中的微小錯誤有可能非常難於被發現,同時導致非常大的代價。

未來一種可能的解決方法是利用AI來查找漏洞:比如,發現在微波爐上按某些按鈕「是有效的輸入,但是卻不合情理」。不過,我們還沒有達到這一步。

與此同時,穆斯卡內爾警告說,「如果你經驗不足,而你是在嘗試學習,你可能會出一些差錯但是卻沒有意識到。」

另一個大問題則涉及這些自動生成代碼的所有權。如果Copilot是在用其他人寫的程序來獲得訓練,編出一些與另一名程序員寫的幾乎一樣的代碼,然後你又用到它,這會怎樣?

陸伶彥說,使用AI工具「有可能會侵犯一些開源軟件許可,因為它可能會有些東西是來源於訓練代碼」。而這可能會令你掉進剽竊的漩渦。

賈卡奇說,這完全是一個「法律尚未跟上技術」的領域。

理論上,你可以衡量有多少代碼是源自於一組訓練代碼:方法是通過訓練一個不同的AI去省略掉一組特定代碼,但是使用所有剩餘的代碼。

但是,賈卡奇說,這樣做將會「極其高成本」。

實際上,目前AI只提供一些短的代碼片段,不會完全編寫軟件程序。

賈拉奇說,相較之下,要在網頁代碼中「得到任何一種有意義的功能」,最短的代碼長度是1萬行。

所以,它還沒有凖備好要取代真人程序員。

也沒有到可以出現傳說中的人工智能技術奇點的程度——這個想法最早是由數學家約翰·馮·紐曼(John von Neumann)假定的,指的是電腦智能的自學循環進入一個失控的爆發點,然後飛快地超越人類的智慧。

而更重要的一點,對於像陸伶彥這樣的代碼編寫員來說,「即使它有幫助,也不一定代表工作量會減輕。」

代碼仍然需要全面覆核,而且要進行兩部分測試,一個是它如何運作(稱為單元測試),另一個是它如何與其他代碼融合(集成測試)。

她表示,這樣還是非常好。

她喜歡寫代碼的主要原因「是它當中解決問題的部分,而如果所有事都已經幫你做好了,那當中的樂趣就被拿走了,」陸伶彥這樣反思到。

如果電腦做太多的思考,「你就得不到解決一個問題之後的那種滿足」。

而雖然她認為,隨著越來越多的學習和調適,AI編程工具是有潛力的,「但是希望不要太快,讓我們變得多餘,」她笑說。