ascii

2002.01.14

Douglas Edric Stanley

L'American Standard Code for Information Interchange, ou ascii, est un tableau crée en 1963 puis mis à jour en 1967 par l'American Standard Association (aujourd'hui ANSI) en collaboration avec la société américaine Bell. Ce tableau ascii crée une relation explicite entre une valeur et un signe alphanumérique (lettres et chiffres). Par exemple, dans ce tableau la lettre A (majuscule) est reliée à la valeur 65, la lettre « B » à la valeur 66, jusqu'à la lettre « Z » avec la valeur 90. Les chiffres ( « 0 - 9 ») sont reliés aux valeurs 48 à 57. En plus des chiffres et des lettres, le tableau ascii répertorie quelques instructions supplémentaires liés aux contenus textuels, comme par exemple le retour de ligne (10 et 13) qui n'est pas à proprement parler un signe typographique mais qui détermine de façon significative le contenu. Le tableau enfin ajoute plusieurs instructions spécifiques à l'informatique (« ESC », « NULL », « BELL », etc); ces instructions se trouvent au début du tableau ascii, entre les valeurs 0 et 31.

Comme on apprend avec notre diagramme bitmask, chaque chiffre dans un ordinateur est représenté par une série d'interrupteurs ouverts et fermés, le motif de leurs ouvertures déterminant une valeur. Si on a un seul interrupteur, on ne peut déterminer qu'une valeur de « 0 » ou de « 1 ». Si on a huit interrupteurs on peut communiquer des valeurs entre « 0 » et « 255 », c'est-à-dire 256 différentes valeurs. Dans certains cas de communication entre un ordinateur et un autre, et surtout entre un ordinateur et une des ses périphériques via une port série (cf. ¶[RS-232]) on communique en envoyant 8 valeurs, c'est-à-dire 256 valeurs possibles. En 1963, quand on a créé le tableau ascii on communiquait avec 7 interrupteurs pour les valeurs (« 0 » à « 127 »), réservant le dernier interrupteur pour la « ¶parité ». Du coup, le tableau ascii tente de rentrer dans ces quelques 128 valeurs possibles l'ensemble des instructions de base nécessaires pour communiquer entre deux machines — ou, devrait-on dire, l'ensemble des instructions de base pour un américain de la guerre froide.

Depuis les tout premiers tableaux ascii, uniquement les lettres essentiels du langage américain était indiqués, ignorant notamment les accents des langages proches de l'anglais comme les langues européenes continentales; elle ignorait également l'ensemble des langages qui n'utilisent pas les caractères romains, comme le chinois. Bien que ce detail s'explique par le contexte (la recherche et l'industrie américaines sont pour beaucoup dans le développement informatique), les conséquences sont significatives sur le plan geopolitique. Même de nouveaux standards, comme l'¶[UTF-8] (utilisé pour l'encodage du document actuel), utilisent les 128 caractères d'ascii comme point de départ pour tous les autres caractères : la langue fonctionnelle dominante pour la machine reste l'américain. Car presque tous les composants logiciels sont programmés avec uniquement les 128 caractères du tableau ascii, toute autre caractère générant une erreur de compilation. Si ces programmes peuvent traiter plus que ces 128 caractères et permettent de travailler de plus en plus dans d'autres langues pour leurs interfaces, leurs schémas logiques (cf. programme) sont composés de A à Z avec des signes qui ne sont compréhensibles que dans deux langues dont une de morte : le latin et l'anglais. De ce fait, quelque soit les mouvements annexes pour rendre pluriel l'expression via l'informatique, ces structures de la couche inférieur continueront à influencer les expression sur sa surface. Autremment dit, à lui seul, le tableau ascii a concrétisé une dominance de la langue américaine pour les premières 50 années de l'informatique, et probablement pour les 50 prochaines.

En dehors des questions politiques liées aux choix du tableau, l'ascii est significative pour son universalité dans le transcodage. Il est de rigeur pour tout ce qui concerne l'interfaçage expérimentale et la robotique, par exemple, où l'informatique est ramené à ses composants les plus minimales. Dans électronique, on utilise des microcontrolleurs pour faire beaucoup de choses avec très peu. Ces microcontrolleurs sont par conception réstreints en terme de savoir-faire pour conserver leur taille, leur consommation, et leur coûts : on regarde l'état d'un bouton, on actionne un moteur, on capte une température. L'ascii permet de sonder ces états avec des informations lisibles ensuite par un être humain ou par un autre composant sans avoir besoin de savoir leur protocol interne pour stocker les informations en « 0101001101001 ».

Mais le véritable intérêt du tableau ascii est dans le tuyautage. Ces microntrolleurs ne sont pas conçus pour travailler ou afficher des informations seuls, ils cherchent plutôt à rentrer dans des assemblages plus complexes. D'où le besoin d'un lingua franca. Le « tuyaux » entre toutes ces machines est extrêmement réstreint (il ne laisse passer que des « 0 » et des « 1 » !), d'où l'avantage d'avoir un tableau ascii de chaque côté : on encode une informatique complexe en des chiffres (82, 69, 65, 68, 89, 13) qui seront convertis ensuite en « 0 » et « 1 », on passe ces chiffres dans le « tuyau », et de l'autre côté en décode ces chiffres en des caractères alphanumériques (« READY »). Comme tout ordinateur, microcontrolleur, ou circuit numérique quelconque sait traiter (et potentiellement communiquer) des chiffres entre au moins « 0 » et « 255 » (cf. bitmask), ils peuvent du coup se communiquer entre eux pour passer des messages en tout genre.

Un GPS peut communiquer à un téléphone portable sa position en communiquant des combinaisons de chiffres et de lettres plus complexes que « 0 » à « 255 ». Si on connaît le protocol GPS, on peut par exemple comprendre les coordonnées suivantes (tiré du C5Corporation) comme des références à de véritables points dans l'espace :

T, , 47, S, 433463.5235, 4406124.245, 4, 6, 2004, 19, 29, 38, 1707.919434, 0.000000;
T, , 47, S, 433437.7231, 4406114.942, 4, 6, 2004, 19, 30, 8, 1706.958008, 0.000000;
T, , 47, S, 433439.5601, 4406114.926, 4, 6, 2004, 19, 30, 38, 1706.958008, 0.000000;
T, , 47, S, 433439.5808, 4406117.308, 4, 6, 2004, 19, 31, 8, 1705.996582, 0.000000;
T, , 47, S, 433441.4177, 4406117.292, 4, 6, 2004, 19, 31, 38, 1705.996582, 0.000000;
T, , 47, S, 433447.1563, 4406143.442, 4, 6, 2004, 19, 32, 8, 1706.958008, 0.000000;
T, , 47, S, 433436.4035, 4406174.499, 4, 6, 2004, 19, 32, 38, 1706.477295, 0.000000;
T, , 47, S, 433420.1400, 4406205.604, 4, 6, 2004, 19, 33, 8, 1704.074219, 0.000000;
T, , 47, S, 433379.8098, 4406215.482, 4, 6, 2004, 19, 33, 38, 1705.035400, 0.000000;
T, , 47, S, 433333.8238, 4406208.736, 4, 6, 2004, 19, 34, 8, 1706.477295, 0.000000;
T, , 47, S, 433300.9038, 4406225.696, 4, 6, 2004, 19, 34, 38, 1708.880859, 0.000000;
T, , 47, S, 433277.2309, 4406249.720, 4, 6, 2004, 19, 35, 8, 1705.035400, 0.000000;
T, , 47, S, 433253.5582, 4406273.744, 4, 6, 2004, 19, 35, 38, 1710.322754, 0.000000;
T, , 47, S, 433249.9258, 4406278.539, 4, 6, 2004, 19, 36, 8, 1708.880859, 0.000000;

Ce qui pourrait décrire par exemple un voyage de transplantation par C5 du mur de Chine sur la topographie Californien (cf. The C5 Landscape Initiative).

Les couches d'abstraction (cf. strate) dont on parle ici pour passer d'un capteur GPS à un stockage et affichage sur un téléphone ou un ordinateur portable sont extrêmement complexes si on les regarde tous ensemble. Mais en les isolant, comme on fait toujours lors de leur conception, on arrive à gérer cette complexité en s'occupant uniquement des points de passage dans le transcodage. L'ascii est important dans ce transcodage parce que malgré ces limitations sur le plan geopolitique, il permet néanmoins de très simplement convertir des informations de tout genre pour des objets et usages encore inconnus. Et comme de plus en plus d'appareils sont des aggrégations complexes de microcomposants spécifiques, l'ascii (ou son équivalent) devient essentielle pour nous permettre de brancher presque n'importe lequel de ces composants avec n'importe quel autre composant. L'ascii comme invention d'une lingua franca pour la construction de machines abstraites concrètes.

cf. ascii art ensemble