Pages

vendredi 28 juin 2013

La poésie de code 1

De communiquer avec des ordinateurs dans leur langue maternelle, le code binaire, n'est pas le plus facile. Pour ceux qui déroute sur l'humour de maths ringard : Il y a 10 sortes de gens, ceux qui comprennent les nombres binaires et ceux qui ne le font pas.

La langue d’un ordinateur est le code binaire. C’est un code entièrement composé de uns et zéros. Le processeur de l'ordinateur, le cerveau, ne comprend que ces chiffres qui sont des commendes pour effectuer quelques taches. Au fond ils sont peu nombreux et très simples. Le minimum est 7 instructions arithmétiques, dont addition, comparassions, manipulation du mémoire et quelques autres. Sur ce niveau le processeur est bette mais très travailleur. Mais, presque tous les processeurs sont entourés par des centaines de séquencés programmés qui à partir des instructions les plus primitives sont capable à faire plus, par exemple multiplication.

Ces instructions constituent la langue maternelle, celles qu’un processeur dispos depuis sa naissance. Peu de monde écrit aujourd'hui des instructions dans ce code mais dans la jeunesse de l’informatique il a parfois été nécessaire.

Cela était difficile, fastidieux et n’a pas laissé beaucoup de place pour créativités linguistiques. Pour le processeur de Motorola 68000 le message 0100 1110 0111 0101 signifiait par exemple qu’il fallait revenir au programme principal à partir d'un sous-programme.

Pour faciliter la tache il est possible de passer dans un autre système de numération, le hexadécimal. Il est dit que les extraterrestres ont 16 doigts et qu’ils par cette accident de la nature serraient plus alaise dans ce système. Il s’agit de remplacer les chiffres 10 à 15 avec icones, n’importe lesquelles, mais pour la simplicité les lettres A à F. La traduction du message ci-dessus devint dans ce cas plus compact mais naturellement toujours complètement incompréhensible pour les non initiés, 4E75.

La première communication entre hommes et machines qui avait une faible ressemblance avec une langue s’est produit avec la naissance d’assembleur. Ce terme désigne une langue où les instructions digitales sont remplacées par des petites sténographies symboliques. Donc, RTS ou lieu de 4E75. Pourtant, le processeur n’en comprend rien et pour le traduire il faut un logicielle. Dans la terminologie des informaticiens il est appelé un compilateur. Il traduit la langue assembleur en code hexadécimal, qui par un autre traducteur, inclus dans le processeur, est interprété en code binaire. Voila la séquence, des 3 étapes et 2 traducteurs, dont presque toutes les langues informatiques dépendent.

La complication est que tous les processeurs n’ont pas la même langue maternelle. Pour contourner ce problème il y a un genre d’esperanto généré par la langue Java qui en exécution est traduit à une code spécifique pour chaque type de processeur. Donc, dans le Java, il n’y a plus le besoin de compiler une version pour Windows et un autre pour Macintoche, qui dans des applications sur le web considérablement facilite la tâche.

Les langues maternelles d’ordinateurs ne sont pas des bonnes candidates pour le prix Nobel en littérature. Linguistiquement elles ont une distorsion considérable dans le vocabulaire. Les impératifs du verbe dominent et les noms sont plus rares. Pour ces dernières il pourrait s'agir d’une adresse dans la mémoire ou par un nome des registres dans la petite mémoire central du processeur où de bric et de broc constamment sont traités. De la poésie agréable ne se produise pas dans une langue aussi pauvre.

Mais, les langages de programmation ont rapidement dépassé le stade de : Parler avec les savants en latin et avec des ordinateurs en la langue machine. Des langues de haut niveau sont très vite apparues. Elles sont beaucoup plus abstraites et moins clairement lié au processeur. Ces langues ne sont pas indigènes aux processeurs mais une sorte de langage symbolique raffinée qui se situent quelque part entre la langue humain et le code de la machine. Elles sont nombreuses. Un des plus anciennes est ALGOL, né en 1950, et rapidement suivie par beaucoup d'autres.

Toutes ces langues ne font rein que d'exprimer des algorithmes. Le mot algorithme vient du nom du mathématicien arabe médiévale Al-Khwarizmi. Il s'agit simplement de décrire d'une méthode qui par étapes effectue une tâche. La chose n’est pas simple car les ordinateurs sont bettes et surtout, ils ne savent pas lire entre les lignes. Il faut que les instructions soient très précises.

Voici un exemple structurelle mais dans tous autres aspectes imaginaire :

NAME : Faire cuire et manger la pomme de terre ;
  Placez les pommes de terre dans la casserole ;
  Ouvrez le robinet ;
  REPEAT versez l'eau dans la casserole UNTIL casserole=plein ;
  Fermez le robinet ;
  Mettez la casserole sur la plaque chauffante ;
  Allumez le feu ;
  Mettez le couvercle ;
  REPEAT chauffez l'eau UNTIL l’eau=bout ;
  Réduirez le chauffage ;

  LABEL : Ebouilliez ;
  Faites cuire les pommes de terre ;
  Essayez la dureté avec une fourchette ;
  IF pommes de terre=dur THEN GOTO Ebouillez 
     ELSE étendrez la plaque et videz la casserole d’eau ;
  Placez les pommes de terre sur une assiette ;
  REPEAT
    Coupez les pommes de terre en morceaux ;
    Ouvrez la bouche ;
    Mettez les morceaux dans la bouche avec aide de la fourchette ;
    Mastiquez ;
    Avalez ;
  UNTIL assiette=vide ;
END : Faire cuire et manger la pomme de terre ;

Peut-être ne pas de la grande poésie, mais quand même…

Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.