Historique.


1. INTRODUCTION.

1.1. Introduction.

Les ordinateurs n'existaient pas voici seulement 50 ans et déjà ils ont envahi tous les secteurs de la vie sociale: comme amélioration d'outils anciens rendus automatiques (caisses enregistreuses, machines à calculer, machines à laver, ...) ou sous la forme d'une machine mystérieuse capable de dialoguer avec l'homme et qui paraît douée d'intelligence (robots, jeux électroniques, ...).

En fait, un ordinateur n'est qu'une machine capable d'exécuter automatiquement une série d'opérations simples qu'on lui a demandé de faire. L'intérêt de l'ordinateur est sa capacité de manipuler rapidement et sans erreur un grand nombre d'informations: mémoriser des quantités numériques ou alphabétiques, rechercher une quantité mémorisée, comparer ou classer des informations, ....

Pour résoudre un problème à l'aide d'un ordinateur, il faut:

1. analyser ce problème: définir avec précision les résultats à obtenir, les informations dont on dispose, ...

2. déterminer les méthodes de résolution: il s'agit de déterminer la suite des opérations à effectuer pour obtenir à partir des données la solution au problème posé. Cette suite d'opérations constitue un algorithme. Parmi tous les algorithmes fournissant la solution, il faudra choisir le plus efficace.

3. formuler l'algorithme définitif: cette étape doit faciliter la résolution sur ordinateur par l'expression de l'algorithme dans un formalisme adéquat (langage de description d'algorithme: LDA, organigramme, arbre programmatique, ...).

4. traduire l'algorithme dans un langage de programmation adapté.

Comme nous nous limiterons à des problèmes posés d'une manière non ambigüe, la première étape pourra généralement être négligée et nous nous concentrerons sur la rédaction correcte d'algorithmes et sur l'écriture de programmes efficaces (dont il est facile de vérifier qu'ils sont corrects, qui peuvent être lus, compris, modifiés sans difficulté et qui reflètent la structure de l'algorithme de résolution). Une manière d'atteindre ce but est de décomposer un problème complexe en plusieurs problèmes plus simples.

1.2. Historique.

Il est difficile de faire commencer l'histoire des ordinateurs à une date bien précise. Comme l'ordinateur est un outil d'aide au traitement de l'information, nous citerons les principales innovations qui ont facilité ou automatisé le calcul (les nombres étant longtemps la principale source d'information).

L'idée d'utiliser des supports matériels pour manipuler les nombres d'une manière répétitive est très ancienne. Vers 2500 avant J-C, apparaissait déjà le boulier qui permettait d'effectuer des opérations arithmétiques élémentaires. Six siècles plus tard, une tablette babylonnienne en argile (1900-1600 avant J-C) permettra à partir de deux côtés d'un triangle rectangle, de trouver le troisième.

Les premiers dispositifs mécaniques d'aide au calcul apparaissent seulement à la Renaissance: en 1642, Blaise Pascal invente une machine permettant d'additionner et de soustraire, pour simplifier la tâche de son père, commissaire pour la levée des impôts. En 1671, le mathématicien allemand Gottfried Wilhem Leibniz conçoit une machine permettant les quatre opérations arithmétiques. Jusqu'au XIX ème siècle, ces machines seront copiées sans qu'on y apporte d'améliorations significatives.

Au cours du XIX ème siècle, quelques nouvelles machines capables d'effectuer les quatre opérations élémentaires apparaissent: l'arithmomètre (1820) de Thomas de Colmar conçu à partir des idées de Leibniz, la machine à curseur du suédois Odhner (1875), le comptomètre à clavier de l'américain Felt (1885). Le développement des techniques de réalisation d'automates (horloges astronomiques, canard de Vaucanson, capable de faire les mouvements du vol, de manger, de boire et ... de déféquer) allait être stimulé par celui des industries naissantes, en particulier de l'industrie textile pour laquelle Jacquard, perfectionnant en 1801 une invention de Vaucanson (1745) crée la carte perforée destinée à commander des métiers à tisser.

Avec plus d'un siècle d'avance, l'anglais Charles Babbage propose en 1822 sa "machine différentielle" permettant d'élever un nombre à la puissance n et en 1833, sa "machine analytique" où on retrouve les trois éléments essentiels de nos calculateurs: un organe d'introduction des données (cartes perforées ou cadrans), un organe de sortie des résultats (cartes perforées, cadrans ou papier) et un organe de contrôle et de calcul qui utilisait des dispositifs mécaniques. Une mémoire était réalisée par l'intermédiaire de roues dentées tandis que les opérations à effectuer étaient introduites à l'aide de cartes perforées. La machine de Babbage, limitée par les possibilités techniques de l'époque (elle aurait demandé plus de 50000 pièces mobiles), restera cependant à l'état de plans, et ses idées seront presque toutes "redécouvertes" indépendamment dans les années 40.

L'ingénieur américain Herman Hollerith développe pour le recensement de 1890 une machine électromécanique, plus élémentaire que celle de Babbage, capable de trier des cartes perforées et de les compter. Les opérations étaient toujours mécaniques mais les commandes étaient réalisées par l'intermédiaire de relais électromagnétiques, actionnés par des impulsions électriques obtenues par contact entre des aiguilles et un bac de mercure sur lequel reposaient les cartes perforées. Hollerith fonde en 1896 la "Tabulating Machine Company" reprise en 1911 par Thomas Watson qui crée en 1924 la firme IBM (International Business Machine).

La guerre 1940-1945, suite à l'effort de plusieurs pays, va donner l'impulsion décisive à la naissance des premiers ordinateurs dignes de ce nom:

- les Z2 et Z3 de l'allemand Zuse prêts en 1939 et 1941

- la série des "Automatic Sequence Controlled Computer Mark" conçus par Howard Aiken. Le Mark I fonctionnera en 1944. Les temps de calcul étaient de 1/3 de seconde pour une addition, de 6 secondes pour une multiplication et de 11 secondes pour une division. Les organes de commande et de calcul utilisaient des relais électromagnétiques.

- l'ENIAC (1943-1946), destiné initialement au calcul de tables d'artillerie, de Prosper Eckert et John Mauchly, utilisait des tubes à vide. Les temps de calcul sont divisés par 1000 mais cette machine qui comporte 18000 tubes à vide, 1500 relais, 10000 condensateurs et 70000 résistances, prend une place considérable (270 m3 - 30 tonnes) et consomme 150 kw. Il fallait changer le cablage et les switches pour modifier le programme. L'ENIAC était une machine décimale dont les entrées-sorties et la mémoire auxiliaire étaient réalisées par cartes perforées.

Dès 1944, des théoriciens de Princeton tels que J.Von Neumann, A.Buks et H.Goldstine se penchent sur les problèmes logiques posés par la réalisation des ordinateurs et établissent les bases des futurs développements, notamment l'utilisation du binaire, les notions de programmes stockés en mémoire, d'ordinateurs à usages multiples ...

L'EDSAC (Cambridge University 1949) et l'EDVAC (University of Pennsylvania 1950) utilisent des mémoires à ligne de retard à mercure (inventées par Eckert) qui permettent de stocker programmes et nombres sous forme digitale.

Vers 1951, apparaissent le premier UNIVAC (Eckert et Mauchly) utilisant des diodes à cristal et des bandes magnétiques comme mémoire de masse et l'IAS (Von Neumann) où une mémoire à tube de Williams (1947) permet l'accès parallèle à tous les bits. C'est une machine binaire où les instructions modifiables comportent une adresse.

Entre 1953 et 1960 apparaissent de nombreuses innovations (2ème génération d'ordinateurs): les tores de ferrite utilisés comme mémoire (d'après les travaux de J.W. Forrester en 1951 au MIT), les circuits imprimés, les disques magnétiques, les transistors (inventés en 1948),... Les vitesses de traitement et les capacités de mémoire augmentent considérablement. Les "ordinateurs" (mot inventé en 1953 par M. Perret pour traduire "computer") acquièrent une plus grande sécurité de fonctionnement et une facilité d'emploi permettant d'effectuer des tâches de plus en plus vastes pour un nombre plus important d'utilisateurs. La production en série commence et les coûts de production diminuent rapidement.

En 1963, les circuits imprimés sont remplacés par des circuits intégrés (3ème génération). Les équipements se miniaturisent et on voit apparaître les mini- et micro-ordinateurs. Les vitesses d'exécution diminuent: quelques dizaines de picosecondes (1 picos=.000000000001 s=10-12s).

L'ordinateur commence à se banaliser. En 1963, il n'est déjà plus un matériel extraordinairement coûteux, même s'il est encore très cher. Il n'est plus en la possession exclusive de quelques centres de recherche aux énormes budgets, déjà de nombreuses entreprises le possèdent. Il est devenu fiable, rapide et performant.

En prenant comme référence la multiplication de deux nombres tenant chacun dans un mot, on constate une division du temps de calcul par 100 tous les 7 ans. Cette amélioration des performances s'accompagne d'une diminution des prix, d'un facteur 100 tous les 10 ans environ. Cette diminution continue aujourd'hui où, pour quelques dizaines de milliers de francs, on trouve des ordinateurs, dits microordinateurs, qui, en dépit de leur petite taille, sont bien plus puissants que ne le fut,il n'y a guère plus de 30 ans, l'ENIAC, malgré son poids de plusieurs tonnes. C'est que la microélectronique a entraîné à son tour, au cours des ans, une diminution considérable de la taille des ordinateurs et, ce qui est bien plus curieux, selon une tendance voisine de celles que nous avons observées dans les autres domaines. Les unités centrales réalisées sous de très faibles volumes qui forment ce qu'on appelle les microprocesseurs ont en effet été largement diffusées, en 1976, lorsque fut mise au point la fabrication de masse des composants de très haute intégration (Very Large Scale Integration ou VLSI). Cette technologie, encore aujourd'hui en pleine évolution, a permis par exemple de construire les unités centrales des IBM 4300 avec des plaquettes de silicium de 20 millimètres carrés, ayant 704 circuits logiques.

Notons d'ailleurs qu'il ne faut pas confondre microprocesseur et microordinateur. Un microordinateur est construit autour d'un microprocesseur, mais les unités d'entrée et de sortie, écrans de visualisation, claviers, imprimantes, ..., ne pouvant être miniaturisés, le volume d'un microordinateur est essentiellement occupé par ces dispositifs qui en sont la partie la plus coûteuse.

L'amélioration du rapport prix/performance a permis aussi de trouver de nouveaux utilisateurs et de construire des ordinateurs mieux adaptés aux besoins des utilisateurs. C'est ainsi que la gestion (paye et facturation, applications administratives et bancaires, réservations, ...) devient le domaine principal d'utilisation des ordinateurs.

1.3. Les langages.

Parallèlement aux modifications techniques, les moyens de communiquer à l'ordinateur ce qui lui est demandé de faire ont fortement changé. On appelle langages de première génération les langages-machine ou "codes-machine" utilisés initialement (1945). Un programme en "code-machine" est une suite d'instructions élémentaires, composées uniquement de 0 et de 1, exprimant les opérations de base que la machine peut physiquement exécuter: instructions de calcul (addition, ...) ou de traitement ("et" logique, ...), instructions d'échanges entre la mémoire principale et l'unité de calcul ou entre la mémoire principale et une mémoire externe, des instructions de test qui permettent par exemple de décider de la prochaine instruction à effectuer.

Voici en code machine de l'IBM 370 l'ordre de charger 293 dans le registre "3":

01011000 0011 00000000000100100100

=charger =3 =293

Ce type de code binaire est le seul que la machine puisse directement comprendre et donc réellement exécuter. Tout programme écrit dans un langage évolué devra par conséquent être d'abord traduit en code-machine avant d'être exécuté.

La deuxième génération est caractérisée par l'apparition de langages d'assemblage (1950) où chaque instruction élémentaire est exprimée de façon symbolique. Un programme dit "assembleur" assure la traduction en code exécutable. L'instruction de l'exemple précédent s'écrira:

constante X = 293 charger X R3

La troisième génération débute en 1957 avec le 1er langage dit évolué: FORTRAN (acronyme de mathematical FORmula TRANslating system). Apparaissent ensuite ALGOL (ALGOrithmic Language en 1958), COBOL (COmmon Business Oriented Language en 1959), BASIC (Beginner's All-purpose Symbolic Instruction Code en 1965), Pascal (1968), ... Les concepts employés par ces langages sont beaucoup plus riches et puissants que ceux des générations précédentes et leur formulation se rapproche du langage mathématique. Il existe deux méthodes pour les rendre exécutables:

- la compilation: l'ensemble du programme est globalement traduit par un autre programme appelé compilateur et le code-machine produit est optimisé. Ce code-machine est ensuite exécuté autant de fois qu'on le veut.

- l'interprétation: un programme (interpréteur) décode et effectue une à une et au fur et à mesure les instructions du programme-source.

La quatrième génération qui commence au début des années 80 devait mettre l'outil informatique à la portée de tous, en supprimant la nécessité de l'apprentissage d'un langage évolué. Ses concepts fondamentaux sont "convivialité" et "non-procéduralité" (il suffit de "dire" à la machine ce qu'on veut obtenir sans avoir à préciser comment le faire). Cet aspect a été rencontré avec les langages du type Visual qui prennent en charge l'élaboration de l'interface graphique.

Page précédente.