L’histoire de l'informatique est l’histoire de la science du traitement rationnel, notamment par machines automatiques, de l'information considérée comme le support des connaissances humaines et des communications dans les domaines techniques, économiques et sociaux et professionnelle.
L'histoire de l'informatique a commencé bien avant la discipline moderne des sciences informatiques, généralement par les mathématiques ou la physique. Les développements des siècles précédents ont évolué vers la discipline que nous connaissons aujourd'hui sous le nom d'informatique1. Cette progression, des inventions mécaniques et des théories mathématiques vers les concepts et les machines informatiques modernes, a conduit au développement d'un domaine académique majeur, à un progrès technologique spectaculaire à travers le monde occidental et à la base d'un commerce et d'une culture mondiale massive.
En 1966, l’informatique a été définie par l'Académie française comme la « science du traitement rationnel, notamment par machines automatiques, de l'information considérée comme le support des connaissances humaines et des communications dans les domaines techniques, économiques et sociaux ».
L’histoire de l’informatique résulte de la conjonction entre des découvertes scientifiques et des transformations techniques et sociales.
• Découvertes physiques sur les semi-conducteurs et la miniaturisation des transistors.
• Découvertes mathématiques sur la calculabilité et les propriétés des algorithmes.
• Invention de la théorie de l’information, de la sémiotique et de la cybernétique.
• Transformations techniques, l’introduction de machines ou de composants informatiques, des machines à laver aux automobiles et aux avions, des banques à la santé, de l’imprimerie à la documentation en ligne.
• Transformations sociales avec l’organisation des entreprises et des administrations autour de leur système d’information automatisé, et avec la circulation de l’information dans les réseaux sous forme numérique.
Si la plupart des ordinateurs ont été conçus au départ pour exécuter des calculs numériques trop longs ou trop compliqués pour être effectués à la main, des machines similaires ont été construites pour traiter des informations non numériques (par exemple, reconnaître une chaîne de caractères dans un texte, ce que faisait dès 1943 le Colossus du service de cryptanalyse britannique4). Les calculateurs devenaient des machines universelles de traitement de l’information, d’où le mot ordinateur, retenu en 1956 pour trouver un équivalent français à l’expression anglaise data processing machine. Ce terme a progressivement remplacé en français celui de calculateur, au sens trop restreint.
Les premiers ordinateurs datent de 1949. C'est la notion de programme enregistré, due à John von Neumann et à ses collaborateurs, en 1945, qui transforme les machines à calculer en ordinateurs. La machine est composée des éléments suivants :
• un organe de calcul, susceptible d’exécuter les opérations arithmétiques et logiques, l’unité arithmétique et logique ;
• une mémoire, ou mémoire centrale, servant à la fois à contenir les programmes décrivant la façon d’arriver aux résultats et les données à traiter ;
• des organes d’entrée-sortie, ou périphériques, servant d’organes de communication avec l’environnement et avec l’homme ;
• une unité de commande (control unit) permettant d’assurer un fonctionnement cohérent des éléments précédents.
L’ensemble formé par l’unité arithmétique et logique, d’une part, et l’organe de commande, d’autre part, constitue l’unité centrale ou processeur. L’ensemble des composants physiques, appelé matériel (hardware), est commandé par un logiciel (software).
Selon l'architecture de Von Neumann, les programmes sont enregistrés dans la mémoire de la machine. Ils peuvent comporter des boucles de calcul et des alternatives, contrairement aux programmes exécutés à partir de bandes perforées. Alors qu’on connaît depuis longtemps le codage des procédures par des trous sur des bandes perforées (machines à tisser, orgue de barbarie) lorsque le programme est enregistré en mémoire, il n’y a pas de différence fondamentale entre coder des données et coder des procédures. On peut donc calculer sur les instructions d’une procédure, par exemple pour faire un saut en arrière dans les instructions, ou pour compter le nombre de tours d’une boucle de calcul sur les éléments d’une liste. Ce calcul sur les programmes a permis le développement du logiciel : langages de programmation, systèmes d'exploitation, applications.
L’histoire de l’informatique porte donc seulement sur une soixantaine d'années. Elle peut se décliner selon quatre points de vue :
• la dimension physique qui décrit les moyens matériels du traitement, de la conservation et du transport de l'information : les machines et les réseaux ;
• la dimension logicielle qui définit d’une part les méthodes de calcul, de mémorisation et de commande qui caractérisent les fonctions des ordinateurs, et d’autre part les interfaces entre les personnes et les machines depuis l’arrivée des ordinateurs individuels vers 1980 ;
• la dimension applicative qui définit les objets et les processus informationnels utilisés, traités, transformés et montrés ;
• la dimension sociale qui décrit les usages de l’informatique dans tous les domaines et son insertion dans les pratiques sociales les plus diverses.
L'informatique est une nouvelle technologie intellectuelle, comme l'ont été en leur temps l'écriture et l'imprimerie, un moyen de représenter, de structurer et d'exploiter des informations qui en retour structure la pensée de l'homme, selon Pierre Lévy.
L’évolution des machines et des réseaux constitue l’infrastructure physique de l’informatique. L'histoire des ordinateurs est décrite dans un autre article. Celle des réseaux informatiques aussi. Depuis ses débuts, l'informatique a connu des transformations profondes des matériels informatiques en vitesse, puissance, fiabilité, miniaturisation. La transformation du logiciel est au moins aussi profonde, transformation en qualité, sécurité, complexité, réutilisabilité. Les objets traités ont beaucoup changé : d’abord les nombres et les fichiers de gestion des entreprises (textes et nombres), puis les formules, les règles de calcul et de raisonnement, les signaux, les événements, les dessins, les images, le son, la vidéo. L’informatique a de plus en plus d’usages et de plus en plus d’utilisateurs, et l'usage principal passe par les réseaux. Ces transformations du matériel, du logiciel et des usages ont modifié profondément la structure économique politique et sociale des sociétés humaines.
Fondements du logiciel
On appelle logiciels les composants logiques et symboliques qui permettent de traiter l’information dans les machines informatiques. Le mot information a un sens très large. On appelle ici information tout ce qui peut être codé sous forme numérique pour être mémorisé, transporté et traité par des machines informatiques : des signes (chiffres, lettres, monnaie, textes), des images, des signaux numérisés (musique, parole, relevés de capteurs sur des instruments). Les fondements du logiciel sont le codage, le calcul et l'interaction.
Le codage
Les procédés physiques de codage de l’information sont analogiques ou numériques.
Les premiers enregistrements du son étaient analogiques, sur disques ou bandes magnétiques. La télévision a longtemps utilisé la modulation des ondes, donc un phénomène physique continu, pour transporter les images et les sons. Le transport, le codage et le décodage, utilisent alors les caractéristiques continues des machines physiques. Ces codages sont sensibles aux déformations par l’usure matérielle et le bruit. Ils ont l'avantage de rester compréhensibles malgré la dégradation du signal.
Avec le codage numérique, qui supplante peu à peu le codage analogique dans tous les domaines, les machines physiques sont seulement le support d’une information qui est traitée, transformée, codée, décodée par des machines logicielles. Il y a « dématérialisation » de l’information, qui n’est plus liée à son support, qui peut être recopiée facilement et à très faible coût sans perte d’information. Il y a toutefois perte d’information par la compression des fichiers, souvent adoptée pour économiser de la taille mémoire et accélérer le traitement. Autre inconvénient, dans les systèmes numériques fondés sur "tout ou rien", il suffit d'un petit dysfonctionnement pour que l'ensemble des données deviennent incompréhensibles, voire perdues.
Vers 1930, Gödel invente pour faire des démonstrations d’indécidabilité un codage numérique des expressions logiques. Ce travail fournira plus tard des bases théoriques au codage informatique. Dans les codes informatiques ASCII (7 bits), ISO (8 bits), Unicode (16 bits), tous les caractères ont un équivalent numérique qui permet de passer d’une représentation interne sous forme de 0 et de 1 sur laquelle l'ordinateur calcule, à leur présentation lisible par l'homme sur un écran ou une feuille de papier.
Avec ces codes, on transforme des textes en nombres. On peut aussi numériser des images, du son, par discrétisation du signal. Le son est continu, mais un signal sonore peut être découpé en éléments très petits, inférieurs à la sensibilité de l'oreille humaine. Les images numérisées sont découpées en points (pixels) et chaque point est codé en fonction de ses propriétés. Si le pouvoir discriminant de l’œil est inférieur à l’approximation faite, on ne fait pas de différence entre l’image analogique et l’image numérique. C’est la même chose au cinéma pour la reconstruction du mouvement par l’œil à partir des 24 images fixes par seconde. Une fois toutes ces informations codées sous forme numérique, on va pouvoir calculer sur elles, comme sur les nombres. Non seulement le codage numérique est plus fiable, mais il est transportable et copiable avec un coût négligeable.
Le calcul
Le calcul mécanique s’est développé au XVIIe siècle, donc bien avant l’informatique, avec les machines de Pascal et de Leibniz, les horloges astronomiques comme celle de Strasbourg ou de Lyon, puis les machines à tisser avec des programmes sur bandes perforées. Avec le codage numérique de toutes les informations, le calcul s'est beaucoup étendu par rapport à son origine5. On calcule d'abord sur des nombres, qui ont une représentation binaire exacte ou approchée. On peut décrire des phénomènes par des systèmes d’équations pour la simulation informatique.
On peut aussi calculer sur des symboles, par exemple, concaténer des chaînes de caractères :
riche + lieu = richelieu
ou leur appliquer des fonctions :
inverser (abcd) = dcba
Lorsque les images sont codées numériquement, on peut les redimensionner, les restaurer, les transformer par des calculs.
Le raisonnement a été défini comme un calcul avec la définition en 1965 de l’algorithme d’unification de Robinson6. C’est la base du calcul formel, des systèmes experts, qui se développent à partir de 1975 et vont donner le coup d’envoi à l’intelligence artificielle.
L’utilisation des ordinateurs repose sur le principe que tout calcul compliqué peut être décomposé en une suite d’opérations plus simples, susceptibles d’être exécutées automatiquement. C’est la notion d’algorithme de calcul. Plusieurs inventions ont permis le développement de l'algorithmique. En 1936 la machine de Turing définit abstraitement la notion de calcul et permet de définir ce qui est calculable ou non. C’est une machine abstraite qui définit les calculs comme des opérations qu’on peut enchaîner mécaniquement sans réflexion. Le "lambda-calcul" d'Alonzo Church en est l'équivalent. Donald Knuth (né en 1938), est l'auteur du traité (en)The Art of Computer Programming, paru en plusieurs volumes à partir de 1968. Il décrit de très nombreux algorithmes et pose des fondements mathématiques rigoureux pour leur analyse.
Vers 1960 la théorie des langages de Schutzenberger donne un fondement solide à la définition, à la compilation et à l’interprétation des langages de programmation. Ce sera aussi le départ de la linguistique computationnelle de Chomsky.
La gestion des données
La mémoire centrale des machines est volatile et ne conserve les données que pendant la durée d'exécution des programmes. Or les fichiers doivent être conservés d'une exécution à l'autre. D'abord sous forme de paquets de cartes perforées, les fichiers sont conservés ensuite dans des mémoires auxiliaires comme des bandes magnétiques ou des disques durs (1956). Ces fichiers sont soit des programmes, soit des données. On constitue des bibliothèques de programmes et de procédures pour éviter de refaire sans cesse le même travail de programmation (formules usuelles de la physique, calcul statistique).
C'est surtout en informatique de gestion que l'importance des fichiers de données s'est fait sentir : fichier des clients, des fournisseurs, des employés. À partir de 1970, les bases de données prennent un statut indépendant des programmes qui les utilisent. Elles regroupent toutes les informations qui étaient auparavant dispersées dans les fichiers propres à chaque programme. Lorsque les fichiers étaient constitués pour chaque application de manière indépendante, le même travail était fait plusieurs fois et les mises à jour n’étaient pas toujours répercutées. L'accès de chaque programme aux données dont il a besoin et à celles qu'il construit ou modifie se fait par l'intermédiaire d'un système de gestion de bases de données (SGBD).
Vers 1975, avec les systèmes experts7, on découvre la possibilité de constituer des bases de connaissances sur des sujets variés : médecine, chimie, recherche pétrolière, stratégies pour les jeux. Les bases de connaissances ne sont pas des encyclopédies, elles codent la connaissance sous une forme qui permet le raisonnement des machines.
À partir de 1990, on constitue des bases de documents en numérisant des archives (livres, enregistrements sonores, cinéma). On assure ainsi une plus grande disponibilité et une plus grande fiabilité de la conservation. À travers le réseau Internet, le Web offre un espace public de mise à disposition de documents sans passer par des éditeurs et des imprimeurs. Il permet d’emblée l’accès à des informations et des créations mondiales. Mais il pose des questions importantes à l’organisation sociale : possibilité d’interdire et de juger les infractions, paiement des droits d’auteur, sécurité des échanges commerciaux, qualité des documents trouvés (les images peuvent être truquées, les informations mensongères ou partiales). En parallèle, avec les langages à objets (voir ci-dessous), les composants réutilisables pour la programmation ne sont plus tant des procédures que des objets, encapsulant des données et des fonctions, ou même des processus complets s'articulant les uns avec les autres par leurs interfaces.