Le fondateur de l'informatique moderne
Le mathématicien anglais Alan Turing(1912-1954),a été le premier à penser l'ordinateur moderne. Connu pour avoir imaginé une machine et un test portant son nom, il est l’un des fondateurs de l’informatique moderne. Sa machine de Turing est en effet à l’origine de l'informatique et des théories de la programmation.
En 1937, il publie l'article fondateur de la science informatique : il y présente sa machine de Turing, le premier calculateur universel programmable et invente les concepts de programmation et de programme.
Pendant la Seconde Guerre Mondiale, il est employé par les services secrets britanniques pour décoder les messages secrets allemands. Il participe alors à la construction de l'un des premiers ordinateurs programmables au monde : le Colossus.
Après la guerre, il poursuit des recherches en intelligence artificielle et invente le test de Turing (test d’intelligence artificielle sur la capacité d’une machine à imiter la conversation humaine).
Persécuté pour son homosexualité, il se donne la mort le 7 juin 1954 en croquant une pomme trempée dans du cyanure. Le logo de la firme Apple – une pomme croquée – serait d'ailleurs un hommage au père de l'informatique moderne.
Pendant la Seconde Guerre Mondiale, il est employé par les services secrets britanniques pour décoder les messages secrets allemands. Il participe alors à la construction de l'un des premiers ordinateurs programmables au monde : le Colossus.
Après la guerre, il poursuit des recherches en intelligence artificielle et invente le test de Turing (test d’intelligence artificielle sur la capacité d’une machine à imiter la conversation humaine).
Persécuté pour son homosexualité, il se donne la mort le 7 juin 1954 en croquant une pomme trempée dans du cyanure. Le logo de la firme Apple – une pomme croquée – serait d'ailleurs un hommage au père de l'informatique moderne.
Le système binaire
introduction :
Ce pas de géant s'est réalisé en grande partie à partir du développement d'un système de codification qui a permis d'établir des communications efficaces et rapide sur un vaste réseau construit autour de deux agents principaux : les ordinateurs et leurs utilisateurs, c'est-à-dire nous tous. Nous parlons non seulement de sécurité au sens cryptographique, mais aussi dans un sens bien plus large qui recouvre également les notions de fiabilité et d'efficacité. A la base de cette révolution technologique se trouve le système binaire. Ce code extrêmement simple, formé de deux caractères, le 0 et le 1, est le plus usité en informatique, de par sa capacité à exprimer des fonctions logiques qui interagissent dans les circuits éléctronique, des ordinateurs et autres appareils. Chaque 0 et 1 s'appelle bit (binary digit ou chiffre binaire). Une bonne analogie serait de dire que le système binaire est le langage vernaculaire des ordinateurs.
Le code ASCII
L'une des multiples applications du système binaire est une famille particulières de caractères, conçue de telle maniére que chaque caractère soit représenté par une suite de 8 bits(1 octet).Ces caractères, appelés alphanumériques, sont l'ensemble de signes basique employés dans la communication conventionnelle, que l'on appelle ASCII (sigle de l'American Standard Code for Information Interchange ou "Code américain normalisé pour l'échange d'informations"). Le code ASCII compte 256 caractères, nombre qui résulte de toutes les formes possibles d'ordonner de manière différente un ensemble de 8 zéros et un, c'est-à-dire : 2^8 = 256.
Le code ASCII est le code qui permet la communication entre l'utilisateur et l'ordinateur. Quand on tape au clavier un caractère alphanumérique, l'ordinateur le traduit en octet, c'est-à-dire en une chaîne de 8bits. Ainsi, en écrivant la lettre A, l'ordinateur comprend : 01000001.
Le tableau suivant montre la relation entre valeurs alphanumériques et décimales des caractères ASCII les plus communément utilisés dans les tâches courantes :
Le système hexadécimal
Le système hexadécimal arrive eu deuxième rang des codes d'importance notable dans le domaine des ordinateurs. Il s'agit d'un système de numération qui travaille avec seize chiffres uniques(d'où le terme "hexadécimal"), contrairement au système habituel qui en compte dix (décimal). Le système hexadécimal est, si l'on peut dire, le "second langage" de l'ordinateur après le binaire. Rappelons que l'unité de base de la mémoire de l'ordinateur, le Byte, est composé de huit bits, ce qui permet d'atteindre 2^8 = 256 combinaisons différentes de zéros et de uns. On observe que 2^8 = 2^4 X 2^4 = 16 X 16.C'est-à-dire que la combinaison de deux caractères hexadécimaux équivaut à 1 octet.
Les seize chiffres du système hexadécimal sont les chiffrés traditionnels 0,1,2,3,4,5,6,7,8,9 et six autres, donnés par convention : A,B,C,D,E,F. Pour compter en système hexadécimal, on procède de la manière suivante :
- De 0 à 15 : 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
- De 16 à 31 : 10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F.
- A partir de 32 : 20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,...
Le tableau ci-dessous montre la correspondance entre binaire, décimal et hexadécimal des 16 chiffres de ce deuxième systèmes.
Pour passer du binaire à l'hexadécimal, on groupe les bits 4 par 4 de la droite vers la gauche et on termine la conversion selon le tableau précédent. Si le nombre de chiffres binaires n'est pas un multiple de quatre, on complète par des zéros à gauche. Pour passer de l'hexadécimal eu binaire, on convertit chaque chiffre hexadécimal à son équivalent en binaire.
Quelle est l'équivalence entre des caractères hexadécimaux et des caractères ASCII?
Chaque caractères ASCII comportent 40 bits (5 octets) et, comme un caractère hexadécimal comporte 4 bits, nous obtenons que 5 caractères ASCII sont équivalents à 10 caractères hexadécimaux.
Voyons maintenant un exemple de codage d'une phrase en hexadécimal, par exemple, "Section CATIC12".
- Traduisons "Section CATIC12" en binaire au moyen de la norme ASCII.
- Regroupons les chiffres par 4, si la longueur n'est pas multiple de quatre, on rajoute des zéros à gauche.
- En consultant le tableau de conversion du binaire à l'hexadécimal, nous pouvons traduire la phrase.
section = S: 0101 0011, e: 0110 0101, c: 0110 0011, t: 0111 0100, i: 0110 1001, o: 0110 1111,
n: 0110 1110 et CATIC12 = C: 0100 0011, A: 0100 0001, T: 0101 0100, I: 0100 1001, C: 0100 0011, 1: 0011 0001, 2: 0011 0010.
Section CATIC12 = S:53, e:65, c:63, t:74, i:69, o:6F, n:6E, C:43, A:41, T:54, I:49, C:43, 1:31, 2:32
L'expression "section CATIC12" se code en hexadécimal, cette fois sans majuscule ni minuscules :
53 65 63 74 69 6F 6E 43 41 54 49 43 31 32.
Système de numération et changements de base
Dans un système numérique de n chiffres on dit qu'il est en base n. Les mains de l'homme ont dix doigts et c'est probablement la raison pour laquelle a été inventé le système numérique décimal : le compte se faisait sur les doigts. Un nombre décimal, comme 8453, représente une quantité égale à 8 milliers, plus 4 centaines, plus 5 dizaines, plus 3 unités. Les milliers, les centaines, les dizaines et les unités sont des puissances de la base du système numérique, la base étant 10 dans ce cas. Le nombre 8453 pourrait s'écrire :
8453 = 8x10^3 + 4x10^2 + 5x10^1 + 3x10^0.
Par convention, on écrit uniquement les coefficients. Il existe de nombreux systèmes de numération autres que le système décimal (de fait, leur nombre est potentiellement infini). Dans cet article, nous prêterons une attention particulière à deux d'entre eux : le binaire, de base 2, et l'hexadécimal, de base 16. Dans un système de numération binaire, les coefficients n'ont que deux valeurs possibles : 0 et 1.
Les chiffres des nombres binaires sont les coefficients de puissances de 2. Ainsi, le nombre 11011^2 peut s'écrire aussi :
11011^2 = 1x2^4 + 1x2^3 + 0x2^2 + 1x2^1 + 1x2^0.
Si nous calculons l'expression à droite de l'égalité, nous obtenons 29, qui est la forme décimale du nombre binaire considéré. A l'inverse, divisons le nombre décimal successivement par 2 (la base du binaire) et notons les reste jusqu'à obtenir un quotient égal à 0. Le nombre binaire aura pour premier chiffre le dernier quotient et les restes suivront, à partir du dernier obtenu. Visualisons le processus en écrivant le nombre 79 en binaire.
79 divisé par 2 a pour quotient 39 et il reste 1.
39 divisé par 2 a pour quotient 19 et il reste 1.
19 divisé par 2 a pour quotient 9 et il reste 1.
9 divisé par 2 a pour quotient 4 et il reste 1.
4 divisé par 2 a pour quotient 2 et il reste 0.
2 divisé par 2 a pour quotient 1 et il reste 0.
Par conséquent, le nombre 79 s'écrit en binaire : 10011112. On peut vérifier ce résultat dans le tableau ASCII précédent ( il faut prendre en compte que dans la case correspondante, il y a un 0 en plus au début, en raison de l'ajout de zéros à gauche, comme mentionné). La conversion d'un nombre d'un système de numération à l'autre est appelée "changement de base" du nombre en question.
Codes contre la perte d'informations
Les différents codes mentionnés précédemment ont pour objectif de permettre des communications sûres et efficaces entre les ordinateurs et les programmes, d'une part, et les utilisateurs, d'autre part. Mais ce langage doit s'appuyer sur une théorie générale de l'information qui pose les bases du processus de communication lui-même. Le premier pas pour établir une telle théorie est tellement élémentaire qu'il ne vous vient certainement pas à l 'esprit : comment mesurer l'information?
Une phrase du style "La pièce jointe pèse 2 kb" est le résultat d'une longue série d'intuitions géniales, déclenchées par un article en deux partie publié en 1948 par l'ingénieur américain Claude E. Shannon, intitulé "Une théorie mathématique de l'information". Dans cet article fondamental, Shannon proposa une unité de mesure de la quantité d'information qu'il appela bit. Le problème général qui donna lieu au travail de Shannon est l'un de ceux avec lesquels nous somme déjà familier : quelle est la meilleur manière de coder un message pour éviter que l'information ne se détériore pendant la transmission? Shannon arriva à la conclusion qu'il était impossible de définir un codage qui empêche dans tous les cas une perte d'information, c'est-à-dire que celle-ci se détériore irrémédiablement. Cette conclusion instructive n'a pas arrêté les efforts déployés pour définir des normes de codage qui, même si elles ne peuvent empêcher cette détérioration, assurent néanmoins des niveaux maximaux de fiabilité et d'intégrité.
Lors d'une transmission numérique, le message, une fois généré par l'émetteur (humain, ordinateur...), est codé en binaire puis entre dans le canal de communication, lui-même composé des ordinateurs émetteur et récepteur et du canal proprement dit, physique (câble) ou incorporel (ondes, lumière...). Le passage par le canal est le processus le plus délicat du fait que le message peu être soumis à tous types de perturbations dues à un croisement de signaux, à des changement de température dans les supports physiques, à des baisse de tension qui affectent ces support, etc. Le terme technique utilisé pour désigner ces interférences est le bruit.
Pour minimiser l'impact des bruit, il faut non seulement protéger le canal mais aussi mettre en place des méthodes de détection et de correction des erreurs qui vont invariablement se produire.
L'une de ces méthode est la redondance. La redondance consiste à répéter, en fonction de certain critères, certaines caractéristique du message. Voici un exemple qui aide à comprendre le processus. Supposons un alphabet tel que chaque mot étant du type a1 ,a2 ,a3 ,a4 , sont les valeurs des bits composant le mot. Avant d'envoyer le message, on ajoute à chaque mot 3 caractères supplémentaires c1, c2, c3, de manière à ce que le message codé qui circulera dans le canal soit de la forme a1 a2 a3 a4 c1 c2 c3 . Les éléments c1 c2 c3 seront les garants de la sécurité du message et sont appelés codes de parité. Ils sont générés de la manière suivante :
c1 = 0 si a1 + a2 +a3 est pair ou 1 si a1 + a2 + a3 est impair
c2 = 0 si a1 + a2 + a3 est pair ou 1 si a1 + a2 + a3 est impair
c3 = 0 si a1 + a2 + a3 est pair ou 1 si a1 + a2 + a3 est impair
Au massage 0111 se seront assignés les codes de parité suivants :
Comme 0 + 1 + 1 = 2 est pair, le chiffre c1 = 0
Comme 0 + 1 + 1 = 2 est pair, le chiffre c2 = 0
Comme 1 + 1 + 1 = 3 est impair, le chiffre c3 =1.
Le message 0111 sera envoyé sous la forme 0111001.
source: Cédric Villani, Le monde est mathématique, n°2: Codage et cryptographie, mars 2013.