Adloun

Histoire de l'informatique

Cours · NSI (terminale), chapitre 15 · terminale, spécialité numérique et sciences informatiques · le début du chapitre, la suite sur Adloun

La machine de Turing : un ruban de symboles et une tête de lecture qui change d'état.

L'informatique donne l'impression d'être née hier. Elle a pourtant une longue histoire, et cette histoire n'est pas un décor : les notions étudiées dans ce livre — les structures de données, la récursivité, la programmation objet, les bases de données, les réseaux — sont apparues à des dates précises, pour résoudre des problèmes précis, et portent encore la marque de ces problèmes.

Ce chapitre n'est donc ni une galerie de portraits ni une liste de dates à réciter. C'est le récit de quelques déplacements d'idées, où l'on posera chaque fois deux questions : quel problème cherchait-on à résoudre ? et qu'est-ce que la solution a rendu possible ?

Un fil traverse l'ensemble : le déplacement des rôles respectifs du logiciel et du matériel. Pendant des siècles, une machine ne sait faire que ce pour quoi elle a été construite ; en 1936, on comprend qu'une seule machine peut les imiter toutes ; en 1948, le programme entre dans la mémoire et devient une donnée comme les autres ; en 1969, il devient un produit que l'on vend ; depuis les années 2000, un service auquel on se connecte.

15.1 Introduction : lire l'histoire en informaticien

iRemarqueTrois précautions de méthode
  • Une invention n'a presque jamais une seule date. Entre l'idée, le prototype, la publication et l'usage courant, il s'écoule souvent dix ans. Écrire « vers 820 » ou « 1957-1960 » est une information, pas une négligence.
  • Les paternités sont souvent disputées. Qui a construit le premier ordinateur ? Qui a inventé le transistor, le circuit intégré, le microprocesseur ? La réponse dépend chaque fois de la définition adoptée. Nous signalerons ces disputes plutôt que de les trancher.
  • Les belles anecdotes sont souvent fausses. Nous en corrigerons quelques-unes, non par plaisir, mais parce que vérifier une attribution est exactement le même geste intellectuel que vérifier un programme.

La frise ci-dessous donne les repères principaux. Ses trois bandes n'ont pas la même échelle : la première couvre deux millénaires, la deuxième un siècle et demi, la troisième un demi-siècle.

15.2 Avant l'ordinateur : l'algorithme, puis le calcul mécanique

15.2.1 Des algorithmes sans machine

Pendant des siècles, l'algorithme existe sans qu'aucune machine ne puisse l'exécuter : il est destiné à un être humain muni d'un papier et de patience.

Définition 15.1Algorithme

Un algorithme est une suite finie d'instructions non ambiguës qui, à partir de données, produit un résultat en un nombre fini d'étapes. Le mot vient du nom latinisé du mathématicien persan al-Khwârizmî (vers 780-850), dont le traité sur le calcul indien fut connu en Europe sous le titre Algoritmi de numero indorum. Son autre ouvrage, consacré vers 820 à l'al-jabr, a donné le mot « algèbre ».

Exemple 15.2Le plus vieil algorithme encore enseigné

L'algorithme du PGCD figure dans les Éléments d'Euclide, vers 300 avant notre ère (livre VII). Sa version moderne tient en trois lignes :


def pgcd(a, b):
    while b != 0:
        a, b = b, a % b      # invariant : pgcd(a, b) ne change pas
    return a

print(pgcd(1071, 462))       # affiche 21

Vingt-trois siècles séparent l'énoncé de ce programme, et pourtant l'invariant est le même : remplacer le couple par un couple plus petit ayant le même PGCD.

Deux autres héritages traversent l'histoire : le crible d'Ératosthène (IIIe siècle avant notre ère), et surtout la numération de position venue de l'Inde (Brahmagupta, 628), transmise par al-Khwârizmî puis diffusée en Europe par Fibonacci (Liber abaci, 1202). Sans elle, aucun calcul mécanique n'aurait été possible : c'est déjà une leçon d'informatique, celle du choix de la représentation des données.

15.2.2 Les premières machines à calculer (XVIIe siècle)

iRemarqueCalculer n'est pas programmer

Ces machines sont admirables, mais elles ont toutes la même limite : elles exécutent une opération, celle que leur mécanique impose. Rien en elles ne joue le rôle d'un programme. Pour que le programme apparaisse, il faut qu'une idée surgisse ailleurs, dans l'industrie textile.

15.2.3 1804 : le métier Jacquard, ou le motif qui quitte la machine

Joseph-Marie Jacquard perfectionne en 1801-1804 un métier à tisser commandé par un ruban de cartes perforées, aboutissement des essais de Basile Bouchon (1725) et de Vaucanson (1745). Le motif tissé n'est plus fixé par la construction du métier : il est écrit sur les cartes. Changer de dessin, c'est changer de cartes, non de machine.

C'est le premier exemple de la séparation qui définira l'informatique : d'un côté une machine générale, de l'autre une description modifiable de ce qu'elle doit faire. Babbage s'en souviendra trente ans plus tard, Hollerith un demi-siècle après lui.

15.3 Le XIXe siècle : le programme, la logique et les données

15.3.1 Babbage : une machine qui suit un programme

Charles Babbage (1791-1871) part d'un problème concret : les tables numériques utilisées par les marins et les ingénieurs sont truffées d'erreurs de calcul et de copie. Sa réponse est d'automatiser le calcul et l'impression. En 1822, il propose la machine à différences, financée dès 1823 par le gouvernement britannique et jamais achevée — le Science Museum de Londres en a construit un exemplaire d'après ses plans : le mécanisme de calcul a fonctionné en 1991, l'imprimante en 2002. Puis, à partir de 1834, il conçoit une machine d'une tout autre ambition.

Définition 15.3La machine analytique de Babbage (1834)

Conçue mais jamais construite, la machine analytique réunit déjà les organes d'un ordinateur :

  • le moulin (mill) : l'organe de calcul ;
  • le magasin (store) : la mémoire, prévue pour mille nombres de cinquante chiffres ;
  • les cartes perforées, empruntées à Jacquard : le programme et les données, à l'extérieur de la machine ;
  • le branchement conditionnel : la machine peut sauter des cartes selon un résultat, donc répéter et décider.

Il lui manque un seul trait de l'ordinateur moderne : le programme n'est pas rangé dans la mémoire, il reste sur les cartes.

15.3.2 Ada Lovelace et le premier algorithme publié

Ada Lovelace (1815-1852) traduit en 1843 un article que l'ingénieur italien Luigi Menabrea avait consacré en 1842 à la machine analytique. Elle y ajoute sept notes, signées de ses initiales et plus longues que le texte traduit. La dernière, la note G, contient le déroulé complet du calcul des nombres de Bernoulli par la machine.

iRemarque« Le premier programme de l'histoire » : ce que l'on peut dire

L'expression est répandue, et discutée. Ce qui est établi :

  • Babbage avait écrit dès 1836-1837, dans ses carnets, des programmes d'essai pour sa machine ; il ne les a pas publiés de son vivant ;
  • la note G, rédigée en 1843 en correspondance suivie avec Babbage, est le premier algorithme publié destiné à une machine ;
  • Lovelace est la première à écrire que la machine pourrait dépasser les nombres et manipuler des symboles quelconques — sons, lettres — si l'on savait les coder.

Dire « la première programmeuse » est défendable ; dire « elle a écrit le tout premier programme » l'est moins. La dispute porte sur le mot « premier », pas sur la qualité du travail.

15.3.3 Boole, puis Hollerith : la logique et les données

George Boole publie en 1847 The Mathematical Analysis of Logic, puis en 1854 An Investigation of the Laws of Thought : le raisonnement logique obéit à des règles algébriques, sur des valeurs qui ne sont ni des longueurs ni des nombres, mais le vrai et le faux. Pendant quatre-vingts ans, son algèbre reste une curiosité de logicien ; elle deviendra en 1937 la théorie des circuits, c'est-à-dire l'électronique numérique tout entière.

Le recensement américain de 1880 avait demandé près de huit ans de dépouillement manuel. Herman Hollerith dépose en 1884 les brevets d'une machine à cartes perforées qui trie et compte automatiquement ; employée pour le recensement de 1890, elle donne le décompte de la population en quelques semaines et l'ensemble des résultats en deux à trois ans, sur un volume bien supérieur. La société qu'il fonde en 1896 fusionne en 1911 dans la Computing-Tabulating-Recording Company, rebaptisée IBM en 1924. Le traitement automatique des données de masse est né avant l'ordinateur — et, avec lui, la question de ses usages : ces mêmes machines serviront au meilleur comme au pire au cours du XXe siècle.

15.4 1936 : la machine universelle

En 1928, David Hilbert pose le problème de la décision : existe-t-il une procédure mécanique qui, pour tout énoncé mathématique, décide s'il est démontrable ? Répondre suppose de définir ce que « mécanique » veut dire. Deux réponses paraissent en 1936, et elles sont négatives : celle d'Alonzo Church en avril, par le lambda-calcul ; celle d'Alan Turing (1912-1954), soumise en mai sous le titre On Computable Numbers, with an Application to the Entscheidungsproblem et publiée dans les Proceedings of the London Mathematical Society en 1936-1937.

Définition 15.4Machine de Turing et machine universelle

Une machine de Turing est un modèle abstrait de calcul : un ruban infini divisé en cases, une tête qui lit et écrit un symbole à la fois, un état interne, et une table de règles indiquant, pour chaque couple (état, symbole lu), quoi écrire, où se déplacer et dans quel état passer.

Turing démontre en 1936 l'existence d'une machine universelle : une machine de Turing particulière qui, recevant sur son ruban la description d'une machine quelconque et ses données, se comporte exactement comme elle.

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre