HN精选|IOCCC 2025获奖作

366字节C虚拟机,GameBoy仿真器惊艳编程大赛

背景介绍

第29届国际C语言混乱代码大赛(IOCCC)于2026年6月公布2025年度获奖名单。这场始于1984年的传奇编程竞赛以”在最小空间内写出最令人费解的C代码”为宗旨,每年评选出让编译器困惑、让人类惊叹的代码艺术品。IOCCC29是2020-2024四年停办后连续举办的第二届,评委组在总结中特别指出:本届提交作品的数量和质量均接近历史最高水平,延续了IOCCC28的强劲势头。HN讨论获得358分,技术社区对这批”代码艺术品”表现出极大的热情。

核心亮点

本届获奖作品中,三件作品引发了最广泛的社区讨论。第一件是Nick Craig-Wood(著名工具rclone的创建者)提交的GameBoy模拟器,其源代码的排版本身就是一个GameBoy掌机的ASCII艺术图案——代码即艺术品,形式与功能的完美统一。第二件是一个仅366字节的C程序,实现了单指令集计算机(OISC)虚拟机,能在其上运行Linux和经典游戏Doom——用”一个指令”定义的计算机在366字节中承载完整操作系统,堪称极简主义的巅峰。第三件是包含《葬送的芙莉莲》(Frieren)动漫梗的作品,其中角色”芙兰”主要使用名为Zoltraak的通用攻击魔法——这一彩蛋让动漫爱好者和程序员群体产生了奇妙交集。

技术分析

这些作品的技术深度远超表面的”混乱”。366字节Linux虚拟机是OISC(One Instruction Set Computer)架构的极致实践。OISC理论认为计算机只需要一种指令(subtract-and-branch-if-negative等)即可实现图灵完备,而作者在366字节的C代码中实现了从OISC虚拟机到完整Linux引导的全栈——包含内存管理、中断处理和设备模拟。GameBoy仿真器则利用了C预处理器宏的嵌套展开,将模拟器的逻辑编码为视觉上形成GameBoy轮廓的文本布局,同时保持代码可被C编译器正确解析。这种”双重编码”(对编译器和人类读者呈现不同意义)是IOCCC传统的精髓,展现了编程与视觉艺术在最高水平的交汇。

一个值得注意的新变化是:IOCCC本届明确允许使用LLM辅助编写代码。规则指出”IOCCC有着参赛者熟练使用各种技术(包括自制工具)开发代码的悠久历史”,将LLM视为新一代创作工具。社区对这一开放态度反应不一:有人认为LLM降低了参赛的技术门槛,有人则指出真正困难的是构思而非编码——LLM能生成混淆代码,但无法产生”让代码看起来像GameBoy”的创意火花。

社区反响

HN评论区的热情近乎庆祝。haunter表示GameBoy仿真器的”代码长成GameBoy的样子”让他惊叹得”慢拍手”,更指出作者Nick Craig-Wood正是rclone的创建者——一位在正经开源领域同样成就卓越的工程师。s-macke则力推366字节OISC虚拟机,称其为个人的”最爱作品”。yayitswei注意到IOCCC允许LLM使用的政策变化,认为这顺应了技术演进。aquir则抱怨甚至大赛官网本身都做了混淆处理,找源代码并不容易。ollybee表达了怀旧之情,希望”Underhanded C Contest”(另一个强调隐蔽漏洞的编程比赛)能回归。roer发现了《葬送的芙莉莲》彩蛋,引发了宅文化与编程文化的跨界笑声。最动人的评论来自locao,分享了他2000年实习面试的经历:面试官给他看了往届IOCCC获奖代码并请他审阅,5分钟后他诚实承认”我看不懂”,结果面试官大笑并邀请他入职——这种用混乱代码测试实习生诚实度的传统,让评论区充满了温暖怀旧的氛围。

深度视角

IOCCC在2026年的持续繁荣有其深层意义。在AI生成代码日益普及的时代,IOCCC这种强调”人类创意极限”的比赛反而更具价值。AI可以生成语法正确的混淆代码,但”让代码看起来像GameBoy”这种跨越视觉艺术、硬件知识和编程技巧的综合创造力,依然是人类思维独有的领域。IOCCC 29也提示了一个有趣的反问:如果未来某届IOCCC的获奖作品完全由AI生成(在规则允许范围内),评委会如何评判?人类在混淆代码领域是否还保有一块AI无法侵占的”保留地”?至少从本届作品来看,创意和幽默感——这种无法量化的”人情味”——依然是IOCCC的灵魂。正如locao的实习面试故事所揭示的:诚实面对看不懂的代码,比假装理解更值得尊重——这一价值观在AI能”理解”一切的年代显得尤为珍贵。

原文链接

原文: The 29th International Obfuscated C Code Contest (IOCCC) 2025 Winners

HN讨论 (358 points, 130 comments)

Leave a Reply

Your email address will not be published. Required fields are marked *