C'est un des piliers historiques du monde UNIX, un des outils de base que l'administrateur et le développeur « doivent connaître », mais aussi un de ces programmes qui donnent à UNIX/Linux sa mauvaise réputation, son aura d'impénétrabilité, qui font penser que le système ne sera jamais vraiment, totalement accessible au commun des mortels.Pire que vi, plus sournois que brainfuck, voilà le retour de sed.
Pourtant j'avais été échaudé lorsque j'ai conçu le compacteur de code JavaScript [1]. J'avais dû abandonner rapidement car les limitations sont très vite apparues et le code source devenait ignoble, donc ingérable sur le long terme. Mais j'ai bien vite tourné la page et j'ai cru qu'un algorithme simple échapperait à la règle. Au final, j'ai perdu beaucoup de temps et ma foi en l'humanité.
1. Un problème trivial
À la base, c'était quand même très simple. J'avais déjà codé l'algorithme en C et en Javascript, c'était très facile, digne d'un exercice de programmation de débutant, réfléchi, écrit et testé en trois minutes.
L'objectif consiste à encoder un flux binaire en hexadécimal. Chaque octet est converti en deux caractères, et lorsqu'un octet se répète, les répétitions suivantes sont représentées par un seul point. Par exemple la chaine hexadécimale 00 11 22 22 22 33 33 44 55 55 55 55 66 est écrite ainsi : 00 11 22 . . 33 . 44 55 . ....
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première