
41 年 IOCCC 再爆話題:怪到癲嘅 C code 點解仲值得工程師睇
由 366 bytes emulator 到 Doctor Who ASCII 動畫,幾件作品睇落荒謬,其實好考 C 語言底
先睇清楚:呢場比賽好認真咁玩荒謬
iThome 報道 IOCCC 上月公布 2025 得獎名單,重點提到 366 bytes emulator、會重新編譯自己嘅 Pong,仲有 jingp49 寫嘅 Doctor Who 片頭 ASCII 動畫。呢度先補一個核對位:iThome 寫 23 件,IOCCC 官方 2025 頁同 GitHub 清單喺 2026 年 7 月 6 日列出 22 件,所以下面作品數量按官方版本講。
IOCCC 由 Landon Curt Noll 喺 1984 年發起,早期規則係用 512 bytes 以內寫一個完整、難睇到極嘅 C 程式。玩法表面好壞心:鬥寫爛 code。核心訊息其實相當正經,爛 style 會拖垮本來正確嘅程式;你要拆得明呢啲怪物,反而要識 macro、pointer、preprocessor、compiler 同 C 語言啲暗角。
366 bytes emulator 最誇張係細得嚟仲跑到成套架構
Adrian Cable 嘅 Subleq Computer 攞 Best imaginary emulator。根據官方作品頁,個 prog.c 得 366 bytes,但模擬一套 Subleq / OISC 架構,配 32-bit CPU、1.5GB RAM、800 x 512 framebuffer、時鐘、鍵盤同 multitasking。官方作品頁提供 Mandelbrot、Pong 同 Linux bootimage 玩法,作者仲話可以入去跑 DOOM。呢類作品唔止係少打幾隻字,真正難位係由一條指令推到完整工具鏈:有 LLVM backend、C compiler、Linux port 同 userspace。
Quine Pong 放喺 AI coding 年代特別好睇
Jonah Uellenberg 嘅 Quine Pong 就似一個工程笑話成真:每次執行,程式吐出下一幀畫面嘅 C 原始碼;你要 compile 再跑先可以繼續玩,try.sh 只係幫你自動做呢個循環。作者講得好清楚:混淆版經自己寫嘅 Insert quine compiler 生成,唔係逐字手寫出嚟。可讀版本放喺 prog.int,再經 liveness analysis、constant folding、variable reallocation、compile-time evaluation 同 define compression 壓到 IOCCC 口味。
呢點放返 AI coding agents 年代幾好玩。AI 生成 code 成日有另一種問題:表面似啱,取捨未必有人講得清。Quine Pong 表面亂到離譜,但背後有中間表示、有優化 passes、有可讀源碼同作者解釋。工程價值就喺呢度:睇 code 唔可以淨係睇外觀整齊,仲要睇有冇設計意圖、約束同可重現工具鏈。
Doctor Who 作品最啱講文化
jingp49 嘅 Who won award 亦值得睇。官方話呢屆多咗 Taiwan 呢個新得獎地區;iThome 報道亦指出 jingp49 冇公開真名。呢點有新聞性,但今次題材最值得睇嘅係技術文化:作品用 C 喺 terminal 重做電視史入面好物理、好 analog 嘅視覺效果。
作品頁寫明,程式輸出 1963 年 Doctor Who 片頭風格 ASCII 動畫,模擬 HowlRound:掃描屏幕 buffer 一部分,放大之後寫返入 buffer,形成連續 video feedback。作者建議 terminal 至少 120 x 30、黑底白字、支援 ANSI escape codes;作品頁亦提醒閃爍畫面未必適合光敏感癲癇人士。
點解 2026 年仲要睇呢啲怪 code
IOCCC 官方話 IOCCC29 投稿量同質素接近歷史高位,而且係 2020 至 2024 空窗後第二屆。呢點幾有意思:即使而家講 AI pair programming、Copilot、agents,仍然有人肯花時間研究 compiler 邊界、undefined behavior、macro、pointer、preprocessor、terminal I/O。呢啲唔係日常 production code 風格,但會幫你理解日常工具點樣失手。
IOCCC FAQ 亦明講參賽者可以用 AI、LLM、coding assistants 同 code generators,只要提交者仍然係最終作者,仲要喺 remarks 交代點用工具。呢個規則放喺今日幾現實:工具可以幫手,但最後提交嘅人仍然要講得清楚點解咁寫、會帶嚟咩後果。AI 生成 code 最麻煩嘅位好多時係責任斷線:冇人知道點解咁寫。IOCCC 嘅怪 code,至少會迫作者交代點解咁怪。
所以對 developer、CS 學生或者帶工程團隊嘅人,IOCCC 唔係叫你返工寫鬼畫符。佢適合拎嚟做 code reading 訓練:試下用 preprocessor 展開、format、rename 變數、睇 Makefile,再對返作者 remarks。下一步可以直接睇 2025/cable、2025/uellenberg、2025/jingp49 嘅 prog.c 同 README;唔使急住跑,先睇自己估唔估到程式點做,已經夠上一堂好硬淨嘅 C 語言課。
參考來源
- iThome — 具41年歷史的荒謬C語言競賽,首度有臺灣人上榜 — original report
- IOCCC 2025 官方得獎頁 — 核對 IOCCC29 得獎名單、22 件作品、投稿質素、Taiwan 新得獎地區同 IOCCC30 時間。
- IOCCC 2025 GitHub 清單 — 官方 winner repo 嘅 2025 作品清單,用嚟覆核得獎數量。
- IOCCC FAQ:歷史同 AI 工具規則 — 核對 1984 起源、比賽目的、同參賽者使用 AI / LLM 工具嘅官方講法。
- IOCCC 2025/cable:Subleq computer — 核對 366 bytes emulator、Subleq / OISC、Linux / DOOM / Mandelbrot / Pong 等作品細節。
- IOCCC 2025/uellenberg:Quine pong — 核對 Quine Pong 玩法、Insert quine compiler、可讀源碼同 compiler 優化細節。
- IOCCC 2025/jingp49:Dr. WHO sequence — 核對 Doctor Who ASCII 動畫、HowlRound 效果、terminal 要求同警告。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







