3.2 Exemples de codages

Afin de montrer concrètement comment ce type d’agrégation s’organise, nous proposons quelques exemples bien connus des utilisateurs de l’informatique —à l’exception peut-être du premier—, qui mettent en évidence le nouveau statut du texte et la façon dont ce dernier est pris dans des logiques monopolistiques.

3.2.1 Instructions pour processeurs

Le premier exemple met en évidence la façon dont des instructions sont transmises au processeur de la machine. Le langage utilisé est l’« assembleur » et on demande à deux processeurs différents de réaliser l’opération « 2 + 5 ».

Le tableau 3.1 de la page 87 donne la liste de ces commandes, destinées à un processeur Intel et à un processeur Sparc (machines Sun), tout en négligeant les lignes du début et de la fin des programmes, similaires, et souvent simples commentaires.

Pour un processeur, on distingue la mémoire (espace de stockage) des registres (capables de réaliser des opérations comme l’addition). La logique du programme d’addition proposé consiste donc à mettre 2 et 5 en mémoire, puis à glisser ces deux nombres en des registres, à mettre la somme dans un troisième registre, puis à renvoyer ce résultat en mémoire.






Intel Sparc Commentaire Intel Commentaire Sparc




.file"intel.c" .file"sparc.c"
... ...
.globl main .type main,#function
.type main,function .proc04
main: main:
pushl %ebp !#PROLOGUE# 0
movl %esp,%ebp save%sp, -128, %sp réserver 128 octets de mémoire
subl $12,%esp !#PROLOGUE# 1 12 octets réservés
movl $2,-4(%ebp) mov2, %o0 mettre 2 en mémoire mettre 2 dans le registre o0
movl $5,-8(%ebp) st%o0, [%fp-20] idem pour 5 mettre le contenu de o0 en mémoire
movl -4(%ebp),%eax mov5, %o0 mettre 2 dans le registre eax mettre 5 dans le registre o0
movl -8(%ebp),%edx st%o0, [%fp-24] 5 dans edx mettre le contenu de o0 en mémoire
leal (%edx,%eax),%ecx ld[%fp-20], %o0 addition ramener 2 dans le registre o0
movl %ecx,-12(%ebp) ld[%fp-24], %o1 7 en mémoire ramener 5 dans o1
pushl $0 add%o0, %o1, %o0 addition
call exit st%o0, [%fp-28] fin renvoyer 7 en mémoire
... mov0, %o0 vider le registre o0
... callexit, 0 fin





TAB. 3.1: Comparaison des assembleurs pour processeurs Intel et Sparc

Sans rentrer dans les détails, on constate que le programme destiné au processeur Sparc est plus lisible que l’autre: quand le premier dispose de registres dénommés %o0, %o1, etc., le second a des registres du type %eax, %edx, %ecx, sans que l’on comprenne leur ordre d’apparition. Ensuite, les opérations pour le Sparc sont explicitées: mov2, %o0 envoie le chiffre 2 dans le premier registre, st%o0, [%fp-20] sauvegarde cette valeur dans la pile de la mémoire. Ainsi ce premier registre est-il libre pour accueillir le nombre 5: mov5, %o0, qui lui-même sera stocké ensuite un peu plus haut en mémoire: st%o0, [%fp-24]. Pour le processeur Intel, les deux opérations sont réduites à une: movl $2,-4(%ebp).

L’addition se produit en glissant les valeurs en mémoire dans des registres: ld[%fp-20] %o0 et ld[%fp-24], %o1, pour le Sparc, qui réalise l’addition dans le même registre qui contient le nombre 2: add%o0, %o1, %o0. En revanche, l’Intel utilise un troisième registre: leal (%edx,%eax),%ecx.

Ensuite, les deux processeurs renvoient le résultat de l’addition en mémoire: st%o0, [%fp-28] pour le Sparc, movl %ecx,-12(%ebp) pour l’Intel 29.

Nous réalisons que, même pour une opération très simple, la série de commandes adaptée à un processeur ne fonctionnera pas pour l’autre.

3.2.2 Format RTF

Ce format 30 a été inventé par Microsoft, et a été maintenu tant que cette firme voulait accroître son monopole sur l’écrit avec la diffusion de ses logiciels de type Word. C’est un format « d’échange », conçu pour qu’un traitement de texte distinct de celui qui a été utilisé pour la rédaction d’un document puisse interpréter ce dernier. Il n’est pas attaché à un système d’exploitation donné. Si l’on ne dispose pas du traducteur qui permet de visualiser à l’écran le texte mis en page, on peut néanmoins, après avoir abandonné les commandes absconses du début du fichier, en retrouver le sens. À partir de l’extrait qui suit, tiré du rapport Silberman 31, on arrive à relire sans trop de difficultés cette phrase:« Accompagnant la croissance rapide de la demande d’expertise aux sciences sociales, la production de données s’est considérablement développée ».

[...] \par \}\pard \sb80\widctlpar\intbl\adjustright
\{\i\fs22 Accompagnant la croissance rapide de la demande
d\rquote expertise aux sciences sociales, la production de
donn\’e9es s\rquote est consid\’e9rablement d\’e9velopp\’e9e.

On reconnaît là un langage par balises 32 et, malgré sa complexité, le lecteur peut accéder au texte, décider de le remanier, de tenter de le réorganiser, de le copier (comme on le fait ici), etc.

3.2.3 Formats Microsoft

En général, les logiciels qui prétendent libérer l’utilisateur des contraintes techniques favorisent des modes de surveillance particulièrement dangereux grâce à l’usage d’un codage binaire, a priori illisible. Toute une série d’informations est inscrite sur les fichiers écrits par l’utilisateur sans qu’il en ait connaissance: nom du propriétaire du logiciel —situation toujours délicate pour celui qui l’a piraté—, divers outils de l’utilisateur (ordinateur, imprimante 33, etc.) et très fréquemment, les divers épisodes de la rédaction du document 34. L’application sociale de ce dernier fait peut-être très cruelle: c’est ainsi que certains chercheurs ont pu découvrir que certains de leurs collègues, qui leur envoyaient des fichiers attachés produits avec ce logiciel, pensaient le plus grand mal d’eux.

Voici par exemple ce que donne à lire un fichier qui a été créé en deux étapes: Tout d’abord, nous avons écrit —avec le logiciel Word 5 pour Macintosh 35« Monsieur X est un universitaire borné et dangereux », et demandé à ce que ce document soit enregistré sur disque. Ensuite, nous avons remplacé les termes insultants de façon que le texte devienne « Monsieur X est un universitaire d’une grande finesse », et avons enregistré les modifications du texte. Le résultat est éloquent:
[...] ^ arobase-anti__spam #^ arobase-anti__spam ^ arobase-anti__spam ^ [...] Monsieur X est un universitaire born<8E>
et dangereux^M^M^Qu^ arobase-anti__spam x^BÅ{^Bá|^F<83>^D5<84> ^D5d’une grande
finesseD [...]

Bien sûr, pour tout utilisateur du même logiciel Word, seule la version finale et polie apparaîtra. Cet exemple donne la mesure de la confiance que l’on peut accorder à un tel produit comme aux formats incompréhensibles.

3.2.4 Format POSTSCRIPT

Ce format —propriété d’Adobe— est devenu un « standard » pour imprimer du texte 36, et plus généralement pour l’afficher sur un écran. Il est clairement graphique, mais a l’avantage d’être vectoriel: une figure sera décrite par les lignes et les courbes qui la composent, et non pas comme une simple somme de points.

Contrairement au format précédent, il est intégralement lisible, en ce sens qu’il utilise notre alphabet et que l’on perçoit l’existence d’une syntaxe, même s’il peut apparaître difficile à déchiffer: c’est un format documenté associé à un langage que l’on peut s’approprier.


PIC

FIG. 3.1: Le Petit Robert: dessin obtenu.

Le premier exemple propose l’inscription du texte Le Petit Robert, Tome 2 sur deux lignes, inséré dans un carré aux bords rouges 37. Pour une lecture plus aisée, sont ajoutés quelques commentaires, qui commencent, comme dans le cas de ce langage, par des symboles de pourcentage:
%!PS-Adobe-3.0 % en-tête du fichier
%%BoundingBox: 199 199 301 301 % Encadrement du dessin (non indispensable)
/m{moveto} def % m est défini comme une abréviation de moveto
newpath % ici commence un chemin (un carré)
200 200 m % on se positionne au point de coordonnées 200, 200
0 100 rlineto % déplacement relatif de 100 points vers le haut
100 0 rlineto % idem vers la droite
0 -100 rlineto % vers le bas
closepath % fin du carré
1 0 0 setrgbcolor % choix de la couleur rouge; rgb = red, green, blue
3 setlinewidth % épaisseur du trait en points
stroke % réalisation du dessin
% début du texte
/Helvetica findfont 14 scalefont setfont % choix de la police
203 260 m
(Le Petit Robert) % premier texte entre parenthèses
0 setgray show % écrit en noir (0 = noir, 1 = blanc)
227 235 m
(Tome 2) % second texte, toujours entre parenthèses
0 setgray
show % afficher le texte
showpage % visualiser le résultat
%EOF. % fin du fichier

Même si l’on n’est pas expert, on comprend aisément comment changer Petit en Grand, remplacer le bord rouge par un bord vert, etc.

Le second exemple est le résultat de la mise en page d’un texte pour la flasheuse 38 d’un imprimeur: à cause de la position minutieuse des lettres, et donc de l’optimisation de l’interlettrage, un mot peut être fragmenté, et les opérations de recherche/remplacement peuvent apparaître là plus délicates, même si on sait maintenant que le texte est toujours entre parenthèses:
71.095 100.379 M 0.817(Une telle comple)W
-0.167 N 0.817(xit\216 f)W
-0.11 N 0.817(acilite les analyses partiales. )W

Ici, on retrouve sans trop de difficultés l’expression une telle complexité facilite les analyses partiales. Cependant, la recherche du mot complexité ne donnera aucun résultat: il est tronqué, de façon que le x soit rapproché du e qui le précède. En sus, l’accent aigu est codé.

Un tel « langage » transforme le texte en image, sans toutefois empêcher sa manipulation: la page imprimée acquiert un statut graphique, au même titre que les « figures » que contient cette thèse; mais le travail sur le texte reste possible: l’index intégral de l’ouvrage « Comprendre les usages de l’internet » 39 a été réalisé à partir du fichier POSTSCRIPT de l’imprimeur, dont on vient de présenter un extrait.

Ce détour par le dessin nous ramène à la calligraphie: on sait qu’une fonte donnée n’offre pas le même dessin des lettres qu’une autre, et que les typographies des automates diffèrent grandement de l’écriture manuscrite. Jacques Anis traite cette dernière de continue 40, et infinie dans sa variété, à l’opposé de la frappe discrète (non-continue) et mécanique des machines. Mais on peut aussi redessiner chaque caractère avec un logiciel dédié 41, ou plus communément avec un logiciel de dessin 42. Ces procédures de définition du dessin d’un caractère peuvent être combinées à l’infini, comme le montre Jacques André 43: on peut aisément réaliser un programme qui modifie la forme d’une lettre comme le a au fil de son usage dans le texte, ou qui modifie, de façon aléatoire ou organisée (comme dans l’écriture arabe), des approches de paires, des ligatures, etc. Il s’ensuit une relation étroite entre le message (la lettre telle qu’elle est lue) et son dessin, c’est-à-dire le pictogramme que l’on confond avec un élément de l’alphabet.

Avec le POSTSCRIPT —si ce langage n’existait pas, on en aurait inventé un autre, aux fonctionnalités analogues—, la relation entre le signe et son dessin est rendue explicite, et devient aisément paramétrable.

3.2.5 Formats d’images

Il existe d’autres façon de gérer les images, qu’elles soient de type vectoriel 44 ou raster, c’est-à-dire définies par des séries de points (comme pour une photographie). Mais dans tous les cas, ces images sont codées sous une forme textuelle 45.

Comme le programme, l’image est en fait du texte alphabétique. Ce qui étend encore la notion d’écriture, et intensifie la relation entre système de signes et code.

3.2.6 Formats par balises

Pour faire retour au texte dans son acception courante, nous rappellerons l’existence de formats tels que LATEX et html. Ceux-ci ont a priori un inconvénient: le scripteur doit marquer lui-même, avec des balises explicites, les fragments de texte auxquels il désire donner un statut particulier. Par exemple, avec LATEX, une mise en italique s’opère de la façon suivante: \emph{l’expression à mettre en italiques}; pour signaler un appel de note à la suite d’un mot, on y accolle une expression de ce type: \footnote{Le texte qui sera en note}.

Mais ces formats ont un très grand avantage: ils facilitent la structuration du texte, sa mise en forme étant considérée comme secondaire (elle est d’ailleurs paramétrable). Il s’ensuit que ces « outils d’écriture » offrent une bien plus grande liberté intellectuelle que les formats de type Word. De plus, le choix d’un pur format ASCII offre deux garanties au scripteur comme au lecteur:

— possibilité de rédiger, voire de lire le texte 46 sur tout type de machine, avec tout type de traitement de texte ou d’éditeur; on est donc protégé contre les pannes logicielles qui détériorent trop souvent le document de travail;

— assurance que ce texte pourra être accessible et réutilisable sur de très longues périodes, puisque le format de base ne change pas.

On reste donc au plus proche du sens du texte, alors même que son caractère graphique est aussi entièrement assumé (par sa traduction automatique en POSTSCRIPT par exemple).

Pour l’html, les balises sont plus simples, mais tiennent compte de la variété des codages des divers systèmes d’exploitations: un caractère accentué comme le é se transcrit sous la forme &eacute; . Un passage à la ligne se traduit par un <br>ou un <p>. L’italique se code avec la balise <i>, suivie du texte en italique, suivi de la balise fermante </i>.

En fait, ces langages par balises sont plus répandus qu’on ne le pense; SGML, XML, XHTML sont peut-être des exemple peu connus; mais le RTF est aussi un format par balises, et même le logiciel QuarkXPress permet un tel usage des balises (les Xtags). Les balises correspondent à la façon la plus simple de transmettre un ordre à une machine, et on verra que la solution de facilité consistant à cliquer sur une icône donnée pour éviter leur saisie peut s’avérer très coûteuse 47.

On retiendra que de tels formats, qui sont d’autant plus limpides qu’ils n’insérent rien à l’insu du scripteur, sont malgré tout assez peu utilisés en sciences humaines, certainement parce qu’ils entrent en rupture avec la métaphore de la machine à écrire.