28-й Международный конкурс запутанного кода на языке C (International Obfuscated C Code Contest, IOCCC) в 2024 году стал настоящим событием в мире программирования и креативного кодинга. После четырехлетнего перерыва конкурс возобновился, удивив как своим качеством, так и количеством поданных заявок. IOCCC традиционно призван выявлять не просто программные решения, а произведения программного искусства, где сложность и запутанность кода переплетаются с глубоким пониманием языка C. Этот конкурс объединяет сообщества программистов, которые стремятся не только написать работающий код, но и продемонстрировать высочайший уровень мастерства в области обфускации и нестандартных подходов к программированию. Одной из ключевых особенностей 28-го конкурса стало совпадение с 40-летним юбилеем IOCCC, что придало этому событию особую торжественность и было отмечено масштабной модернизацией инфраструктуры и процесса организации конкурса.
В течение четырех лет до открытия IOCCC28 была проведена масштабная работа над обновлением официального сайта, известная как Великий объединительный форк (Great Fork Merge), включающая более 6168 коммитов. Кроме того, была разработана новая система подачи и оценки заявок, включая специализированный набор инструментов mkiocccentry и обновленный процесс регистрации участников, а также новый сервер для приема работ. Эта модернизация позволила существенно сократить сроки оценки работ и сделать их доступными сообществу практически сразу после объявления победителей. Впервые источник победных программ стал доступен менее чем через два часа после объявления итогов. Это кардинально изменило динамику конкурса, улучшило коммуникацию между судьями и участниками, а также повысило прозрачность и открытость мероприятия.
Общее количество победителей в 2024 году составило рекордные 23 человека, что значительно превысило предыдущий максимум в 15. Эксперты связывают это как с дополнительным временем, предоставленным четырьмя годами перерыва, за которые авторы смогли усовершенствовать свои навыки и подготовить более достойные работы, так и с возросшим мастерством и новаторством участников. Приятным сюрпризом стало то, что несмотря на увеличение лимита по размеру кода на 21%, половина победителей смогла уложиться в менее чем две трети от максимального размера, а десять из них — в менее половины. Это свидетельствует о том, что талант и изобретательность не всегда связаны с объемом, а компактность при сохранении высокого качества остается важным показателем мастерства. В рамках 28-го IOCCC были представлены самые разнообразные и необычные проекты, традиционно вызывающие восхищение и интерес среди представителей сообщества.
Одним из ярких примеров стал проект, претендующий на звание "самой маленькой языковой модели большого масштаба" (LLM), реализующей вывод на основе открытой нейросети Meta LLaMA 2 с 7 миллиардами параметров, — работа под названием cable1. Хотя скорость работы не была высокой, сама концепция вызвала много обсуждений и интриги. Другой запоминающийся проект endoh1 поразил своим необычным использованием препроцессора C для генерации изображений различного разрешения, начиная с 8x8, с временными затратами, достигающими почти суток для максимально детализированной версии. Эта работа демонстрирует степень технической глубины и необычных подходов, характерных для IOCCC. Среди остальных проектов заслуживают внимания инновационные виртуальные машины, реализованные в конкурсных программах, включая эмуляторы процессоров, таких как Intel 4004, чрезвычайно компактные и изобретательные коды-игры и интерактивные редакторы с поддержкой UTF-8.
Все они под чередой обфускации объединяют функциональность и изысканность, и каждое творение обязывает участников и зрителей стремиться к глубокому пониманию оригинального кода. Среди особенностей современного этапа конкурсов IOCCC стало усиленное внимание к оригинальности и совместимости с современными компиляторами. Судьи обращают внимание, что не рекомендуется использовать устаревший стиль Кернигана и Ричи, а также полагаться на поведение компиляторов по умолчанию без явных объявлений типов переменных и функций. Высоко ценятся программы, корректно работающие как на gcc, так и на clang, с тщательно продуманной обфускацией математических алгоритмов и оригинальными методами генерации случайности. Также в целях повышения качества конкурса порой отбраковываются работы, слишком сильно напоминающие прошлые победные решения, даже если они были технически сложными.
Для новичков и авторов, чьи работы не оказались победителями, IOCCC ежегодно предлагает советы и поддержку. Судьи призывают не сдаваться, улучшать свои решения и экспериментировать с форматами, а также рекомендуют публиковать непобедившие работы, чтобы делиться опытом с сообществом и накапливать знания. Благодаря активному развитию инструментов и инфраструктуры IOCCC, таких как обновленная документация, учебные материалы и открытые исходные коды, конкурс остается пространством для развития самых креативных, нетрадиционных и амбициозных идей в программировании на языке C. Сообщество IOCCC — это не просто любители запутанного кода, а настоящие художники программирования, способные создавать невероятные произведения с помощью минималистичных и сложных средств. Итогом 28-го Международного конкурса запутанного кода стало не только его техническое возрождение и улучшение организационных процессов, но и новый уровень творческих побед, который поднимает планку для будущих состязаний.