IOCCC

IOCCC

Der International Obfuscated C Code Contest (kurz IOCCC) ist ein Programmierwettbewerb für die am kreativsten verschleierten C-Programme, der seit 1984 jährlich veranstaltet wird (mit Ausnahme von 1997, 1999, 2002 und 2003). (engl.: to obfuscate: von lat. obfuscare, dt.: verdunkeln).

Den Beiträgen werden jedes Jahr in zahlreichen Kategorien wie z. B. Worst Abuse of the C preprocessor (dt.: übelster Missbrauch des C-Präprozessors) oder Most Erratic Behavior (dt.: unberechenbarstes Verhalten) Preise verliehen.

Der IOCCC wurde von Landon Curt Noll und Larry Bassel initiiert, als diese über den furchtbaren Programmcode sprachen, den sie beruflich zu warten hatten. Sie entschieden sich, einen Wettbewerb für den schlimmstmöglichen C-Programmcode abzuhalten. Innerhalb der Begrenzung der Quellcodegröße auf wenige Kilobytes schaffen es die Wettbewerbteilnehmer dennoch, komplizierte Dinge zu tun.

Einige Zitate der Gewinner von 2004:

  • To keep things simple, I have avoided the C preprocessor and tricky statements such as "if", "for", "do", "while", "switch", and "goto". (dt.: Der Einfachheit halber habe ich den C-Präprozessor sowie verzwickte Anweisungen wie „if“, „for“, „do“, „while“, „switch“ und „goto“ vermieden.)
  • We still aren't sure whether or not this is a useful program, but it's the first atomic fission we've seen in the IOCCC. (dt.: Wir sind immer noch nicht sicher, ob dies ein nützliches Programm ist oder nicht, aber es ist die erste Kernspaltung, die wir im IOCCC gesehen haben.)
  • Why not use the program to hide another program in the program? It must have seemed reasonable at the time. (dt.: Warum das Programm nicht benutzen, um in dem Programm ein anderes Programm zu verstecken? Zu der Zeit muss es sinnvoll erschienen sein.)
  • The program implements an 11-bit ALU in the pre-processor. (dt.: Das Programm implementiert mit dem Präprozessor eine 11-Bit-ALU.)
  • I found that calculating prime numbers up to 1024 makes the program include itself over 6.8 million times. (dt.: Ich habe herausgefunden, dass sich bei der Berechnung von Primzahlen bis 1024 das Programm über 6,8 Mio. mal selbst enthält.)

Ein typischer Wettbewerbsbeitrag (von Brian Westley, 1988[1]):

 #define _ -F<00||--F-OO--;
 int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
 {
             _-_-_-_
        _-_-_-_-_-_-_-_-_
     _-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_-_-_
     _-_-_-_-_-_-_-_-_-_-_-_
         _-_-_-_-_-_-_-_
             _-_-_-_
 }

Dieses Programm berechnet die Kreiszahl Pi, indem es seine eigene Fläche nutzt; einen präziseren Wert erhält man, indem man eine Programmversion mit mehr Kreisfläche verwendet.

Typisch für die Einsendungen sind u. a.:

  • Das Layout des Quelltextes, der z. B. wie ein ASCII-Bild (siehe das Kreisbeispiel oben) formatiert wurde
  • Präprozessor-Umdefinitionen, damit der Quellcode noch schwieriger zu entziffern ist
  • selbstmodifizierender Programmcode
  • Die Wettbewerbskategorie Worst abuse of the rules (dt.: übelster Missbrauch der Wettbewerbsregeln): In vielen Jahren wurde jeweils wenigstens ein Beitrag eingereicht, welcher so offensichtlich abwegig war, dass eine Neufassung der Regeln für den nächsten Wettbewerb erforderlich war. Dieser Preis ist verständlicherweise sehr begehrt. Als Beispiel sei das wohl kleinste Quine der Welt genannt: Der Beitrag war ein Programm der Länge Null, welches bei Ausführung null Bytes ausgab (also den eigenen Programmcode). Die Kompilierung des Programmes erforderte einige kreative Zweckentfremdungen des Makefiles.

Aus der Art des Wettbewerbs ergaben sich Programme, welche sich am Rande der C-Standards bewegten oder welche nur über selten verwendete Ausführungspfade der Compiler übersetzt werden konnten. Daher sind viele ältere Wettbewerbsbeiträge nicht mit einem modernen Compiler übersetzbar und einige verursachen sogar Compilerabstürze.

Andere Programmiersprachen

Der IOCCC soll lustig, erzieherisch und bildend sein, daher wurden gleichartige Wettbewerbe für Programmierer anderer Programmiersprachen ins Leben gerufen:

Programmiersprache Wettbewerb
Erlang Obfuscated Erlang/OTP Competition
Perl Obfuscated Perl Contest
Ruby Obfuscated Ruby Contest

Quellen

  1. http://www0.us.ioccc.org/years.html#1988

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • IOCCC — International Obfuscated C Code Contest Le International Obfuscated C Code Contest (en français, « Concours international de code C obscur ») est un concours de programmation organisé chaque année depuis 1984 (à l exception de 1997,… …   Wikipédia en Français

  • IOCCC — …   Википедия

  • IOCCC — International Obfuscated C Code Contest (s. Obfuscated C Contest) …   Acronyms

  • IOCCC — ● ►en np. sg. m. ►SOC International Obfuscated C Code Contest. Voir Obfuscated C Code Contest …   Dictionnaire d'informatique francophone

  • IOCCC — International Obfuscated C Code Contest (s. Obfuscated C Contest) …   Acronyms von A bis Z

  • IOCCC — abbr. International Obfuscated C Code Contest …   United dictionary of abbreviations and acronyms

  • International Obfuscated C Code Contest — IOCCC (от англ. International Obfuscated C Code Contest  «Международный Конкурс непонятного кода на Си»[1])  конкурс программирования, в котором задачей участников является написание максимально запутанного кода на языке Си.… …   Википедия

  • International Obfuscated C Code Contest — The International Obfuscated C Code Contest (abbreviated IOCCC) was a programming contest for the most creatively obfuscated C code, held annually between 1984 and 1996, and thereafter in 1998, 2000, 2001, 2004, and 2006.[1] The winners of the… …   Wikipedia

  • International Obfuscated C Code Contest — Der International Obfuscated C Code Contest (kurz IOCCC) ist ein Programmierwettbewerb für die am kreativsten verschleierten C Programme, der seit 1984 jährlich veranstaltet wird (mit Ausnahme von 1997, 1999, 2002 und 2003). (engl.: to obfuscate …   Deutsch Wikipedia

  • Bourne shell — The Bourne shell, or sh, was the default Unix shell of Unix Version 7, and replaced the Thompson shell, whose executable file had the same name, sh. It was developed by Stephen Bourne, of AT T Bell Laboratories, and was released in 1977 in the… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”