www.wikidata.de-de.nina.az
Der International Obfuscated C Code Contest kurz IOCCC ist ein Programmierwettbewerb fur die am kreativsten verschleierten C Programme engl to obfuscate von lat obfuscare dt verdunkeln Er wurde von 1984 bis 1996 jahrlich veranstaltet und danach in unregelmassigen Abstanden Logo vom IOCCCDie Programmiersprache C ist eigentlich stark strukturiert und weitgehend typisiert gibt dem Programmierer aber sehr grosse Freiheiten in Bezug auf die Art wie der Quelltext aufgebaut sein soll Zusatzlich erlaubt der sogenannte Praprozessor das Ersetzen von Textbausteinen mittels sogenannter Makros durch andere Textteile vor dem eigentlichen Ubersetzungsschritt Diese Freiheiten erlauben es den semantisch gleichen Quellcode durch eine Vielzahl verschiedener tatsachlicher Quelltexte darzustellen darunter auch solche die vollig unverstandlich oder verwirrend sind So kann man ohne weiteres dem Schlusselwort true fur wahr den Wert falsch zuweisen und umgekehrt Wird Informatikprojekten keine saubere Struktur zugrunde gelegt oder sind die Programmierer unerfahren konnen unverstandliche und insbesondere unwartbare Programme auch unbeabsichtigt entstehen Die Aufgabe im nicht ganz ernst gemeinten Wettbewerb besteht darin absichtlich solchen Code zu schreiben Den Beitragen werden jedes Jahr in zahlreichen Kategorien wie z B Worst Abuse of the C preprocessor dt ubelster Missbrauch des C Praprozessors oder Most Erratic Behavior dt unberechenbarstes Verhalten Preise verliehen Der IOCCC wurde von Landon Curt Noll und Larry Bassel initiiert als diese uber den furchtbaren Programmcode sprachen den sie beruflich zu warten hatten Sie entschieden sich einen Wettbewerb fur den schlimmstmoglichen C Programmcode abzuhalten Innerhalb der Begrenzung der Quellcodegrosse auf wenige Kilobyte schaffen es die Wettbewerbsteilnehmer 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 Praprozessor 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 nutzliches 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 eine 11 Bit ALU im Praprozessor 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 uber 6 8 Mio Mal in sich selbst einsetzt Ein typischer Wettbewerbsbeitrag von Brian Westley 1988 1 leicht angepasst zwecks Kompatibilitat mit heutigen C Compilern define F gt 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 Flache nutzt einen praziseren Wert erhalt man indem man eine Programmversion mit mehr Kreisflache verwendet Typisch fur die Einsendungen sind u a Das Layout des Quelltextes der z B wie ein ASCII Bild siehe das Kreisbeispiel oben formatiert wurde Praprozessor Umdefinitionen damit der Quellcode noch schwieriger zu entziffern ist selbstmodifizierender Programmcode Die Wettbewerbskategorie Worst abuse of the rules dt ubelster Missbrauch der Wettbewerbsregeln In vielen Jahren wurde jeweils wenigstens ein Beitrag eingereicht welcher so offensichtlich abwegig war dass eine Neufassung der Regeln fur den nachsten Wettbewerb erforderlich war Dieser Preis ist verstandlicherweise sehr begehrt Als Beispiel sei das wohl kleinste Quine der Welt genannt Der Beitrag war ein Programm der Lange Null welches bei Ausfuhrung 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 uber selten verwendete Ausfuhrungspfade der Compiler ubersetzt werden konnten Daher sind viele altere Wettbewerbsbeitrage nicht mit einem modernen Compiler ubersetzbar und einige verursachen sogar Compilerabsturze Andere Programmiersprachen BearbeitenDer IOCCC soll lustig erzieherisch und bildend sein daher wurden gleichartige Wettbewerbe fur Programmierer anderer Programmiersprachen ins Leben gerufen Programmiersprache WettbewerbErlang Obfuscated Erlang OTP CompetitionPerl Obfuscated Perl ContestRuby Obfuscated Ruby ContestWeblinks Bearbeitenwww ioccc org Webprasenz des IOCCC https www pcworld com article 478306 obfuscated code contest returns htmlEinzelnachweise Bearbeiten www0 us ioccc org Memento des Originals vom 22 Oktober 2013 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www0 us ioccc org Abgerufen von https de wikipedia org w index php title International Obfuscated C Code Contest amp oldid 234614860