L'obfuscation, ou assombrissement en français, consiste à façonner un bout de code ou un programme afin de le rendre totalement incompréhensible à un lecteur humain, même aidé d'outils informatiques. Il s'agit plus ou moins d'établir un dialogue secret entre le programmeur et sa machine, qui sera la seule à comprendre ce qu'il demande, et à l'exécuter.
Bien sûr, la performance n'est pas du tout le critère principal. En revanche l'aspect artistique ou humoristique d'un programme peut être particulièrement apprécié.
En Perl, un précuseur est Randal L. Schwartz avec ses scripts JAPH.
Avant lui, un certain Larry Wall a fait quelques bons résultats à l'International Obfuscated C Code Contest :
Puis il s'est occupé à produire un language dont le code source semblerait assombri, quel que soit le programme écrit...
Les programmeurs C ont l'Obfuscated C Contest (ou IOCCC), nous nous avons l'Obfuscated Perl Contest, organisé par The Perl Journal.
D'ailleurs, voici nos résultats aux dernières éditions du concours...
Concours | Participants (et gagnants) Paris.pm | ||
---|---|---|---|
OPC 5 | Gagnants | Propositions : 72 dont Paris.pm : 10 | Philippe Bruhat : 3ème ex-æquo 4 fois avec lui-même dans la catégorie 3 Inner Beauty Philippe Bruhat : The Best Ever (mais hors concours) dans la catégorie 4 The Old Standby Stéphane Payrard : catégorie 1 Create A Diversion Jean Forget : catégorie 3 Inner Beauty Jean Forget : catégorie 3 Inner Beauty Philippe Bruhat : catégorie 3 Inner Beauty (hors concours) Philippe Bruhat : catégorie 4 The Old Standby |
OPC 4 | Gagnants | Propositions : 56 dont Paris.pm : 2 | Philippe Bruhat : 2ème dans la catégorie Make believe you're another language Philippe Bruhat : catégorie Print a human-readable "The Perl Journal" |
OPC 3 | Gagnants | Propositions : 73 dont (futur) Paris.pm : 1 | Stéphane Payrard : 1er dans la catégorie Most creative |
OPC 1 | Gagnants | Propositions : 53 | Aucun |
OPC 0 | Gagnants | Propositions : 13 | Aucun |
Jérome Quelin de Lyon.pm a écrit un interpréteur Befunge inclus dans la distribution du VM Parrot et pratique la version perlienne du golf.
Nous jouons également beaucoup avec l'expression $A++, que nous essayons d'assombrir de la pire manière possible...
D'autres expressions devraient bientôt subir le même sort...
Sur un mode plus... didactique, BooK a fait un lightning talk sur le sujet à YAPC::Europe 2000