De l’algorithme au calcul mécanique

icône de pdf
Signaler

L’invention du calcul mécanique succède à une longue période durant laquelle les algorithmes de calcul devaient être déroulés à la main.

I Numération et calculs

1 Systèmes de numération

L’écriture des nombres remonte à plus de 5 000 ans. Différents systèmes de numération (additifs ou positionnels, avec ou sans zéro) dans différentes bases se sont succédés.

Les premiers algorithmes (le mot n’existait pas encore) sont des descriptions de méthodes de calcul (addition, multiplication) dans ces systèmes de numération. Les moyens utilisés sont alors les mains, des cailloux, des abaques (déplacement de jetons sur un plateau).

2 Les algoristes

L’efficacité du système positionnel indien disposant du zéro a provoqué son adoption par les Arabes au VIIIe siècle, puis par les Européens quatre siècles plus tard en particulier grâce à Léonard de Pise (dit Fibonacci).

Repère
À noter

C’est Al-Khwarizmi dans son ouvrage Al-jabr, qui a popularisé la numération indienne dans le monde musulman. Bien plus tard, au XIIe siècle, le titre de l’ouvrage et le nom de l’auteur ont respectivement donné les mots algorithme et algèbre.

Sont alors apparus les algoristes, utilisant plutôt le support écrit devenu moins coûteux, et déroulant des algorithmes de calcul utilisant la puissante numération positionnelle empruntée aux Arabes.

II Algorithmes célèbres

Dès l’Antiquité, des algorithmes complexes sont développés, et continuent de l’être.

1 Le plus grand diviseur commun de deux nombres

Au IVe siècle avant J.-C., Euclide explique comment, en retranchant le plus petit des nombres au plus grand et en recommençant la même opération, on finit par trouver le plus grand nombre qui divise les deux nombres de départ.

Euclide justifie son algorithme, mais son application ne nécessite pas de comprendre la justification : il suffit de suivre les consignes à la lettre, et ça fonctionne. C’est le principe même d’un algorithme.

2 Calcul de racines carrées

Au premier siècle de notre ère, Héron d’Alexandrie montre comment extraire une racine carrée par approximations successives.

Pour trouver la racine carrée de 720, on part de la racine du carré parfait le plus proche de 720, soit 27 (272=729). Puis on fait la moyenne entre cette première approximation (27) et le quotient de 720 par 27 : 27+720272. Le résultat obtenu, 1616, est une meilleure approximation de 720 que 27. On recommence en partant de 1616. Cet algorithme converge vers la racine carrée cherchée.

III Calcul mécanique

1 Naissance des machines de calcul

Profitant des progrès dans les mécanismes d’horlogerie, les premières machines de calcul mécanique apparaissent au XVIIe siècle. L’« horloge à calculer » due à Wilhelm Schickard est suivie de peu par la Pascaline inventée indépendamment par Blaise Pascal à l’âge de dix-neuf ans.

D’autres machines (cylindre de Leibniz, machine de Morland…) voient le jour, contemporaines des calculateurs humains qui utilisent alors des tables (multiplications, logarithmes…).

2 Machine analytique et première programmeuse

05230_chap02_icono02

Au XIXe siècle, Charles Babbage, inspiré par le métier à tisser Jacquard, invente le concept de la machine analytique (entièrement mécanique), comportant de la mémoire, une unité de calcul (le moulin) et une unité de commande. Elle est capable de suivre des instructions, préfigurant ainsi les premiers ordinateurs.

Repère
À noter

Ada Lovelace est donc la première programmeuse de l’histoire et le langage Ada, inventé dans les années 1980, lui doit son nom.

Impossible à construire à l’époque, cette invention suscita la collaboration de Babbage avec Ada Byron, comtesse de Lovelace, qui comprit ce que la machine analytique pourrait réaliser et écrivit ses premiers programmes. Elle indique dans une célèbre note : « La machine analytique n’a pas de prétention à donner naissance à quoi que ce soit. Elle peut exécuter tout ce que nous savons lui ordonner d’exécuter […] il est très probable qu’elle exerce une influence indirecte et réciproque sur la science elle-même. »