На 29-м Международном конкурсе обфусцированного кода на языке C (IOCCC) одной из самых необычных работ стала версия классической Pong, созданная Джоной Уэлленбергом. Проект получил награду Ping Pong благодаря нестандартному подходу: после каждого кадра программа выводит новый исходный код на языке C, содержащий уже обновленное состояние игры. После компиляции этого кода игра продолжает выполнение с того же места.

Самое любопытное, что автор не писал запутанный код вручную. Вместо этого он разработал проект на собственном языке программирования Insert с понятным и подробно прокомментированным исходным кодом. Уже компилятор автоматически преобразовал его в компактный и крайне трудночитаемый C-код, который и был отправлен на конкурс.

В основе проекта лежит идея так называемого «квайна» — программы, способной выводить собственный исходный код. Однако разработка Уэлленберга пошла дальше: она генерирует не точную копию себя, а новую версию программы с обновленным состоянием игры. Таким образом каждый запуск фактически становится следующим кадром игрового процесса.

Игрок управляет правой ракеткой с помощью аргументов командной строки, а встроенный сценарий автоматически компилирует и запускает каждую новую версию программы, создавая непрерывный игровой процесс. После победы над компьютерным соперником Pong неожиданно превращается в мини-игру, вдохновленную знаменитым раннером Chrome с динозавром, а затем цикл начинается заново.

Конкурс IOCCC вернулся после четырехлетнего перерыва, а победителей объявили в начале июня. В этом году жюри особенно отметило оригинальность работы Уэлленберга, а в шутку попросило участников не пытаться создать «Quine Doom» на следующем конкурсе.

Проект продолжает тенденцию необычных экспериментов в программировании. За последнее время энтузиасты уже демонстрировали эмулятор процессора x86, полностью реализованный средствами CSS, а также играбельную версию Doom, написанную исключительно на SQL. Теперь к этому списку добавилась и самогенерирующаяся версия Pong.