LENIAC (acronyme de l'expression anglaise ) est en 1945 le premier ordinateur Turing-complet entièrement électronique. Il peut être programmé pour résoudre, en principe, tous les problèmes de calcul numérique.

Sous l’influence de John von Neumann, l’ENIAC est à partir de 1947 reconverti en ordinateur à programme enregistré, quoique de façon quelque peu plus primitive que les ordinateurs qui lui succéderont. Ainsi, le , l’ENIAC devient également le premier ordinateur électronique à exécuter les instructions d’un programme, ainsi que le premier ordinateur à exécuter, avec quelques limites, un programme fonctionnant en mémoire.

Il est précédé en 1941 par le Zuse 3 allemand, une machine programmable mais encore électromécanique (utilisant des relais), et par la série de calculateurs britanniques Colossus, électroniques mais non Turing-complets.

Histoire Le principe de l'ENIAC vient d'une idée de John William Mauchly, professeur de physique et l'un des deux concepteurs de la machine. Participant à une conférence à l'Ursinus College, il observe des analystes produire des tables de tir et se rend compte que ces calculs pourraient être réalisés électroniquement. Il s'associe avec J. Presper Eckert, qui conçoit les circuits et résout les problèmes d'ingénierie, le principal étant la durée de vie des tubes électroniques. L'armée américaine, intéressée, finance le projet pour les besoins du laboratoire de recherche en balistique. L'ordinateur est financé le sous le nom Project PX et construit à la de l'université de Pennsylvanie à partir du .. La machine entre en opération le et commence à travailler sur des calculs liés à la conception d'armes thermonucléaires..

Le , l'ENIAC est dévoilé au public à l'université de Pennsylvanie à Philadelphie. En 1947, il est transféré à l'Aberdeen Proving Ground, un laboratoire de l'US Army au Maryland, où il est remis en marche le et commence des calculs de tables de tirs. Il continue à fonctionner jusqu'à son arrêt le .. Aujourd'hui, une partie de la machine est conservée à l'université de Pennsylvanie, où un petit musée lui est consacré.

L'architecture de l'ENIAC, décidée et gelée en 1943, est novatrice par son parallélisme, sa vitesse et sa Turing-complétude, mais ne permet initialement pas d'enregistrer un programme en mémoire ; la programmation se fait donc par câblage. Toutefois, les idées produites par ce travail et l'impact sur des personnes telles que John von Neumann, influenceront profondément le développement des ordinateurs suivants, notamment l'EDVAC, l'EDSAC, l'IAS et le . Une conversion de la machine en architecture von Neumann, sous la direction de ce dernier, a lieu à partir de 1947, permettant, avec quelques limites, d'enregistrer et exécuter un programme en mémoire Amy Shell-Gellasch (dir.) et Dick Jardine (dir.), From Calculus to Computer, édition MAA, 145.. L'ENIAC fonctionnera par la suite dans cette configuration jusqu'à la fin de son exploitation.

Un total de 87 programmes ont été écrits pour l'ENIAC entre 1945 et 1952 : 12 par fonctionnement câblés entre 1945 et 1947, puis 75 par programme enregistré.. Les trois dernières années de fonctionnement ne sont pas documentées.

Après l'ENIAC, Eckert et Mauchly fonderont une société, l', où ils produiront en 1949 leur premier ordinateur : le BINAC. La firme sera rachetée l'année suivante par Remington Rand pour devenir Univac.

Caractéristiques vignette|Détail d'un panneau de contrôle de l'ENIAC. L'ENIAC, comme bon nombre d’ordinateurs de première et deuxième génération., est une machine décimale, c’est-à-dire utilisant la .

Bien que la logique binaire fût envisagée par les concepteurs, l'utilisation de la logique décimale permettait, pour les ordinateurs travaillant avec des cartes perforées (codées au format décimal), d’éviter la conversion des données en entrée et en sortie, donc d’accroître la vitesse de traitement et, pensait-on, nécessiter moins de tubes électroniques.. La logique décimale fut de nouveau choisie par Ecker et Mauchly, les concepteurs de l’ENIAC, pour l’UNIVAC I (1951) après un essai peu fructueux avec la logique binaire du BINAC (1949).

L'ENIAC utilise des compteurs à anneaux à dix positions pour enregistrer les chiffres ; chaque chiffre nécessite à cet effet 36 tubes électroniques. L'arithmétique est réalisée en comptant les pulsations avec les anneaux et en générant des pulsations lorsque le compteur fait un tour. L'idée revient en fait à simuler par l'électronique les systèmes de roue à chiffres des machines électromécaniques.

Sa capacité est de vingt nombres à dix chiffres signés permettant chacun de réaliser simples chaque seconde (pour un total de par seconde). Il ne peut en revanche gérer en moyenne que ou par seconde ou trois extractions de racine par seconde. Les entrées-sorties se font au moyen de cartes perforées, à la vitesse de 133 caractères par seconde..

L'ENIAC est remarquablement volumineux : il contient tubes à vide, à cristal, , , , pour l'affichage continu de l'état des registres, et environ de soudures faites à la main ENIAC: A Pioneering Computer sur le site de Public Broadcasting Service.. Deux ventilateurs massifs de chacun permettent l'extraction de la chaleur générée par l'ensemble. Son poids est de pour des dimensions de occupant une surface de ()Lire en ligne.. Sa consommation est de . Ces caractéristiques, impressionnantes, lui valurent parfois le sobriquet de Giant Brain dans la presse et la littérature de l'époque.

Les tubes à vide employés possèdent 8 broches, les accumulateurs décimaux sont réalisés avec des bascules 6SN7, alors que les fonctions logiques utilisent des 6L7, 6SJ7, 6SA7 et 6AC7. De nombreux 6L6 et 6V6 servent de relais pour acheminer les pulsations entre les différents racks d'éléments.vignette|Un technicien en train de changer un tube de l'ENIAC.Certains experts en électronique prédirent que les tubes tomberaient en panne si fréquemment que la machine en serait inutilisable. La prédiction n'était que partiellement correcte, de nombreux tubes brûlaient chaque jour laissant l'ENIAC inopérant la moitié du temps. Des lampes plus fiables ne furent disponibles qu'à partir de 1948, Eckert et Mauchly durent donc utiliser des tubes de qualité standard. La plupart des problèmes liés aux tubes se produit au démarrage ou à l'arrêt de la machine car ils sont soumis à un important stress thermique. Le simple fait de ne jamais couper la machine, permet aux ingénieurs de réduire le nombre de pannes à un ou deux tubes par jour. La plus longue période de calcul sans panne est atteinte en 1954 avec , ce qui est une prouesse compte tenu de la technologie de l'époque.

Une cause fréquente de panne était la combustion d'un insecte sur un tube chaud, provoquant un stress thermique local et la rupture de l'ampoule de verre. Le terme anglais désignant un insecte est bug. Ce terme, par extension, serait devenu synonyme de dysfonctionnement informatiqueA priori, il s'agirait plutôt d'un insecte dans un relais Mark I que sur un tube de l'ENIAC. En outre, ce terme a été utilisé par Edison en 1878Passeport pour les médias de demain..

Modules de l'ENIAC de 1945 Dans sa configuration de 1945 et pendant les seize premiers mois de son exploitation, l’ENIAC est un ordinateur modulaire et hautement parallèle de conception proche d'une architecture à flux de données (dataflow). Il comprend quarante modules autonomes répartis ainsi :

Mur gauche Unité d’initialisation : Permet d'allumer et éteindre la machine, tester les unités, lancer un programme, et réinitialiser l'état des accumulateurs. Comme chaque unité, l'unité d'initialisation dispose également d'un contrôle de préchauffage des tubes électroniques lors de la séquence de démarrage. Unité de cycle : Contient l’horloge maître, cadencée à . Synchronise les modules entre eux et permet l'exécution pas-à-pas pour le débogage. Possède un oscilloscope de contrôle affichant les pulses en circulation dans la machine. Programmeur maître (deux panneaux) : Unité de haut niveau permettant de scinder le programme en fonctions, appeler ces fonctions, ainsi que programmer les boucles, les branchements conditionnels et les modifications de séquence dans le programme. Le programmeur maître permet le branchement de 10 actions différentes en fonction de la valeur d'un chiffre, de façon analogue à l'instruction « switch » des langages de programmation. Les fonctions, elles, sont implémentées sous forme de dix « steppers » autorisant chacun le lancement d'une séquence de six boucles, et permettant également la création de boucles imbriquées. Cette possibilité de programmer des fonctions, des sauts conditionnels et des boucles imbriquées distingue l'ENIAC de ses prédécesseurs. Tables de fonction 1 (deux panneaux) : Larges mémoires mortes contenant les données numériques et les formules du programme. Leur utilisation est générique, elles peuvent également contenir des tables de correspondances, ou trigonométriques ou à tout autre usage pertinent pour le programme. Accumulateurs 1 et 2 : Les accumulateurs constituent tant la mémoire que la puissance de calcul de l'ENIAC. Chacun des vingt accumulateurs possède une mémoire de 10 chiffres décimaux, ainsi qu'un circuit d’addition-soustraction à cinq entrées (désignées par des lettres grecques) et deux sorties (A pour addition et S pour soustraction). Ils peuvent également être appairés pour travailler sur des nombres de 20 chiffres décimaux. Diviseur et extracteur de racine carrée. Le diviseur-extracteur réquisitionne et pilote les accumulateurs adjacents 2, 3, 5 et 7 pour son fonctionnement. Ces accumulateurs servent au calcul et stockage du numérateur (dividende ou radicande), du dénominateur (diviseur ou racine), du quotient, et un dernier sert enfin de registre à décalage. Accumulateurs 3 à 9 vignette|À gauche : l'unité d’initialisation, l'unité de cycle, et les deux panneaux du programmeur maître.

Au centre : H. Goldstein programmant une table de fonction mobile. À droite : deux tabulatrices IBM.

Mur face Accumulateur 10 Multiplicateurs 1, 2 et 3. Les multiplicateurs réquisitionnent et pilotent les accumulateurs adjacents 9, 10, 11, et 13 pour leur fonctionnement, avec un mode de fonctionnement similaire à celui du diviseur-extracteur. Accumulateurs 11 à 14

Mur droit Accumulateurs 15 à 18 Tables de fonction 2 et 3 (4 panneaux) Accumulateurs 19 et 20 Transmetteur de constantes 1, 2, et 3 : Transmettent à une unité un nombre de 5 entiers signés ou 10 entiers non signés en provenance d’une table de fonction ou d'une carte perforée. Imprimante, unités 1, 2 et 3

À cela s’ajoutent trois tables de fonction mobiles pouvant être connectées au tables de fonction 1, 2 et 3, ainsi que deux tabulatrices IBM (une en entrée et une autre en sortie).

Dans l'ENIAC de 1945, chaque module peut être considéré comme une fonction élémentaire (« lire », « effectuer telle opération », « boucler si », « écrire »), chacune paramétrée via un pupitre, et chaînées par câblage d'un module à l'autre. Cette approche est analogue à celle d'une ligne de commandes dont on chaîne par un tube les entrées et sorties d'une séquence de programmes.

Ce paradigme de programmation est simple d'implémentation, parallèle par conception, dispense de mémoire vive pour stocker le programme en exécution, et dispense aussi de processeur devant lire et exécuter séquentiellement des instructions, ce qui accroît la vitesse de calcul (un signal traverse un câble beaucoup plus rapidement qu'un circuit électronique). En contrepartie, le développement des programmes est fastidieux. Tirer parti d'une puissance de calcul distribuée à travers 20 unités n'est pas chose aisée, et d'autre part, le câblage est long et pénible à mettre en œuvre, difficile à déboguer, et, comme avec une ligne de commandes, complique la création de programmes longs et complexes. En tout état de cause, Maulchy comparait la programmation de l'ENIAC de 1945 à « câbler ensemble vingt calculatrices ».