Кіріспе

Компьютерлік бағдарламалау байқауы

International Obfuscated C Code Contest (қысқаша IOCCC) – ең шығармашылықпен жасырын C коды үшін өткізілетін компьютерлік бағдарламалау байқауы. Жарты жылда бір рет ұйымдастырылатын бұл байқау "C тілінің синтаксистік түсініксіздігін мерекелеу" деп сипатталады. 2020 жылы өткен 27-ші байқаудың жеңімпаз коды 2020 жылдың шілдесінде жарияланды. Алдыңғы байқаулар 1984–1996, 1998, 2000, 2001, 2004–2006, 2011–2015 және 2018–2020 жылдары өткізілген. Байқауға түскен жұмыстар судьялар алқасы тарапынан анонимді түрде бағаланады. Бағалау процесі байқау ережелерінде сипатталған және іріктеу кезеңдерінен тұрады. Дәстүр бойынша, әрбір байқауға түскен жұмыстардың жалпы саны туралы ақпарат жарияланбайды. Жеңімпаздар "C препроцессорын ең нашар пайдалану" немесе "Ең болмауы мүмкін мінез-құлық" сияқты номинациялар бойынша марапатталады, содан кейін IOCCC ресми веб-сайтында жарияланады. Байқау өкілдері IOCCC сайтында жарияланудың өзі жеңіске жеткені үшін берілетін сыйлық екенін мәлімдейді.

Тарих

IOCCC 1984 жылы Лэндон Курт Нолл мен Ларри Бассел National Semiconductor компаниясының Genix порттау тобында жұмыс істеген кезде құрылды. Бұл байқау идеясы олар жөндеуге тура келген нашар жазылған кодтарды талқылағаннан кейін туды, атап айтқанда, ALGOL 68 синтаксисін имитациялау үшін макростарды қолданған Bourne қабығы және BSD жүйесі үшін қателі нұсқасы бар finger бағдарламасы. Байқау 1993 жылғы Компьютерлік кубоктағы сұрақтардың бірі болды. 2006 жылдан бастап бес жылдық үзілістен кейін, байқау 2011 жылы қайта жанданды. Басқа бағдарламалау байқауларымен салыстырғанда, Dr. Dobb's Journal журналының редакторы Майкл Суэйн IOCCC-ті "ешқандай қатаңдық жоқ" деп сипаттады.

Ережелер

Әр жыл сайын байқау ережелері IOCCC веб-сайтында жарияланады. Барлық материалдар Creative Commons лицензиясы бойынша BY SA 3.0 Unported жарияланады. Ережелер жыл сайын өзгеріп отырады және ережелердің мәнін түсіндіруге бағытталған нұсқаулар жиынтығымен бірге ұсынылады. Байқау ережелерін «бұзу» – дәстүр. Лэндон Курт Нолл, 2011 жылғы жазбасында (C препроцессорында 11 биттік АЛУ құрылғысын жасау арқылы), немесе C бағдарламалау тіліндегі кең таралған құрылымдардан қашып, соған ұқсас нәтижеге қол жеткізудің сирек кездесетін тәсілдерін пайдалану – осы байқаудың ерекшелігі. Конкурсанттар ASCII арты бойынша суреттерге, мәтінге ұқсас пішінде келтірілген бастапқы кодты, кодты түсінуді қиындату үшін препроцессорлық қайта анықтамаларды және өзін-өзі өзгертетін кодты ұсынды. Көп жылдар бойы келесі жылғы ережелерді жаңадан анықтауды қажет ететін жазбалар түсті. Мұндай жағдай үлкен құрметке ие. Мысалы, әлемдегі ең қысқа өзін-өзі көбейтуге қабілетті бағдарлама. Бұл бағдарлама өзінің бастапқы кодын шығаруға арналған, ал бастапқы кодының көлемі нөл байтқа тең болды. Бағдарлама іске қосылғанда, ол бастапқы кодымен бірдей нөл байтты басып шығарды. Өздігінен жасалған кодты шексіз деңгейге жеткізу үшін, конкурсанттар C стандарттарының шегінен шығып, компиляторларда сирек кездесетін код комбинацияларын іске қосатын құрылымдарды жасады. Осының салдарынан, бұрынғы жазбалардың кейбіреулері заманауи компиляторларда тікелей компиляцияланбауы мүмкін, ал кейбіреулері жұмысын тоқтатуы мүмкін.

Мысалдар

Кодтың көлемі небәрі бірнеше килобайтпен шектелгенінде, қатысушылар күрделі жұмыстар атқарды – 2004 жылғы жеңімпаз операциялық жүйенің өзін жасап шығарды.