« Ordinateur à programme enregistré » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Damien.b (discuter | contributions)
m Conditionnel puisque opinion
Damien.b (discuter | contributions)
Chapitre "Paradigmes de programmation"
Ligne 27 : Ligne 27 :


Certains enfin affirment que l'[[IBM SSEC]], opérationnel en {{date-|janvier 1948}}, aurait été le premier ordinateur à programme enregistré<ref name="Pugh1995" />. Cette affirmation est controversée, à cause de la nature hiérarchique de la mémoire de l'IBM SSES, et à cause de certains aspects de ses opérations, comme l'accès aux relais ou aux rubans magnétiques qui fonctionnaient par branchements manuels<ref name="ref3" />.
Certains enfin affirment que l'[[IBM SSEC]], opérationnel en {{date-|janvier 1948}}, aurait été le premier ordinateur à programme enregistré<ref name="Pugh1995" />. Cette affirmation est controversée, à cause de la nature hiérarchique de la mémoire de l'IBM SSES, et à cause de certains aspects de ses opérations, comme l'accès aux relais ou aux rubans magnétiques qui fonctionnaient par branchements manuels<ref name="ref3" />.

== Paradigmes de programmation ==
Le concept de programme enregistré, initialement apparu sur un mémo d'IBM en 1949<ref>{{Ouvrage|langue=en|auteur1=Haigh, T.|titre=The Nature of Computation. Logic, Algorithms, Applications|passage=p.247|éditeur=Springer, 2013|date=2013}}</ref>, possède des contours assez flous, cause d'erreurs de classification et de critiques<ref>{{Ouvrage|langue=en|auteur1=Haigh, T.|titre=Reconsidering the Stored-Program Concept’, IEEE Annals of the History of Computing, vol. 36|passage=p.4-17|date=2014}}</ref>. Afin de lever toute ambiguïté, il lui est parfois préféré une hiérarchisation des paradigmes de programmation, permettant tant de clarifier que de catégoriser les différentes approches.<ref>{{Chapitre|langue=en|prénom1=B. Jack|nom1=Copeland|prénom2=Giovanni|nom2=Sommaruga|titre chapitre=The Stored-Program Universal Computer: Did Zuse Anticipate Turing and von Neumann?|titre ouvrage=Turing’s Revolution: The Impact of His Ideas about Computability|éditeur=Springer International Publishing|date=2015|isbn=978-3-319-22156-4|doi=10.1007/978-3-319-22156-4_3#sec4|lire en ligne=https://doi.org/10.1007/978-3-319-22156-4_3|consulté le=2022-09-08|passage=43–101}}</ref>

=== Paradigme 1 ===
Dans ce premier paradigme, la programmation consiste en un recâblage physique de la machine à travers des fiches et des interrupteurs. Cette approche possède certains avantages intrinsèques, telle que la très grande vitesse d’exécution des programmes.

La série des calculateurs Collossus, ou encore l’ENIAC dans sa configuration initiale de 1945, se sont ainsi distingués des autres machines de leur époque par leur vitesse de traitement.

Le principal inconvénient de ce paradigme est la difficulté inhérente au câblage des programmes, rendant leur mise en œuvre et leur débogage lent et difficile.

=== Paradigme 2 ===
Ce paradigme utilise une programmation par instructions, ce qui réduit le temps de mise en œuvre des programmes.

Les instructions sont généralement codées sous forme numérique (typiquement binaire ou décimale) et enregistrées sur un support externe, tels que des bandes magnétique ou des cartes perforées. Le programme n’est pas enregistré dans la machine mais exécuté instruction par instruction depuis un support externe en lecture seule.

Cette approche comprend plusieurs inconvénients :

* La vitesse d’exécution est égale à la vitesse de lecture du support

* Le programme ne peut utiliser que des branchements très proches (s’il possède même la possibilité d’effectuer des branchements), ou nécessite sinon une action manuelle pour remplacer les cartes perforées en exécution, ou encore rembobiner le ruban perforé vers le branchement souhaité. Pour cette raison, les machines utilisant le paradigme P2 sont rarement Turing-complètes, ou ne le sont que de façon théorique.

Des exemples de machines utilisant ce paradigme de programmation sont la [[machine analytique]] de Charles Babbage, ou encore les Zuse Z1, Z2, Z3 et Z4.

=== Paradigme 3 ===
Ce paradigme est le premier membre de la famille des architectures à programme enregistré.

Les instructions deviennent enregistrées dans la mémoire de la machine, permettant de réaliser des branchements conditionnels, des boucles, des fonctions, et d’exécuter le programme à vitesse électronique. Dans ce paradigme, la mémoire est rapide d’accès mais typiquement en lecture seule, et les processus ne peuvent modifier la mémoire d’instructions.

Un exemple d’une machine employant ce paradigme est l’ENIAC dans sa configuration de 1948.

=== Paradigme 4 ===
Le paradigme P4 reprend le fonctionnement du P3, mais emploie une mémoire modifiable, permettant aux processus tant de lire que d’écrire des instructions enregistrées en mémoire.

Le premier exemple théorique de ce paradigme fût publié par Alain Turing en 1936 avec le concept de [[Machine de Turing universelle|Machine de Turing Universelle]]. L’EDSAC, le Manchester Mark 1, ou l’ENIAC à la fin de sa carrière sont des exemples de machines célèbres employant ce paradigme de façon concrète.

==== Paradigmes P5 et P6 ====
Le paradigme P4 contient le potentiel pour un programme d’éditer l’espace mémoire dédié aux instructions. Dans le paradigme P5, ce potentiel est réalisé mais se limite à l’insertion, la manipulation et la suppression d’instructions.

La Machine de Turing Universelle est là aussi une bonne illustration de ce paradigme.

Le paradigme P6, quant à lui, est très proche du paradigme P5, mais permet de concevoir des programmes pouvant produire de nouvelles instructions à la demande au cours de son exécution, et donc entièrement auto-modifiable. De plus, il permet à un programme de modifier à chaud le code d’un autre programme.

Ce paradigme fût conceptualisé avec le « First Draft of a Report on the EDVAC » en 1945, selon une inspiration du fonctionnement du cerveau humain. Turing et Zuse ont eux aussi mentionné l’idée d’un programme pouvant s’automodifier, ou en modifier un autre en temps réel.


== Références ==
== Références ==

Version du 8 septembre 2022 à 17:16

Un ordinateur à programme enregistré (ou calculateur à programme enregistré; en anglais stored-program computer) est un ordinateur qui enregistre les instructions des programmes qu'il exécute dans sa mémoire vive[1].

La définition précédente est souvent étendue pour exiger que le traitement des instructions et des données en mémoire doive être interchangeable et uniforme[2],[3],[4].

Un ordinateur avec une architecture de von Neumann enregistre ses données et ses instructions dans la même mémoire; un ordinateur avec une architecture Harvard enregistre ses données et ses instructions dans des mémoires séparées[5],[6]

Histoire

L'expression ordinateur à programme enregistré est parfois utilisée comme synonyme d'architecture de von Neumann[7],[8]. Cependant, le professeur Jack Copeland considère qu'il est « historiquement inapproprié d'appeler les ordinateurs à programme enregistré des machines de Von Neumann »[9]. Hennessy et Patterson ont écrit que les premières machines de Harvard étaient considérées comme « réactionnaires par les défenseurs des ordinateurs à programme enregistré[10] ».

Le concept d'ordinateur à programme enregistré remonte à un article de 1936 sur une machine de Turing universelle[11]. Von Neumann connaissait cet article et l'a fait connaître à ses collaborateurs[12].

Plusieurs des premiers ordinateurs n'étaient pas programmables. Ils n'exécutaient qu'un seul programme câblé dans l'ordinateur. Comme ces ordinateurs ne contenaient pas d'instructions, ils n'avaient pas besoin de mémoire. D'autres ordinateurs, bien que programmables, conservaient leurs programmes sur des cartes perforées qui étaient physiquement fournies à l'ordinateur au besoin.

En 1936, Konrad Zuse a anticipé, comme démontré par ses deux applications de brevet, que les instructions de l'ordinateur pouvaient être conservées dans la même mémoire que les données.

En avril 1948, la reconversion de l'ENIAC en ordinateur à programme enregistré s'achève. Il exécute son premier programme le 12 avril, et son premier programme de production le 17 avril. [13],[14] La simulation de Monté Carlo exécutée le 12 avril 1948 par l'ENIAC est la plus ancienne trace de programme enregistré connue à ce jour. [15]

Le Small-Scale Experimental Machine (SSEM) de l'Université de Manchester[16] est également considéré comme le premier ordinateur électronique à avoir exécuté un programme enregistré en mémoire ; cet événement s'est produit le [17],[18]. Néanmoins, le SSEM n'était pas considéré comme un ordinateur achevé, mais plutôt comme une démonstration de faisabilité en vue de la construction de l'ordinateur Manchester Mark 1.

Le , le EDSAC à Cambridge exécute un programme enregistré en mémoire et, de ce fait, est aussi considéré comme le « premier ordinateur électronique numérique à programme enregistré complet et opérationnel »[19].

Certains enfin affirment que l'IBM SSEC, opérationnel en , aurait été le premier ordinateur à programme enregistré[20]. Cette affirmation est controversée, à cause de la nature hiérarchique de la mémoire de l'IBM SSES, et à cause de certains aspects de ses opérations, comme l'accès aux relais ou aux rubans magnétiques qui fonctionnaient par branchements manuels[21].

Paradigmes de programmation

Le concept de programme enregistré, initialement apparu sur un mémo d'IBM en 1949[22], possède des contours assez flous, cause d'erreurs de classification et de critiques[23]. Afin de lever toute ambiguïté, il lui est parfois préféré une hiérarchisation des paradigmes de programmation, permettant tant de clarifier que de catégoriser les différentes approches.[24]

Paradigme 1

Dans ce premier paradigme, la programmation consiste en un recâblage physique de la machine à travers des fiches et des interrupteurs. Cette approche possède certains avantages intrinsèques, telle que la très grande vitesse d’exécution des programmes.

La série des calculateurs Collossus, ou encore l’ENIAC dans sa configuration initiale de 1945, se sont ainsi distingués des autres machines de leur époque par leur vitesse de traitement.

Le principal inconvénient de ce paradigme est la difficulté inhérente au câblage des programmes, rendant leur mise en œuvre et leur débogage lent et difficile.

Paradigme 2

Ce paradigme utilise une programmation par instructions, ce qui réduit le temps de mise en œuvre des programmes.

Les instructions sont généralement codées sous forme numérique (typiquement binaire ou décimale) et enregistrées sur un support externe, tels que des bandes magnétique ou des cartes perforées. Le programme n’est pas enregistré dans la machine mais exécuté instruction par instruction depuis un support externe en lecture seule.

Cette approche comprend plusieurs inconvénients :

  • La vitesse d’exécution est égale à la vitesse de lecture du support
  • Le programme ne peut utiliser que des branchements très proches (s’il possède même la possibilité d’effectuer des branchements), ou nécessite sinon une action manuelle pour remplacer les cartes perforées en exécution, ou encore rembobiner le ruban perforé vers le branchement souhaité. Pour cette raison, les machines utilisant le paradigme P2 sont rarement Turing-complètes, ou ne le sont que de façon théorique.

Des exemples de machines utilisant ce paradigme de programmation sont la machine analytique de Charles Babbage, ou encore les Zuse Z1, Z2, Z3 et Z4.

Paradigme 3

Ce paradigme est le premier membre de la famille des architectures à programme enregistré.

Les instructions deviennent enregistrées dans la mémoire de la machine, permettant de réaliser des branchements conditionnels, des boucles, des fonctions, et d’exécuter le programme à vitesse électronique. Dans ce paradigme, la mémoire est rapide d’accès mais typiquement en lecture seule, et les processus ne peuvent modifier la mémoire d’instructions.

Un exemple d’une machine employant ce paradigme est l’ENIAC dans sa configuration de 1948.

Paradigme 4

Le paradigme P4 reprend le fonctionnement du P3, mais emploie une mémoire modifiable, permettant aux processus tant de lire que d’écrire des instructions enregistrées en mémoire.

Le premier exemple théorique de ce paradigme fût publié par Alain Turing en 1936 avec le concept de Machine de Turing Universelle. L’EDSAC, le Manchester Mark 1, ou l’ENIAC à la fin de sa carrière sont des exemples de machines célèbres employant ce paradigme de façon concrète.

Paradigmes P5 et P6

Le paradigme P4 contient le potentiel pour un programme d’éditer l’espace mémoire dédié aux instructions. Dans le paradigme P5, ce potentiel est réalisé mais se limite à l’insertion, la manipulation et la suppression d’instructions.

La Machine de Turing Universelle est là aussi une bonne illustration de ce paradigme.

Le paradigme P6, quant à lui, est très proche du paradigme P5, mais permet de concevoir des programmes pouvant produire de nouvelles instructions à la demande au cours de son exécution, et donc entièrement auto-modifiable. De plus, il permet à un programme de modifier à chaud le code d’un autre programme.

Ce paradigme fût conceptualisé avec le « First Draft of a Report on the EDVAC » en 1945, selon une inspiration du fonctionnement du cerveau humain. Turing et Zuse ont eux aussi mentionné l’idée d’un programme pouvant s’automodifier, ou en modifier un autre en temps réel.

Références

  1. (en) Joanne Allison, Stored-program Computers, 1997 « Copie archivée » (version du sur Internet Archive)
  2. (en) William F. Gilreath et Phillip A. Laplante, Computer Architecture : A Minimalist Perspective, Springer, , 220 p. (ISBN 978-1-4020-7416-5, lire en ligne), p. 24
  3. (en) Edwin D. Reilly, Milestones in computer science and information technology, Greenwood Publishing Group, , 380 p. (ISBN 978-1-57356-521-9, lire en ligne), p. 245
  4. (en) Miles J. Murdocca et Vincent P. Heuring, Principles of Computer Architecture, Prentice-Hall, , 553 p. (ISBN 0-201-43664-7), p. 5
  5. (en) Daniel Page, A Practical Introduction to Computer Architecture, Springer, , 642 p. (ISBN 978-1-84882-255-9, lire en ligne), p. 148
  6. (en) Mark Balch, Complete digital design : a comprehensive guide to digital electronics and computer system architecture, McGraw-Hill Professional, , 460 p. (ISBN 978-0-07-140927-8, lire en ligne), p. 149
  7. (en) Daniel Page, A Practical Introduction to Computer Architecture, Springer, , 642 p. (ISBN 978-1-84882-255-9, lire en ligne), p. 153
  8. (en) Ivor Grattan-Guinness, Companion encyclopedia of the history and philosophy of the mathematical sciences, JHU Press, , 1806 p. (ISBN 978-0-8018-7396-6, lire en ligne), p. 705
  9. (en) Jack Copeland, A Brief History of Computing: ENIAC and EDVAC, 2000
  10. (en) John L. Hennessy, David A. Patterson et David Goldberg, Computer architecture : a quantitative approach, Morgan Kaufmann, (ISBN 978-1-55860-724-8, lire en ligne), p. 68
  11. (en) B. Jack Copeland, Colossus : the secrets of Bletchley Park's codebreaking computers, Oxford University Press, , 480 p. (ISBN 978-0-19-284055-4, lire en ligne), p. 104
  12. (en) Christof Teuscher, Alan Turing : life and legacy of a great thinker, Springer, , 542 p. (ISBN 978-3-540-20020-8, lire en ligne), p. 321-322
  13. Thomas Haigh, Mark Priestley et Crispen Rope, ENIAC in Action:Making and Remaking the Modern Computer, MIT Press, , 153, 157, 164, 174, 194 (ISBN 978-0-262-03398-5)
  14. (en) « Eniac », sur Epic Technology for Great Justice (consulté le )
  15. (en-US) « ENIAC Monte Carlo Poster | ENIAC In Action » (consulté le )
  16. (en) « Electronic Digital Computers », Nature, Nature, no 162,‎ , p. 487 (DOI 10.1038/162487a0, lire en ligne, consulté le )
  17. (en) Rául Rojas et Ulf Hashagen, The first computers : history and architectures, MIT Press, , 457 p. (ISBN 978-0-262-68137-7, lire en ligne), p. 379
  18. (en) Daniel Page, A Practical Introduction to Computer Architecture, Springer, , 642 p. (ISBN 978-1-84882-255-9, lire en ligne), p. 158
  19. (en) Mike Hally, Electronic Brains : Stories from the Dawn of the Computer Age, National Academies Press, , 300 p. (ISBN 978-0-309-09630-0, lire en ligne), p. 96
  20. (en) Emerson W. Pugh, Building IBM : shaping an industry and its technology, MIT Press, , 405 p. (ISBN 978-0-262-16147-3, lire en ligne), p. 136
  21. (en) Arthur Tatnall, History of Computing : Learning from the Past : IFIP WG 9.7 International Conference, HC 2010, held as part of WCC 2010, Brisbane, Australia, September 20-23, 2010 : proceedings, New York, Springer, , 227 p. (ISBN 978-3-642-15198-9 et 978-3-642-15199-6, DOI 10.1007/978-3-642-15199-6_17, lire en ligne)DOI 10.1007/978-3-642-15199-6_17
  22. (en) Haigh, T., The Nature of Computation. Logic, Algorithms, Applications, Springer, 2013, , p.247
  23. (en) Haigh, T., Reconsidering the Stored-Program Concept’, IEEE Annals of the History of Computing, vol. 36, , p.4-17
  24. (en) B. Jack Copeland et Giovanni Sommaruga, « The Stored-Program Universal Computer: Did Zuse Anticipate Turing and von Neumann? », dans Turing’s Revolution: The Impact of His Ideas about Computability, Springer International Publishing, (ISBN 978-3-319-22156-4, DOI 10.1007/978-3-319-22156-4_3#sec4, lire en ligne), p. 43–101

Source