新聞

國際混淆C程式碼競賽(International Obfuscated C Code Contest,IOCCC)上個月公布2025年得獎名單,23件得獎作品中包括366 bytes的電腦模擬器、會重新編譯自己的Pong遊戲,以及臺灣開發者jingp49所製作的《Doctor Who》片頭動畫程式。

IOCCC創立於1984年,是網路上歷史最悠久的競賽之一,發起人Landon Curt Noll把這點子丟到USENET新聞群組,當時的規則是在512 bytes裡寫出一支儘可能令人看不懂的完整C程式,雖然之後的篇幅限制有所調整,但核心精神不變:表面上是在鼓勵爛程式,但其實是為了讓工程師社群體會到「清晰易讀的程式風格」有多重要。IOCCC自己也強調,真正的工程師不會寫出這種程式,除非是要參加比賽。

基本上,作者必須對C語言的指標、巨集與記憶體管理具備強大的理解能力,才能寫出頂級的混淆程式碼。

該比賽由創辦人Noll和資深評審Leonid Broukhis長期主持。IOCCC沒有固定的獎項類別,而是每一件得獎作品都會被評審量身打造一個獨一無二的獎項名稱。IOCCC並非年年舉辦,在2020到2024年間曾經歷長達四年的空窗期,直到2025年才重新復辦。今年是空窗期後的第2屆,也是第29屆的競賽,IOCCC形容這次投稿的數量與品質都接近歷史高點,總計有23組作品獲獎。

得獎作品之一的Subleq Computer,是Adrian Cable以366 bytes、9行的C程式碼模擬出Subleq電腦架構。Subleq當初就是為了示範如何把指令集縮小到只剩一種指令,還能維持完整運算能力而設計的;而Cable的Subleq Computer得到了「最佳假想模擬器獎」(Best Imaginary Emulator),因為這9行的程式碼不僅可畫出Mandelbrot的碎形圖案或玩Pong遊戲,還可以在該模擬架構上執行完整的Linux作業系統,原始碼的精簡及它所能執行任務的反差,使它獲得評審青睞。

Jonah Uellenberg的作品Quine Pong獲得了乒乓球獎項(Ping Pong Prize),他把經典Pong遊戲與Quine(可輸出自身原始碼的程式)結合。玩家每操作一步,程式就會輸出代表下一幀畫面的新C原始碼,重新編譯後才能繼續遊戲,使「輸出原始碼→重新編譯→執行」的循環成為遊戲的一部分。

這些混淆C程式並非手工撰寫,Uellenberg透過自行開發的Quine編譯器Insert進行最佳化、壓縮與轉換,產生符合IOCCC風格的C原始碼。

來自臺灣的jingp49則以《Doctor Who》片頭動畫作品獲得「Who Won Award」。該程式在終端機中輸出類似1963年BBC科幻影集《Doctor Who》片頭的ASCII動畫,並以程式方式模擬當年片頭使用的HowlRound影像回饋效果,也就是將畫面內容反覆掃描、放大並寫回螢幕緩衝區,形成連續變形的視覺回饋動畫。

評審認為,《Doctor Who》完美呼應同名英國科幻影集以藍色警亭呈現的時光機飛船「外面比裡面小」的經典設定,用看似簡短的C原始碼,產生大量的ASCII動畫輸出,並邀請讀者找出龐大輸出究竟藏在哪段程式碼中。

IOCCC表示,本屆的得獎者大多來自過去曾有得獎紀錄的地區,IOCCC29首度出現來自臺灣的新得獎地區。作者jingp49並未揭露自己的真實名字。

IOCCC一直都只提供各種有趣的獎項,並無獎金設計,得獎者最大的獎勵就是作品被收錄於官網及GitHub上。下一屆IOCCC30預計於2026年底開放報名,2027年第一季末截止。