L’ordinateur, objet du siècle
Écrire et calculer. Ces deux activités, aujourd’hui encore considérées comme des piliers de l’éducation, sont unies par des liens qui remontent à leur apparition même. En effet, c’est bien la conception progressive d’une écriture des nombres fondée sur la position de leurs chiffres associée à des algorithmes tirant parti de cette notation pour les additionner et les multiplier efficacement, qui a permis le prodigieux développement du calcul. Mais tant que les opérations sur les nombres étaient manuelles, elles restaient fastidieuses et sujettes à de fréquentes erreurs.
Sept mille ans avant notre ère : des petits cailloux, qui seront appelés calculi en latin, sont utilisés pour effectuer et mémoriser des comptes élémentaires lors des transactions.
Année 2008 de notre ère : une calculette électronique de quelques euros, qui ne doit sa taille qu’à celles imposées du clavier et de l’écran, est capable de réaliser instantanément toutes les opérations élémentaires, et moins élémentaires, y compris sur des grands nombres.
Seuls dix signes, les chiffres 1, 2, 3, 4, 5, 6, 7, 8, 9, plus ce fameux 0, nous servent à écrire un nombre. Ainsi, 2 504 correspond à 2 × 1 000 + 5 × 100 + 0 × 10 + 4 × 1, autrement dit à 2 × 103 + 5 × 102 + 0 × 101 + 4 × 100 en utilisant les puissances de 10, notre base habituelle.
Cette notation est dite « positionnelle » parce que la contribution d’un signe dans l’écriture d’un nombre dépend de sa position. Elle est économique puisque le nombre de signes qu’elle utilise est égal à la base utilisée. Mais elle est surtout très efficace quand il s’agit d’effectuer des opérations, c’est-à-dire des algorithmes sur ces notations. La base 2, quant à elle, utilise seulement deux chiffres, 0 et 1, qui peuvent être associés à deux états physiques stables, ce qui a fait son succès pour le calcul électronique.
Le principe d’écriture est le même. Ainsi, le nombre 13 en base 10 s’écrit 1101 en base 2, car 13 = 8 + 4 + 1 = 1 ×23 + 1 × 22 + 0 × 21 + 1 × 20.
L’homme et la machine : un travail d’équipe
Entre-temps, l’ingéniosité humaine, sous la pression d’une même motivation – calculer plus vite et sans erreurs – a produit des dispositifs d’une grande diversité. Après les bouliers, apparus trois mille ans avant notre ère et encore largement utilisés aujourd’hui, et leur version romaine, les abaques, ou les quipus incas, l’histoire s’accélère au XVIIe siècle avec les compas de proportion chers à Galilée et les bâtons de Neper. Les premières calculatrices mécaniques voient le jour, le dispositif de W. Schickard, puis la fameuse Pascaline en 1641 et, cinquante ans plus tard, la machine de Leibniz, moins connue quoique plus puissante. Elles deviennent électromécaniques à la fin du XIXe siècle, puis électroniques au XXe, siècle qui verra aussi le succès de la carte perforée. Simultanément, les capacités de calcul ainsi disponibles motivent et favorisent la conception de méthodes, c’est-à-dire d’algorithmes, permettant par exemple de calculer des racines, ne serait-ce que carrées, ou de résoudre des équations algébriques, puis différentielles.
L’homme s’est toujours entouré d’instruments pour lui faciliter le calcul : cailloux, ficelles nouées (quipus), bouliers, abaques, calculateurs et, de nos jours, calculatrices électroniques si utiles en cours de mathématiques !
En 1617, John Napier (ou Neper), connu des lycéens comme inventeur des logarithmes « népériens », propose un dispositif de calcul comprenant un ensemble de bâtonnets de dix types différents. Chaque bâtonnet correspond à un nombre de 0 à 9 et contient, grâce à des marques, la table de multiplication de ce nombre. Associé à un plateau, l’ensemble permet la lecture du résultat de la multiplication d’un nombre à plusieurs chiffres par un nombre inférieur à 10. La multiplication par un nombre plus grand nécessite d’effectuer des additions. Cet abaque, facile et peu coûteux à fabriquer, sera utilisé pendant plus de deux siècles.
En 1623, Wilhelm Schickard l’améliore, remplace les bâtons par des cylindres et parvient à faciliter les additions. Sa machine précède ainsi de vingt ans la Pascaline. L’abaque de Michel Rous, en 1869, est un autre de ces avatars : 8 cylindres népériens associés à un boulier doublé de petits tambours numérotés mémorisant les additions.
Mais des calculi à la calculette, l’enchaînement des opérations reste le fait de l’utilisateur : la calculette, aussi puissante soit-elle, n’est pas un ordinateur. En effet, c’est l’enregistrement, dans une mémoire de la machine, de la séquence des opérations à effectuer – le programme –, avec les données sur lesquelles elles portent, qui distingue un ordinateur d’un dispositif de calcul, quelles que soient la maniabilité et la rapidité de ce dernier. On fait alors la différence entre le matériel, c’est-à-dire l’ordinateur et ses circuits, et le logiciel, les programmes qui peuvent s’exécuter sur l’ordinateur. De ce point de vue, l’apparition de l’ordinateur est récente. Même si Charles Babbage et Ada Lovelace peuvent être crédités d’avoir anticipé, dès les années 1830, la distinction entre le matériel et le logiciel, ce n’est que cent ans plus tard que les premiers ordinateurs ont été construits. Si la motivation est la même qu’au début – calculer vite et sans erreurs –, les priorités de l’époque sont différentes : il s’agit d’effectuer des calculs longs et répétitifs requis par la résolution d’équations en physique et en particulier les calculs des tables de tir et de bombardement.
Des tonnes de calculs
Les premiers ordinateurs utilisent la technologie des lampes (appelées aussi « tubes à vide »). Ils sont, de ce fait, extrêmement encombrants, coûteux, très lents par rapport aux standards actuels et tombent fréquemment en panne. Achevé en 1946, l’Eniac (Electronic Numerical Integrator Analyser and Computer), un des premiers ordinateurs opérationnels, pesait 27 tonnes, occupait 63 m2 au sol et effectuait 5 000 opérations par seconde.
L’Eniac, terminé en 1946, est considéré comme le premier ordinateur. Comme on le voit sur la photo, il était programmé manuellement avec des fils électriques, établissant les connexions appropriées.
Conçu et construit pour calculer les tables de tir pour le laboratoire de recherche en balistique de l’armée américaine, Eniac est considéré comme un des premiers « ordinateurs » (terme français créé en 1955). En effet, il était programmable et pouvait donc résoudre différents types de problèmes. Le programme à exécuter n’était pas enregistré dans une mémoire, comme Von Neumann le préconisa peu de temps après, mais devait être câblé manuellement. La tâche délicate de câblage d’un programme était confiée à une équipe d’une demi-douzaine de personnes qui manipulaient les interrupteurs et les connecteurs appropriés.
L’Eniac mettait en œuvre plus de 17 000 tubes à vide (ou lampes) et souffrait du manque de fiabilité de cette technologie électronique : chaque jour, plusieurs de ces lampes « grillaient ». Il utilisait encore une représentation décimale des nombres et son unité de calcul électronique reproduisait les dispositifs des machines à additionner mécaniques à roues. Il pouvait effectuer plus de 5 000 additions et 350 multiplications par seconde. Il pesait 27 tonnes et occupait 63 m3.
Les progrès technologiques des décennies suivantes permettent d’augmenter leur fiabilité, en particulier par la substitution des semi-conducteurs aux tubes à vide, de réduire leur taille, grâce à la miniaturisation des composants électroniques, d’en diminuer le coût grâce à des procédés de fabrication automatisés, et enfin d’en accroître considérablement la puissance, tant en termes de calcul que de capacité de stockage. Comparez Eniac à votre ordinateur personnel – quelques kilos (voire moins) posés sur votre bureau capables d’effectuer plusieurs centaines de millions d’opérations par seconde.
Au-delà de ces immenses progrès technologiques, force est de constater que ces premiers ordinateurs reposent déjà sur les mêmes principes que les ordinateurs actuels et en possèdent fondamentalement la même organisation, ladite « architecture de Von Neumann », du nom de ce brillant mathématicien d’origine hongroise qui fit par ailleurs des contributions majeures en physique et en économie.
L’architecture virtuelle inventée par John von Neumann (1903-1957) pose les principes du fonctionnement de l’ordinateur. Elle sert toujours, aujourd’hui, de modèle à nos ordinateurs.
Dans l’architecture de Von Neumann, l’unité arithmétique et logique effectue des opérations sur des chaînes de bits : décalage, addition, comparaison… Dans cette unité, l’accumulateur contient la donnée de travail courante. De son côté, l’unité de contrôle détermine quelle est la prochaine instruction à effectuer, conformément au programme qui est enregistré dans la mémoire centrale de la machine, au même titre que les données sur lesquelles il travaille. Enfin, l’ordinateur communique avec l’extérieur grâce à des dispositifs d’entrée, pour lire les données et les programmes, et de sortie, pour communiquer les résultats.
Si écran et clavier constituent toujours les premiers moyens de communication avec l’ordinateur, les lecteurs de cartes ou de rubans perforés ont eux laissé la place d’abord aux bandes magnétiques, puis aux disquettes, cédéroms, clés USB et, aujourd’hui, à la prise de connexion réseau : le premier dispositif d’entrée-sortie.
Très vite, une représentation binaire des nombres, une séquence de 0 et de 1, appelés « bits », est retenue. Cette représentation est quasiment imposée par la physique : il est en effet beaucoup plus simple de créer des dispositifs qui possèdent seulement deux états stables, à la manière d’un interrupteur qui ne peut être qu’ouvert ou fermé.
Les circuits de l’ordinateur effectuent séquentiellement chacune des instructions qui composent un programme. Certaines de ces instructions consistent à additionner ou à multiplier des nombres, d’autres à comparer des valeurs, d’autres encore, dites de contrôle, permettent de rompre cette séquentialité d’exécution et d’effectuer alors des boucles jusqu’à atteindre une certaine condition, ou encore d’aller exécuter un sous-programme spécialisé, par exemple dans le calcul de fonctions trigonométriques.
Donc, une fois un programme lancé, l’ordinateur enchaîne seul les instructions, contrairement à la calculatrice, et à tous les dispositifs de calcul qui ont précédé l’ordinateur, où cet enchaînement est le fait de l’utilisateur.
Ainsi, un nouveau métier apparaît : programmeur. Il s’agit de concevoir la séquence des instructions que l’ordinateur exécutera pour résoudre un problème donné. Par exemple : déterminer si deux nombres sont premiers entre eux, c’est-à-dire si leur plus grand commun diviseur (PGCD) est 1. Pour résoudre ce problème, il faut tout d’abord élaborer un algorithme, c’est-à-dire une démarche systématique qui conduira au résultat. En l’occurrence, dès le IVe siècle avant notre ère, le mathématicien grec Euclide propose un algorithme pour calculer le PGCD de deux entiers naturels.
Il utilise l’opération de division entière, elle-même un algorithme, qui permet de calculer, pour un couple d’entiers (a, b) avec b ≠ 0, le couple (q, r) où q est le quotient de la division et r son reste (r < b), tels que a = b × q + r. Par exemple, le quotient de la division entière de 27 par 6 est 4 et son reste vaut 3, car 27 = 6 × 4 + 3. L’algorithme d’Euclide est itératif : une séquence d’opérations doit être répétée jusqu’à ce qu’une certaine condition soit vérifiée (ci-dessous, la condition b = 0). Voici une formulation de l’algorithme, où x ← y s’interprète comme « x prend la valeur y » et le plus grand commun diviseur se note PGCD :
répéter [r ← reste de la division entière de a par b, a ← b, b ← r] jusqu’à b = 0, PGCD ← a
Ainsi, pour a = 35 et b = 6 les itérations de l’algorithme sont les suivantes :
a | b | r |
35 | 6 | 5 |
6 | 5 | 1 |
5 | 1 | 0 |
1 | 0 |
Le PGCD de 35 et 6 vaut donc 1 : ces deux nombres sont premiers entre eux.
Il est ensuite nécessaire d’écrire cette démarche dans un langage interprétable par l’ordinateur : c’est la phase de programmation. Quand le programme a été suffisamment vérifié, voire prouvé, il est possible de l’appliquer avec une certaine confiance sur des nombres quelconques. Ou presque… Car certains algorithmes, pourtant courts à décrire, peuvent prendre beaucoup de temps à s’exécuter, même sur des ordinateurs puissants.
Un programme sur mesure
Le programme est accessible à l’unité arithmétique et logique dès que les instructions élémentaires qui le composent sont rangées dans la mémoire de l’ordinateur. Initialement capables de stocker quelques mots seulement – chaque mot rassemblant typiquement 32 bits, soit 4 octets de 8 bits chacun –, les mémoires ont elles aussi bénéficié d’énormes avancées technologiques. Un ordinateur personnel possède ainsi une mémoire dont la capacité se mesure dorénavant en millions d’octets ou en mégaoctets, si on utilise les préfixes chers aux informaticiens.
Notons ici que le kilo de l’informaticien vaut plus que le kilo du physicien. En effet, 1 kilo (d’)octets ou 1 ko correspond à 210 octets, soit 1 024 octets. De même, 1 mégaoctet ou 1 Mo = 220 octets, 1 gigaoctet ou 1 Go = 230 octets, et ainsi de suite, qu’il s’agisse d’octets, de bits ou d’opérations sur des nombres réels, dits « flottants ». Ainsi, la performance des ordinateurs les plus rapides s’exprime-t-elle en petaflops, soit 250 opérations par seconde (ou approximativement 1015), autrement dit un million de milliards d’opérations par seconde !
La mémoire centrale de l’ordinateur est secondée par des mémoires, dites « secondaires », encore plus vastes, et qui, de plus, ne sont pas volatiles : elles conservent les informations qui y sont rangées même lorsque l’ordinateur est éteint. Par contre, l’accès à ces informations y est plus lent. Un ordinateur personnel contient ainsi un disque dur capable de stocker des gigaoctets d’informations.
Les ordinateurs actuels bénéficient souvent de plusieurs unités arithmétiques et logiques, qu’on appelle désormais « processeurs », ce qui augmente leur puissance puisque les calculs peuvent y être répartis et effectués en parallèle. Ils possèdent également des circuits spécialisés, par exemple pour l’affichage graphique.
En effet, il est vite apparu qu’une suite de 0 et de 1 peut représenter d’autres entités que des nombres et tout d’abord des caractères. Ainsi, le fameux code ASCII (American Standard Code for Information Interchange), créé au début des années 1960, établit-il une correspondance biunivoque entre les 256 séquences de 8 chiffres binaires et une liste de caractères.
0 et 1, le couple fondateur
Ce codage approprié permet donc à l’ordinateur de faire du calcul sur des caractères, de les mémoriser et de les restituer sur une imprimante, et plus tard sur un écran. Il ouvre la voie au traitement de textes, à la traduction assistée et… à la compilation, c’est-à-dire la traduction de programmes écrits en langages de haut niveau, tels que C ou Java, vers le langage, beaucoup plus élémentaire, interprété directement par le processeur. Au-delà des textes, le codage binaire s’applique également à des signaux de nature continue, par exemple ceux issus d’un microphone, à condition de les discrétiser, c’est-à-dire de les découper en petits segments et de coder chacun de ces segments par une séquence de bits. De la même manière, les images peuvent être décomposées en pixels (contraction de picture element) dont on codera, outre la position, l’intensité et la couleur. Une telle image numérique peut faire l’objet de traitements informatiques qui s’appliquent sur chacun des pixels qui la composent.
Des informations de nature apparemment très différente peuvent ainsi être représentées sous la forme d’une suite de chaînes de bits : elles sont numérisées. Cette forme permet, on l’a vu, d’y appliquer des algorithmes. Mais elle est aussi extrêmement bien adaptée à la transmission à distance, bien plus que les signaux continus d’origine. La raison, là encore, en est la stabilité du codage binaire et la possibilité de concevoir des codes qui permettent de vérifier que la transmission s’est effectuée sans erreur.
Mais garantir la transmission correcte d’un message est une chose, assurer sa confidentialité en est une autre. S’appuyant sur l’arithmétique, une branche des mathématiques considérée jusque là comme peu susceptible d’applications pratiques, les techniques de cryptographie sont désormais d’une utilisation courante, en particulier pour la sécurisation des paiements en ligne. La numérisation de l’information a ainsi conduit à l’association des ordinateurs et des télécommunications. Les matérialisations de cette association fructueuse sont omniprésentes. Qui ne connaît ainsi le réseau Internet qui permet l’échange de messages, mais aussi la consultation de sites au sein du web, cette gigantesque toile de connaissances ?
Cette association est au cœur d’un domaine scientifique dont l’autonomie n’est aujourd’hui plus contestée : les sciences et technologies de l’information et de la communication.
- Ifrah, G., Histoire universelle des chiffres, coll. « Bouquins », Robert Laffont, 1994.
- Doisy Ph., À la racine des nombres.
Une histoire du calcul numérique des origines à nos jours, Ellipses, 2006.
Cet article est paru dans la revue DocSciences n°5 Les clés de la révolution numérique, éditée par le CRDP de l’Académie de Versailles en partenariat avec l’Inria.
Newsletter
Le responsable de ce traitement est Inria. En saisissant votre adresse mail, vous consentez à recevoir chaque mois une sélection d'articles et à ce que vos données soient collectées et stockées comme décrit dans notre politique de confidentialité
Niveau de lecture
Aidez-nous à évaluer le niveau de lecture de ce document.
Votre choix a été pris en compte. Merci d'avoir estimé le niveau de ce document !