Халықаралық IOCCC – ең жасырылған C тіліндегі бағдарламалау байқауы. Креативті код жазу, C тілінің ерекшеліктерін көрсету мақсатында ұйымдастырылады. 🏆💻
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік бағдарламалау байқауы
Computer programming contest
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 сайтында жарияланудың өзі жеңіске жеткені үшін берілетін сыйлық екенін мәлімдейді.
The International Obfuscated C Code Contest (abbreviated IOCCC) is a computer programming contest for the most creatively obfuscated C code. Held semi annually, it is described as "celebrating [C's] syntactical opaqueness". The winning code for the 27th contest, held in 2020, was released in July 2020. Previous contests were held in the years 1984–1996, 1998, 2000, 2001, 2004–2006, 2011–2015 and 2018–2020. Entries are evaluated anonymously by a panel of judges. The judging process is documented in the competition guidelines and consists of elimination rounds. By tradition, no information is given about the total number of entries for each competition. Winning entries are awarded with a category, such as "Worst Abuse of the C preprocessor" or "Most Erratic Behavior", and then announced on the official IOCCC website. The contest states that being announced on the IOCCC website is the reward for winning.
Тарих
IOCCC 1984 жылы Лэндон Курт Нолл мен Ларри Бассел National Semiconductor компаниясының Genix порттау тобында жұмыс істеген кезде құрылды. Бұл байқау идеясы олар жөндеуге тура келген нашар жазылған кодтарды талқылағаннан кейін туды, атап айтқанда, ALGOL 68 синтаксисін имитациялау үшін макростарды қолданған Bourne қабығы және BSD жүйесі үшін қателі нұсқасы бар finger бағдарламасы. Байқау 1993 жылғы Компьютерлік кубоктағы сұрақтардың бірі болды. 2006 жылдан бастап бес жылдық үзілістен кейін, байқау 2011 жылы қайта жанданды. Басқа бағдарламалау байқауларымен салыстырғанда, Dr. Dobb's Journal журналының редакторы Майкл Суэйн IOCCC-ті "ешқандай қатаңдық жоқ" деп сипаттады.
The IOCCC was started by Landon Curt Noll and Larry Bassel in 1984 while employed at National Semiconductor's Genix porting group. The idea for the contest came after they compared notes with each other about some poorly written code that they had to fix, notably the Bourne shell, which used macros to emulate ALGOL 68 syntax, and a buggy version of finger for BSD. The contest itself was the topic of a quiz question in the 1993 Computer Bowl. After a hiatus of five years starting in 2006, the contest returned in 2011. Compared with other programming contests, the IOCCC is described as "not all that serious" by Michael Swaine, editor of Dr. Dobb's Journal.
Ережелер
Әр жыл сайын байқау ережелері IOCCC веб-сайтында жарияланады. Барлық материалдар Creative Commons лицензиясы бойынша BY SA 3.0 Unported жарияланады. Ережелер жыл сайын өзгеріп отырады және ережелердің мәнін түсіндіруге бағытталған нұсқаулар жиынтығымен бірге ұсынылады. Байқау ережелерін «бұзу» – дәстүр. Лэндон Курт Нолл, 2011 жылғы жазбасында (C препроцессорында 11 биттік АЛУ құрылғысын жасау арқылы), немесе C бағдарламалау тіліндегі кең таралған құрылымдардан қашып, соған ұқсас нәтижеге қол жеткізудің сирек кездесетін тәсілдерін пайдалану – осы байқаудың ерекшелігі. Конкурсанттар ASCII арты бойынша суреттерге, мәтінге ұқсас пішінде келтірілген бастапқы кодты, кодты түсінуді қиындату үшін препроцессорлық қайта анықтамаларды және өзін-өзі өзгертетін кодты ұсынды. Көп жылдар бойы келесі жылғы ережелерді жаңадан анықтауды қажет ететін жазбалар түсті. Мұндай жағдай үлкен құрметке ие. Мысалы, әлемдегі ең қысқа өзін-өзі көбейтуге қабілетті бағдарлама. Бұл бағдарлама өзінің бастапқы кодын шығаруға арналған, ал бастапқы кодының көлемі нөл байтқа тең болды. Бағдарлама іске қосылғанда, ол бастапқы кодымен бірдей нөл байтты басып шығарды. Өздігінен жасалған кодты шексіз деңгейге жеткізу үшін, конкурсанттар C стандарттарының шегінен шығып, компиляторларда сирек кездесетін код комбинацияларын іске қосатын құрылымдарды жасады. Осының салдарынан, бұрынғы жазбалардың кейбіреулері заманауи компиляторларда тікелей компиляцияланбауы мүмкін, ал кейбіреулері жұмысын тоқтатуы мүмкін.
Each year, the rules of the contest are published on the IOCCC website. All material is published under Creative Commons license BY SA 3.0 Unported. Rules vary from year to year and are posted with a set of guidelines that attempt to convey the spirit of the rules. Blockquote|text=Hacking the contest rules is a tradition. — Landon Curt Noll, 2011 with one entry creating an 11 bit ALU in the C preprocessor), or avoiding commonly used constructs in the C programming language in favor of much more obscure ways of achieving the same thing. Contributions have included source code formatted to resemble images, text, etc., after the manner of ASCII art, preprocessor redefinitions to make code harder to read, and self modifying code. During several of the years, an entry was submitted that required a new definition of some of the rules for the next year. This is regarded as a high honor. An example is the world's shortest self reproducing program. The entry was a program designed to output its own source code, and which had zero bytes of source code. When the program ran, it printed out zero bytes, equivalent to its source code. In the effort to take obfuscation to its extremes, contestants have produced programs which skirt around the edges of C standards, or result in constructs which trigger rarely used code path combinations in compilers. As a result, several of the past entries may not compile directly in a modern compiler, and some may cause crashes.
Мысалдар
Кодтың көлемі небәрі бірнеше килобайтпен шектелгенінде, қатысушылар күрделі жұмыстар атқарды – 2004 жылғы жеңімпаз операциялық жүйенің өзін жасап шығарды.
Within the code size limit of only a few kilobytes, contestants have managed to do complicated things – a 2004 winner turned out an operating system.