IOCCC Winner — музей самого безумного кода на C Что это такое? IOCCC (International Obfuscated C Code Contest) — международный конкурс запутанного кода на языке C. Участники соревнуются не в том, кто напишет самый полезный код, а в том, кто сможет написать программу максимально необычным, хитрым и неожиданным способом, сохранив её полную работоспособность. Репозиторий GitHub содержит архив победителей конкурса за десятки лет. Адрес: Для кого этот проект? Для программистов на C Для студентов технических специальностей Для любителей алгоритмов и головоломок Для тех, кому интересно устройство компиляторов Для всех, кто хочет увидеть необычные возможности языка C Что там можно найти? Игры Терминальную графику и анимацию Математические программы Интерпретаторы и мини-компиляторы Необычные алгоритмы и программные трюки Главная особенность репозитория — не функциональность программ, а способы их реализации. Почему этот конкурс стал знаменитым? Потому что многие программы выглядят так, словно они вообще не должны компилироваться. Например: На первый взгляд выглядит как ошибка. На самом деле компилятор понимает это как: ---------------------------------------- Или такой цикл: Хотя большинство программистов написали бы его так: ---------------------------------------- А вот конструкция, которая многих удивляет: Она полностью корректна для языка C и эквивалентна: То есть язык позволяет обращаться к строке даже таким способом. ---------------------------------------- Некоторые победители идут ещё дальше: На первый взгляд кажется, что код повреждён. На самом деле это полноценная программа, которая успешно компилируется и выполняется. Именно такие головоломки и сделали IOCCC легендарным. Как работать с репозиторием? Скачать репозиторий Выбрать интересующий год Открыть описание программы Скомпилировать исходный код Попытаться понять, что вообще происходит Пример: В каталогах обычно находятся: Файл index.html обычно содержит описание программы и комментарии авторов. Чему можно научиться? Работе указателей Макросам и препроцессору Особенностям стандарта C Тонкостям компиляции Методам анализа чужого кода Кроме того, после просмотра нескольких работ начинаешь гораздо больше ценить хороший стиль программирования. Вывод из вышеперечисленного: IOCCC Winner — это не библиотека и не приложение. Это своеобразный музей программирования, где собраны самые необычные, изобретательные и порой совершенно безумные программы на языке C. Работы победителей показывают разницу между кодом, который понимает компилятор, и кодом, который способен понять человек.