International Obfuscated C Code Contest
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

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, 1999, 2002 et 2003). Il y a plusieurs entrées gagnantes chaque année (Une année est une unité de temps exprimant la durée entre deux occurrences d'un évènement lié à la révolution de la Terre autour du Soleil.), et chaque année rentre dans une catégorie du genre : " Plus grand abus du préprocesseur (En informatique, un préprocesseur est un programme qui procède à des transformations sur un code source, avant l'étape de compilation ou d'interprétation proprement dite. Les préprocesseurs sont des...) C " ou " Comportement le plus incohérent ".

Les IOCCC ont été lancés par Landon Curt Noll et Larry Bassel. Ils étaient en train (Un train est un véhicule guidé circulant sur des rails. Un train est composé de plusieurs voitures (pour transporter des personnes) et/ou de plusieurs wagons (pour transporter des...) de parler du code abominable dont ils devaient faire la maintenance dans leur travail quotidien. Ils décidèrent alors d'organiser un concours du pire code C possible. Dans l'espace autorisé de seulement quelques Ko, les participants réussissent à faire des choses compliquées : le vainqueur de 2004 s'est révélé être un système d'exploitation.

Quelques citations des vainqueurs de 2004 incluent :

  • Pour simplifier les choses, j'ai évité le préprocesseur C et les instructions compliquées comme " if ", " for ", " do ", " while ", " switch ", et " goto ".
  • Nous ne sommes toujours pas sûrs d'avoir un programme utile, mais c'est la première fission atomique vue (La vue est le sens qui permet d'observer et d'analyser l'environnement par la réception et l'interprétation des rayonnements lumineux.) sur les IOCCC.
  • Le programme implémente une ALU de 11 bits dans le préprocesseur.
  • Je me suis aperçu que calculer les nombres premiers jusqu'à 1024 fait s'inclure le programme lui-même plus de 6,8 millions de fois.

Un exemple d'entrée est (lien) :

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

Ce programme calcule pi en regardant sa propre surface ; une valeur plus précise peut être obtenue en utilisant un programme plus grand.

Quelques aspects remarquables des entrées incluent :

  • La forme du listing, qui peut resssembler à des images, du texte, etc.
  • Des redéfinitions du préprocesseur pour rendre le code plus dur à lire.
  • Du code auto-modifiant.
  • Le pire abus des règles : à plusieurs reprises, une entrée a été soumise qui était si évidemment absurde qu'elle a entrainé une redéfinition des règles pour les années à venir. Ceci est, évidemment, un très grand honneur. Un exemple est le plus petit programme qui s'affiche lui-même. L'entrée était un programme de taille zéro (Le chiffre zéro (de l’italien zero, dérivé de l’arabe sifr, d’abord transcrit zefiro en italien) est un symbole marquant une position vide dans...), qui, quand il était lancé, affichait zéro octets à l'écran (Un moniteur est un périphérique de sortie usuel d'un ordinateur. C'est l'écran où s'affichent les informations saisies ou demandées par l'utilisateur et générées ou restituées par l'ordinateur, sous...) (ça demande un usage (L’usage est l'action de se servir de quelque chose.) créatif du makefile pour tomber juste).

Plusieurs des entrées précédentes sont notables pour causer quelques crashs affreux de compilateurs (plus particulièrement Visual Studio).

Page générée en 0.059 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique