2022年10月26日 聯合報 科技.人文聯合講座

從機器碼到機器自動編碼

趙坤茂

目前盛行的電腦以二進位代碼表示指令和資料,各個0或1就稱為一個位元,而執行檔乃一長串的位元組合。每種機型都有各自獨特的機器碼指令集,通常會將每四個位元合併成一個十六進位數,以利閱讀與撰寫,直到載入電腦時再轉為0與1。

如果我們要電腦執行特定任務,就透過程式實現運算邏輯流程,這就如同食譜的烹調步驟一般。雖然我們可直接以機器碼設計程式,但因機器碼的數字編碼相當生硬乾澀,使得撰寫過程極為繁瑣且容易出錯,於是乎更接近人類思維的高階程式語言應運而生,如C/C++JavaPythonSwift等。高階語言所撰寫的程式,可透過直譯或編譯的方式轉換成機器碼,以便在特定的機器上執行。

如今,程式設計能力已逐漸成為斜槓世代的必備技能之一。初學者從練習階段牙牙學語,到實務應用能琅琅上口,其間必然經歷了無數次的挑戰與磨練,包括熟諳開發者平台、掌握程式語言的語法及語意、培養程式偵錯技巧、建構完善測試資料等。在這過程中,更重要的是要提升自己的解題素養,讓所設計的程式能更快速精準完成任務。

值得留意的是,程式設計斜槓已不再為人們所專有,可自動撰寫程式的人工智慧軟體已日漸嶄露頭角,如AlphaCodeCodeWhispererOpenAI CodexGitHub Copilot等。

今年二月,AlphaCode在參加十場Codeforces網站所舉辦線上程式競賽後證實,它大約排名在五千多位參賽者的中間位置,展現了不落人後的程式解題能力。根據Codeforces的估算,彼時AlphaCode的等級分大約是1300,已強過新手(Newbie),算是學徒(Pupil)等級。雖然離專家(Specialist)的門檻1400已很近,但離該網站第一好手tourist的等級分3912仍相去甚遠。

GitHub是網路最大的程式碼代管服務平台,登錄了超過八千萬名的程式開發者,以及兩億個程式碼倉儲。今年六月,GitHub Copilot推出付費機制,讓程式設計者能與它搭檔,加速開發速度。在撰寫程式的過程中,它會依據需求自動建議合適的程式碼,讓程式設計者省下不少開發時間。

然而,十月中旬有位美國教授發現, GitHub Copilot將他所撰寫的程式碼整碗捧去給使用者,如此行徑不僅有違反著作權之虞,也將陷無辜的使用者於不義。唉!天下程式一大抄,沒想到不只人抄人,到最後就連機器也抄人。

無論如何,自動撰寫程式軟體終將成為人類的得力助手。自電腦問世以來,從機器碼到機器自動編碼,我們共同見證了人類層層疊加的智慧結晶。

【2022/10/26 聯合報】