1NSI : Histoire des Ordinateurs : Turing & ses machines⚓︎
Machines de Turing, \(1936\)⚓︎
Biographie d'Alan Turing,
, \(1912-1954\)⚓︎


En \(1936\), à \(24\) ans, un jeune mathématicien anglais de génie, Alan Turing, publie un article fondateur « On Computable Numbers, with an Application to the Entscheidungsproblem () »
/ « Sur les nombres Calculables, avec une application au problème de la Décision »
, dans lequel il invente une expérience de pensée que l'on nommera par la suite une machine de Turing. Une machine de Turing est une sorte de modèle (de calcul) abstrait de machine, se voulant universelle au sens où la machine peut calculer tout ce qui est calculable... (dans un certain sens qu'il définit/invente au passage), en particulier les mêmes choses que les programmes/algorithmes d'un ordinateur moderne.
Au passage:
* Il donne une définition de ce qu'est un nombre réel calculable : c'est un réel pour lequel il existe un algorithme ou une machine de Turing permettant d'énumérer la suite de ses chiffres (éventuellement infinie), ou plus généralement des symboles de son écriture sous forme de chaîne de caractères. De manière plus générale, et équivalente, un nombre réel est calculable si on peut en calculer une approximation aussi précise que l'on veut, avec une précision connue.
* il invente au passage toute la théorie de la Calculabilité, indépendamment et simultanément qu'Alonzo Church
* il démontre que le problème de l'arrêt pour une machine de Turing ne peut pas être résolu par un algorithme, autrement dit le problème de l'arrêt n'est pas 987 : ble/indécidable : il n’est pas possible de décider avec un algorithme (c’est-à-dire avec une machine de Turing) si une machine de Turing donnée s’arrêtera (sur une entrée donnée), ou pas
* il résout le problème fondamental de la Décidabilité en arithmétique, indépendamment et simultanément qu'Alonzo Church : Pour tout problème \(P\), existe-t-il toujours un algorithme qui résout ce problème ? La réponse est NON...
* il donne un sens plus précis à la notion de programme et de programmation.
Dès Septembre \(1938\), Alan Turing travaille pour la GC&CS (Governement Code & Cypher School), l'ancêtre de l'actuel GCHQ - Governement Communications HeadQuarters (Service Gouvernemental du Royaume-Uni responsable du Renseignement d'origine Électromagnétique et de la sécurité des Systèmes d'Information)
Condamnation pour Homosexualité & Mort⚓︎
De Cambridge à Bletchley Park, Turing ne faisait aucun mystère de son orientation sexuelle, ouvertement homosexuel, il ne cachait pas ses aventures. Il était d'ailleurs loin d'être le seul. En \(1952\), sa maison de Manchester est cambriolée. Turing porte plainte. Arrêté, le cambrioleur dénonce le complice qui lui avait indiqué l'affaire, un ex-amant occasionnel de Turing. Celui-ci ne nie pas cette ancienne relation. Tous deux sont inculpés d'« indécence manifeste et de perversion sexuelle » d'après le Criminal Law Amendment Act (\(1885\)). Quelques années plus tôt, ce n'aurait été qu'un fait divers (?). Mais, au début des années \(1950\), une affaire retentissante d'espionnage scientifique au profit de l'Union soviétique où sont impliqués des intellectuels anglais homosexuels surnommés les Cinq de Cambridge a rendu les services de contre-espionnage britanniques et américains sensibles à un profil comme celui de Turing.
Le procès est médiatisé. Hugh Alexander fait de son confrère un brillant portrait, mais il est empêché de citer ses titres de guerre par le Secret Act. Turing est mis en demeure de choisir : incarcération ou castration chimique réduisant sa libido. Il choisit le traitement, d'une durée d'un an, avec des effets secondaires temporaires (le coureur à pied svelte qu'il était devient gros, impuissant, ses seins grossissent comme ceux d'une femme), et surtout des effets psychiques profondément démoralisants. Alors qu'il a été consacré, en \(1951\), en devenant membre de la Royal Society, à partir de \(1952\) il est écarté des plus grands projets scientifiques. Toutefois, en avril \(1953\), la « cure » se termine, ses effets s'estompent et Turing recommence à faire des projets de recherche, de voyages en France et en Méditerranée.
Le \(8\) juin \(1954\), dans l'après-midi, Turing est retrouvé mort dans son lit par sa gouvernante, avec une pomme croquée sur sa table de nuit. L'autopsie conclut à un suicide par empoisonnement au cyanure, même si sa mère tenta d'écarter cette thèse. Le moyen d'ingestion du poison aurait été cette pomme qu'il aurait partiellement mangée : une légende tenace et démentie y voit l'origine du logo de la firme Apple.
Machines de Turing⚓︎
Introduction⚓︎
Le machine de Turing est un modèle (de calcul) abstrait/virtuel de machine, donc ce n'est pas à proprement parler une vraie machine concrète/mécanique, mais plutôt un concept mathématique abstrait, imaginé par le jeune mathématicien anglais de génie Alan Turing en \(1936\) :
* initialement et historiquement, pour répondre à une question mathématique posée \(8\) ans plus tôt par le mathématicien allemand David Hilbert
. Il s'agit du problème de la Décidabilité, (en allemand Entscheidungsproblem
) que l'on pourrait formuler sous la forme : Existe-t-il un algorithme qui décide (toujours) si une proposition (quelconque) énoncée dans un système logique est valide ou non ?
* Au passage, il donne un sens plus détaillé de la notion de "procédure mécanique" et que l'on appellera plus tardivement un programme/algorithme.
Son fonctionnement peut sembler (très/trop?) simpliste à première vue, mais il est en fait totalement révolutionnaire parmi les appareils mécaniques de calculs existants de l'époque, à tel point que la machine se rapproche théoriquement d'un ordinateur moderne :

<div style="float:right; margin-right:20%; margin-top:-2%;">
| État | Lit | Ecrit | Déplace | Suivant|
|:-:|:-:|:-:|:-:|:-:|
| $e_1$ | $x$ | $y$ | *gauche* ou $\leftarrow$ | $e_2$ |
</div>
<env>Notations</env> On écrit quelquefois <enc>$\delta(e_1,x) = (y, \leftarrow, e_2)$</enc> $\,\,$ ou bien :
pour modéliser l'action/transition/instruction élémentaire suivante :
> * Si, à un instant donné, la machine :
> * se trouve dans l'état $e_1$, et que
> * la tête de lecture lit le symbole $x$ (dans la case courante),
> * Alors la machine :
> * écrit $y$ à la place de $x$ (dans la case courante),
> * déplace le **ruban** vers la gauche
> * passe dans l'état $e_2$
La <bred>Table des Actions/Transitions</bred> est la Table contenant exhaustivement, et dans le bon ordre, TOUTES les Actions/Transitions à exécuter
- SI la machine arrive à l'un des états connus comme
états finaux , ouétats acceptants , ALORS la machine s'arrête : dans ce cas, on note \(prog(m)\) le contenu du ruban SINON, la machine ne s'arrête pas, et l'on a une boucle infinie : dans ce cas \(prog(m)\) n'est pas défini
une tentative naïve de Définition⚓︎
Plusieurs définitions formelles et rigoureuses existent, toutes très proches les unes des autres, nous nous contenterons d'une description un peu plus détaillée :
Une
- Un
Ruban Infini (vers la gauche et vers la droite) de cases consécutives, dans lesquelles on peut lire/écrire : - des symboles d'un
alphabet de travail \(\,\Gamma\) fini donné : Tout symbole est possible, mais en pratique, souvent en binaire : des \(0\) ou des \(1\) - un symbole spécial appelé symbole blanc ou symbole vide, et noté
VIDE ouvide (quelquefois \(0\)) par la suite. Par défaut : toutes les cases contiennent initialement le symbole blanc/vide. - Une
Tête de lecture/écriture qui peut : - être positionnée sur une seule case à la fois
- lire le contenu de la case
- écrire dans la case : e.g. un \(0\) ou un \(1\), ou d'une manière générale, tout autre symbole de l'alphabet de travail \(\, \Gamma\)
-
être déplacée :
- déplacer le Ruban vers la gauche, noté
\(\leftarrow\) \(\Leftrightarrow\) déplacer Tête vers la droite, ou bien - déplacer le Ruban vers la droite, noté
\(\rightarrow\) \(\Leftrightarrow\) déplacer Tête vers la gauche
ATTENTION : la convention est de donner les déplacements du Ruban (et non PAS de la Tête), mais cela peut varier selon les auteurs et les contextes
* un
registre d'état qui mémorise l'état courant de la machine de Turing, sorte de point intermédiaire dans le déroulement de la procédure mécanique : * Il existe un état spécial, appeléétat initial \(e_0\) (quelquefois \(e_1\)), qui est l'état de départ de la machine avant son exécution : certaines cases peuvent être préremplies avec des symboles de l'alphabet, et on connaît la position de la tête de lecture * Il existe un ensemble fini \(Q\) d'états (intermédiaires) possibles : \(Q=\{e_1, e_2, e_3, ...\}\), chaque état étant caractérisé par la donnée de : * le contenu du ruban * la position de la tête de lecture/écritureLogique d'Exécution Le comportement de la machine (comment déterminer la ou les actions à faire) est déterminé par l'état dans lequel elle se trouve ainsi que par la valeur lue dans la case courante, on en déduit alors :quelle valeur écrire dans la case courante,
quel est le déplacement du Ruban,
quel doit être l'état suivant * un ensemble d'états dits
états acceptants \(F \subseteq Q\), ouétats finaux ouétats terminaux (il peut y en avoir plusieurs), qui correspondent à la fin de la procédure d'exécution de la machine : tous les états finaux seront notésFIN oufin * UneTable d'Actions/Transitions notée \(\delta\), qui résume en une seule table (de plusieurs lignes), toutes les actions/transitions à faire étant donné l'état courant, et la valeur lue de la case courante : c'est cette Table d'Actions/Transitions qui correspond en fait à notre vision moderne d'un algorithme. - déplacer le Ruban vers la gauche, noté
librement adaptée d’une applet Java écrite par Hamdi Ben Abdallah.
Machine Universelle de Turing⚓︎
Jusqu'à présent, nous n'avons pas dit comment, ni où, était stockées les instructions de la table d'actions/transitions dans une machine de Turing \(M\) : nous avons simplement supposé que la table d'actions/transitions faisait partie intégrante de la machine \(M\). Initialement, Turing envisage de stocker ces informations dans un deuxième ruban, avant de s'apercevoir qu'une telle deuxième machine est en fait équivalente à une machine (dite machine Universelle de Turing \(U\)) avec un seul ruban.
Une machine Universelle de Turing est donc un concept abstrait qui prouve de manière théorique qu'une machine calculante (futurs ordinateurs) peut contenir:
- les données (i.e. les entrées et leurs calculs - intermédiaires ou finaux), mais aussi
- les programmes/algorithmes (i.e. les instructions de la procédure mécanique stockées de la table d'actions/transitions) sous forme d'une chaîne de caractère de l'alphabet de travail (quelconque, mais en pratique, souvent binaire).
Ce principe révolutionnaire en fait le fondement intellectuel de l'architecture matérielle des tout premiers vrais ordinateurs, connue sous le nom d'Architecture de Von Neuman, conçus par John Von Neumann dès \(1946\).
vs une **machine Universelle de Turing $U$**
- l'ordinateur à programme enregistré dit à architecture de Von Neumann, mais aussi de :
- Un Système d'Exploitation (un programme qui peut exécuter tout programme)
- Un Compilateur (un programme qui exécute tout programme, et le convertit un autre chose)
- Le Jeu de la vie est une machine Universelle de Turing : un Jeu qui peut exécuter n'importe quel Jeu...et même n'importe quel autre programme, et dans lequel on peut reproduire toutes les opérations booléennes et arithmétiques
de fréquence $0,5 Hz$, (durée: $16$ min $44$)
Conclusion⚓︎
On retrouve dans une machine Universelle de Turing tous les principaux éléments précurseurs des ordinateurs modernes :
- un ruban qui modélise la mémoire
- un alphabet de travail pour modéliser le codage binaire (\(0\) et \(1\)) de l'information
- la table d'actions/transitions qui modélisent les instructions d'un programme/algorithme
- Un cycle (état + lecture \(\Rightarrow\) écriture + état suivant + déplacement tête), pour modéliser le cycle d'horloge, et donc aussi la fréquence/cadence d'horloge.
Machines Turing-complètes⚓︎
On dit qu'un instrument de calcul, contruit en tant que vrai prototype physique de machine calculante, est
Test de Turing \(=\) Imitation Game⚓︎
Dans l'article « Computing Machinery and Intelligence » (Mind, octobre \(1950\)), Turing explore le problème de l'intelligence artificielle et propose une expérience maintenant connue sous le nom de Test de Turing ou Jeu de l'Imitation (Imitation Game ...) : il s'agit de ce que l'on appelle aujourd'hui un chatbot (agent conversationnel), càd d'une méthode qui permettrait de vérifier qu'un programme est capable de simuler les réponses d'un être humain sans que celui-ci ne se rende compte qu'il parle avec un ordinateur. De nos jours, le test consiste à devoir "tromper au moins \(30\%\) de juges humains (des chercheurs) pendant \(5\) minutes à travers d'un chat (échanges de textes écrits)". En \(2014\), un ordinateur réussit à se faire passer pour la première fois pour un humain (certes, dans le cas d'un garçon de \(13\) ans, d'origine ukrainienne, ce qui justifie que le résultat soit contesté par certains) sur des thèmes non choisis à l'avance.
Références : voir par exemple 1. slate.fr, 2014 ou 2. Le monde, 2014. Ce résultat est néanmoins contesté : 3 Blog de Jean-Paul Delahaye...
En \(1950\), Turing fait néanmoins le pari que « d'ici \(50\) ans, il n'y aura plus moyen de distinguer les réponses données par un homme ou un ordinateur, et ce sur n'importe quel sujet » : pari tenu ?
-
\(1997\) : l’ordinateur Deep Blue développé par IBM, conçu spécialement pour le jeu d’échecs, a battu Garry Kasparov
alors champion du monde et, depuis, d’autres machines ont atteint des résultats comparables. Même les bons joueurs d’échecs reconnaissent que, face à ce genre de programmes et sans information particulière, il leur est impossible de savoir s’ils jouent contre une machine ou contre un être humain. C’est une forme de test de Turing (où le dialogue est limité à des échanges de coups)
-
\(2011\) : le programme d'Intelligence Artificielle (IA) nommé Watson, développé par la firme IBM, a réussi à gagner un concours contre les champions du jeu Jeopardy (où des questions générales sont posées en langage naturel). Cette victoire a été analysée comme la réussite d’un test de Turing partiel mais, cette fois, en s’approchant un peu plus près des conditions imaginées par Turing pour son jeu de l’Imitation.
-
\(2017\) : le programme d'IA AlphaGo (qui utilise la méthode de Monte-Carlo) développé par l'entreprise Deepmind
(créée en \(2010\), et rachetée par Google en \(2014\)), est le premier programme à battre Ke Jie, alors champion du monde du Jeu de Go. En \(2015\), AlphaGo avait déjà battu Fan Hui un joueur professionnel français de Go (2ème dan, et champion européen), puis en \(2016\) il bat largement Lee Sedol, un des meilleurs joueurs mondiaux (9ème dan, considéré le meilleur du monde). AlphaGo combine des techniques d'apprentissage automatique, et de parcours de graphes, associés à des données issues de nombreuses parties jouées avec des humains, d'autres ordinateurs et surtout lui-même. En \(2017\) encore, AlphaGo est remplacé par une version améliorée AlphaGo Zero, qui n'utilise plus la méthode de Monte-Carlo, ni a le besoin d'aucune donnée provenant de parties jouées précédemment entre humains : il joue seulement contre lui-même pour apprendre (aprentissage automatique) Toujours en \(2017\), Deepmind développe AlphaZero (github page) qui généralise l'approche d'AlphaGo Zero à d'autres Jeux que le Go. Dès \(2018\), Deepmind annonce le développement d'AlphaFold, qui prédira dès \(2020\) la structure des protéines de manière révolutionnaire.
les machines La Bombe (de Turing)
\(1938\) vs Enigma
\(1918\)⚓︎
Introduction⚓︎
Les machines Enigma, \(1918\)⚓︎

Les machines Enigma, ou machines M pour les allemands, sont des machines électromécaniques portatives servant au chiffrement et déchiffrement, brevetées et développées dès \(1918\) par l'ingénieur en électricité allemand Arthur Scherbius. Pour protéger ses propres brevets, il achète en \(1927\) les droits d'une machine à rotors, développée et brevetée dès \(1919\) par le chercheur hollandais Hugo Koch. Initialement des machines commerciales, dont les premières ventes (même internationales, dès \(1923\)) sont un échec total (pour cause de prix démesuré [?] : l'équivalent de \(30000\,\$\) de nos jours), la machine sera achetée dès \(1926\) par la marine allemande, et dès \(1929\) par l'armée de terre allemande, puis son usage sera étendu à toutes les forces armées allemandes.
La Bombe, \(1938\)⚓︎

La Bombe (elle fait tic-tac quand elle fonctionne) fut un instrument électromécanique initialement inventé et utilisé par les cryptologues polonais en \(1938\) puis modifiée par la suite par les britanniques en \(1940\) à Bletchley Park, grâce à la collaboration des polonais, afin de casser les codes allemands d'Enigma. La première machine La Bombe est conçue vers octobre \(1938\) par le cryptologue polonais Marian Rejewski travaillant au Biuro Szyfrów. En mai \(1940\), les Allemands perfectionnent leur système cryptographique, Turing reprend l'idée des Polonais et conçoit une machine plus performante, la Bombe de Turing, qui sera par la suite modifiée par un autre mathématicien, Gordon Welchman. Turing prendra ensuite la tête de l’équipe chargée de trouver les clés de l’Enigma.