Par trois fois l’histoire de l’informatique a été réduite à une succession de générations, présentant un axe de développement comme incontournable car s’inscrivant dans le sens de l’histoire :
les générations de langages ;
les générations de machines ;
les générations de processeurs.
Les générations de langages
En première approche, l’histoire des langages de programmation est essentiellement une suite de dispenses de codage après le premier d’entre eux :
les langages binaires des processeurs imposent le codage des instructions, des adresses en mémoire, des structures de données et de l’algorithme ;
les langages d’assemblage, version alphabétique des précédents, dispensent du codage des instructions ;
les langages de programmation dits impératifs, type FORTRAN, dispensent du codage des adresses ;
les langages de programmation dits fonctionnels (ou applicatifs selon la terminologie de l’époque), type LISP, dispensent du codage des données ;
les langages de programmation dits logiques (ou déclaratifs), type PROLOG, dispensent du codage de l’algorithme.
Un pronostic erroné
Cette suite appelle quelques remarques :
chaque génération permet d’exprimer plus brièvement que la précédente une même intention ;
le codage manuel en binaire ne subsiste pratiquement plus que chez les constructeurs de processeurs ;
le codage manuel en assembleur est devenu marginal ;
fort de ces évolutions, le dernier terme de la suite a été vu comme devant fatalement éradiquer ses prédécesseurs ;
pourtant, c’est lui qui ne leur a pas survécu ; pourquoi ?
L’expressivité, une perspective abandonnée
Cette suite trop simple ne tient pas compte d’autres phénomènes :
les influences mutuelles :
la récursivité et les expressions fonctionnelles, naguère considérées comme des bizarreries déraisonnables des langages fonctionnels, sont disponibles dans nombre de langages impératifs d’aujourd’hui, et même la capture de continuation déborde la famille des langages fonctionnels dynamiquement typés ;
la recherche de motifs par reprise sur échec, idée de base de la programmation logique, est proposée par la plupart des langages de programmation, via une interface avec PCRE, l’interprète d’expressions rationnelles ;
l’apparition de langages à l’expressivité volontairement restreinte :
interdiction d’expressions non typables statiquement, comme en ADA ou en ML et ses successeurs,
abandon de la complétude algorithmique, notamment dans les langages d’interrogation de bases de données comme SQL,
minimalisme des entrées/sorties pour raison de sécurité des interprètes de langages embarqués comme Javacript,
la réflexivité, facilitée en LISP, est découragée voire impossible dans la plupart des langages aujourd’hui ;
en définitive, l’expressivité n’est plus la perspective suivie, la fiabilité et la sécurité l’ont remplacée.
Les générations de machines
Les ordinateurs ont connu des architectures très différentes, pourtant il a été proposé un découpage générationnel trompeur qui a fini par tourner court ;
première génération, utilisation de tubes à vide ;
deuxième génération, utilisation de transistors ;
troisième génération, utilisation de circuits intégrés (câblage de plusieurs transistors) ;
quatrième génération, utilisation de circuits très intégrés (changement qui n’est plus que quantitatif) ;
un projet dit de cinquième génération promettait en dix ans de résoudre par une "machine Prolog" le problème de la lenteur de ce langage. En définitive :
ce projet n’a abouti qu’à un nouveau compilateur Prolog, aucune nouvelle architecture de machine n’ayant jamais été décrite et encore moins réalisée ;
cet échec était d’autant plus prévisible qu’auparavant avaient été lancées les "machines Lisp", qui réalisaient au niveau matériel la toujours coûteuse récupération de mémoire, d’où un gain indéniable mais qui n’a pas suffi à rendre compétitives ces machines spécialisées.
Les machines à réduction ... de crédit
Cette cinquième génération annoncée par le Japon a tellement inquiété les pouvoirs publics européens qu’ils ont incité les chercheurs à proposer un projet concurrent.
Le fiasco qui en résulta, typique de ce qui se passe lorsque le pouvoir politique veut piloter la science, s’appelait machines à réduction :
l’idée était d’abandonner l’architecture dite de von Neumann, au profit des modèles mathématiques du calcul antérieurs à l’invention de l’ordinateur ;
ces modèles, le lambda-calcul et son dérivé la logique combinatoire, reposent sur un mécanisme de réduction, autrement dit de réécriture de l’intégralité du couple formé du programme et des données à chaque étape du calcul ;
ce mécanisme induit un coût faramineux en mémoire, raison pour laquelle les pionniers de l’informatique se sont empressés d’inventer :
l’adresse en mémoire, vu comme la réalisation concrète de la notion abstraite de variable en mathématique,
le registre d’adresse, permettant de substituer une variable d’un programme à sa valeur par une indirection via un registre d’adresse, non plus par réécriture de tout le programme ;
les deux projets auront donc accouché de moins qu’une souris, celle-ci étant inventée ailleurs au même moment.
Les générations de processeurs
L’évolution des processeurs présente un cas un peu différent de fausse perspective. Connue sous le nom de "Loi de Moore", elle appelle
plusieurs remarques :
en science, le mot "loi" s’applique à des phénomènes naturels, l’utiliser pour un objet manufacturé est usurper la confiance mis dans ce mot dans les sciences de la nature (un choix peu surprenant dans des lieux désignant l’informatique par la locution computer science qui souffre du même travers) ;
elle a connu plusieurs énoncés :
en 1965, que le nombre de transistors sur un circuit intégré doublait tous les ans,
en 1975, qu’à partir de cette date ce serait seulement tous les deux ans,
et finalement que ce serait "la performance des ordinateurs qui doublerait tous les 18 mois", ce qui dénote des glissements de sens pas innocents :
il ne s’agit plus du seul processeur mais de l’ordinateur,
il ne s’agit plus de taux d’intégration mais de "performance", mot suffisamment vague pour permettre de postuler n’importe quoi,
quoi qu’il en soit, la fréquence d’horloge supportée par les processeurs stagne depuis 20 ans, voire baisse pour satisfaire de nouvelles exigences, énergétiques notamment.
Une évolution qui en cache d’autres
Cette perspective historique est moins trompeuse que les précédentes, mais elle obscurcit voire ignore les évolutions qui ont crédibilisé ces discours sur le doublement :
la plus grande finesse de gravure, à la base de cette perspective, a permis en fait :
l’augmentation de la vitesse de calcul parce que le chemin à parcourir pour les électrons est plus court,
l’adjonction au processeur de mémoire intégrée, en plus des registres,
la multiplication des unités arithmétiques et logiques à l’intérieur du processeur (l’architecture dite multi-cœurs) ;
la mal nommée architecture RISC (Reduced Instruction Set Computer) dont la caractéristique fondamentale est d’avoir une unique longueur d’instructions d’où :
le chargement de toute instruction en un seul cycle d’horloge,
la parallélisation des étapes de traitement des instructions par un pipe-line, permettant d’approcher l’égalité entre fréquence d’horloge et nombre d’instructions exécutées par seconde,
le branchement prédictif, qui raréfie la remise à zéro du pipe-line ;
comme quoi les avancées de l’informatique ne sont pas exclusivement proportionnées au montant des investissements consentis par le système financier local.
La notion d’obstacle épistémologique
Les trois perspectives citées avaient clairement pour but de justifier des investissements dans une direction bien précise. Ce point de vue inévitablement biaisé n’est pas utilisé en histoire des sciences, qui s’est forgé des concepts plus profonds :
Gaston Bachelard a dégagé la notion d’obstacle épistémologique, qui empêche d’étudier scientifiquement un phénomène, donnant comme exemple un vocabulaire inadapté ou la connaissance générale (la connaissance scientifique est une connaissance contre un préjugé plus ou moins conscient) ;
surmonter de tels obstacles permet d’effectuer une rupture épistémologique dans la compréhension d’un phénomène ;
des auteurs plus récents ont parlé de changement de paradigme, notion à peu près équivalente ;
à l’inverse, on peut voir chez Léon Brunschvicg une description avant la lettre de ruptures épistémologiques dans les élargissements successifs de la notion de nombre en mathématique (entiers, fractions, irrationnels, complexes).
Les alliages en informatique
La notion d’alliage, bien connue en métallurgie mais que le philosophe Gilles Deleuze a étendue, s’applique particulièrement bien à l’informatique :
son histoire est ponctuée d’alliages nouveaux entre le processeur et un périphérique ;
notre thèse est que l’histoire de l’informatique est essentiellement une suite de franchissements d’obstacles épistémologiques permettant des alliages entre le processeur et un périphérique nouveau ou issu d’un autre univers technologique ;
chacun de ces franchissements suscite l’élaboration ou le rajeunissement de méthodologies voire de théories qui s’affranchissent de leur origine matérielle ;
on peut donc soutenir qu’en informatique ce qui est central sont les périphériques, la promotion en substantif de cet adjectif éliminant ce paradoxe qui n’est qu’apparent.
Corps sportif, corps informaticien
Dispositions aux 400 mètres-haies et aux 900 mois-périphériques :
corps sportif :
opaque, dépourvu d’organes sensoriels et de cerveau ;
corps informaticien :
transparent, muni d’un cerveau, de doigts et d’yeux,
en option :
oreilles
souffle buccal.
Le premier périphérique
L’obstacle de la mémoire
Il semble aujourd’hui évident que la mémoire soit indispensable à un ordinateur. Cependant :
c’est un des pionniers du calcul automatisé qui a prôné la supériorité des calculateurs analogiques, les autres étant handicapés par l’interprétation d’une mémoire (sic) ;
ici l’obstacle était de s’aligner sur l’épistémologie de la physique et non des mathématiques :
pour la physique, connaître c’est mesurer (avec des instruments de mesure),
pour les mathématiques, connaître c’est abstraire (avec des variables) ;
l’irruption de la mémoire artificielle a sorti de l’enfance la balbutiante algorithmique, tant symbolique que numérique : réduire le nombre d’opérations dans un méthode de calcul est une vieille idée, pas le nombre de résultats intermédiaires qu’il faut garder visibles et rapidement accessibles sur leur support d’écriture.
Le deuxième périphérique
L’obstacle du clavier
Avant que l’on songe à emprunter son clavier à la machine écrire (pourtant apparue dès le XVIIIe siècle), les périphériques d’entrée étaient :
soit des potentiomètres, pour les calculateurs analogiques ;
soit des câbles à enfoncer dans des prises pour relier deux circuits électriques ;
soit des boutons-poussoirs reliant ou déconnectant deux circuits ;
dans tous les cas, l’idée était que calculer était une opération manuelle de configuration ;
programmer (mot inventé à cette époque), c’est transformer en acte un texte, ce qui récuse la dichotomie traditionnelle entre la pensée et l’action ;
cette irruption du texte en informatique est à l’origine de la mathématisation de la linguistique :
sur le plan syntaxique, avec les grammaires génératives,
sur le plan sémantique, avec les théories des types de données, garantissant des cohérences, parfois au prix d’une baisse d’expressivité comme déjà évoqué.
Le troisième périphérique
L’obstacle du stockage
Initialement, le clavier servait à perforer des cartes, support utilisé, notamment pour collecter des données lors des recensements et permettre leur exploitation statistique. Ce précédent extrêmement vivace dans l’industrie informatique a freiné le développement des mémoires de stockage électrifiées :
le recensement est une opération d’archivage, qui est une forme restreinte de mémorisation (mot récent, employé d’abord en didactique) en ce qu’elle ne permet pas de modifier ce qui a été mémorisé, usage courant aujourd’hui mais qui semblait sans intérêt ;
la disponibilité de supports de stockage réinscriptibles et fiables a donné naissance aux versions informatisées des fichiers, des répertoires et des bases de données, ces dernières s’accompagnant de langages spécifiques d’interrogation et d’actualisation.
Le quatrième périphérique
L’obstacle du contrôleur d’interruption
Le contrôleur d’interruptions a permis de remplacer les demandes incessantes et souvent vaines du processeur aux périphériques, par des envois toujours utiles de ceux-ci vers celui-là. Cette nouvelle architecture :
n’a été possible qu’en renonçant à l’idée qu’une pensée bien construite est nécessairement linéaire ; la lecture séquentielle d’un programme utilisant des interruptions n’est plus le reflet de la séquence d’instructions que provoquera son exécution ;
cette possibilité d’interruption, notamment par l’horloge pour forcer un processus à libérer le processeur au profit d’un autre processus lui-même précédemment suspendu pour la même raison, est à l’origine du développement théorique et méthodologique des systèmes d’exploitation des ordinateurs, notamment leur ordonnanceur permettant le temps partagé.
Le cinquième périphérique
L’obstacle de l’écran
Si le remplacement des bruyantes machines à écrire par de silencieux écrans était une évidence dont la réalisation n’a été ralentie que par des raisons budgétaires, il faut néanmoins remarquer :
que le gain ergonomique potentiel n’a été que très lentement mis en œuvre, rédiger un texte étant une activité apparemment pas susceptible des mêmes interrogations sur la fatigue au travail qu’un métier manuel ;
que c’est à partir de ce moment que s’est développé la branche de l’informatique nommée Interface Homme Machine, incluant l’ergonomie du logiciel et plus tard le Web-design, une branche très liée à l’évolution des périphériques.
Le sixième périphérique
L’obstacle du réseau
L’interconnexion des ordinateurs a été freinée par plusieurs facteurs :
sur le plan industriel, la volonté des constructeurs, d’ordinateurs mais aussi de tous les appareils de télécommunications, de garder captives leurs clientèles respectives ;
sur le plan épistémologique, un double obstacle :
la tendance à assimiler sécurité et inaccessibilité, qui a été dépassée :
par un renouveau de la cryptographie, bénéficiant des avancées de l’algorithmique,
par une mathématisation poussée des protocoles de (télé)communication, notamment avec les codes correcteurs d’erreurs permettant la fiabilité d’Internet ;
la difficulté à constater qu’un système d’exploitation passe moins de temps à gérer des fichiers que des flux de données ; cette vision dynamique et non plus statique :
a débouché sur l’invention des canaux de communication (le pipe et la socket) par Unix (un téléphoniste, non pas un constructeur informatique), permettant la réalisation des algorithmes perpétuels que sont les serveurs,
a renouvelé la recherche dans les systèmes d’exploitation, les concurrents d’Unix étant obligés de le copier, avec POSIX, ou de disparaître.
Le septième périphérique
L’obstacle de l’imprimante
L’imprimante laser a été un périphérique déterminant dans l’histoire de l’informatique :
avant son apparition, un dirigeant d’un grand constructeur informatique aujourd’hui disparu déclarait :
"je ne vois aucune bonne raison pour un particulier d’avoir un ordinateur chez lui" ;
bien que le micro-ordinateur ait d’abord été un échec, il a fini par s’imposer grâce à son alliage avec l’imprimante individuelle qui lui a permis de détrôner la machine à écrire ;
la confusion ici était entre la découverte scientifique ou l’invention technologique, qui procèdent d’une nouveauté intrinsèque au domaine concerné, et l’innovation, laquelle est définie par les économistes comme ce qui provoque un déplacement de la demande sur un marché, ici non seulement de la machine à écrire mais ensuite de tout le secteur de l’imprimerie ;
en est issue la typographie numérique, avec son modèle graphique dit vectoriel (encore un terme trompeur) que reprendront les cartes vidéo.
LesS huitièmeS périphériqueS
Les périphériques gestuels
A retenir de cette famille apparemment hétérogène :
ces périphériques vont par paire ou plus : l’un capte, l’autre restitue, des mouvements d’un objet ou d’un être vivant, et même sa voix et son souffle ;
les documents gérés par ces périphériques auraient pu être regroupés sous la dénomination de documents gestuels, ce qui n’est pas le cas dans l’incons(is)tante, non versionnée et indéboulonnable nomenclature MIME (Multipurpose Internet Mail Extensions) malgré sa définition bien postérieure à eux, ce qui témoigne de l’obstacle épistémologique rencontré :
penser est plus général que verbaliser ; ce qui se conçoit bien ne s’énonce pas nécessairement par des mots (demander aux compositeurs, aux architectes, aux dessinateurs ...) ;
les branches de l’informatique induites par ces périphériques sont l’analyse et la synthèse des sons, des images et des mouvements (informatique musicale, reconnaissance des formes, traitement du signal, robotique mais aussi algorithmes de compression) et cette liste s’allonge avec les nouveaux capteurs qui ne cessent d’apparaître (en informatique médicale notamment).
Le neuvième périphérique
Le calcul parallèle
Le calcul parallèle a en fait une longue histoire :
les systèmes d’exploitation à temps partagé sont confrontés à un apparent parallèlisme, vécu d’abord comme une gêne, résolue par des mécanismes de verrouillage d’accès, notamment le sémaphore pour éviter les étreintes fatales ;
de l’adjonction de co-processeurs numériques ou graphiques a germé l’idée qu’un processeur pouvait en commander un autre ;
admettre que des processeurs pouvaient être vus comme les périphériques d’un autre aussi puissant voire moins était l’obstacle à franchir pour déboucher sur l’algorithmique répartie, sans laquelle les moteurs de recherche du Web ne pourraient pas fonctionner ;
cette difficulté à accepter les calculs parallèles pouvait se surmonter en prenant des leçons de musique, les différentes architectures d’ordinateurs n’étant pas sans évoquer certaines formes musicales :
Single Instruction Single Data = monophonie,
Multiple Instruction Single Data = polyphonie classique,
Single Instruction Multiple Data = polyphonie romantique,
Multiple Instruction Multiple Data = polytonalité, polymodalité, atonalité.
Le dixième phériphérique
Le périphérique distant
La rupture se situe ici dans l’idée qu’un périphérique n’est pas nécessairement relié physiquement et exclusivement à un processeur : les satellites d’un système de positionnement émettent un signal disponible pour qui veut,
et doivent être vus comme des périphériques partagés par tous les ordinateurs capables d’interpréter ce signal.
La mobilité, déjà esquissée avec le protocole HTTP qui fonctionne en mode déconnecté contrairement à ses prédécesseurs (FTP, SMTP, IMAP), induit un flot de données perpétuellement changeant qui remet en question l’algorithmique classique consistant à lire préalablement la donnée sur laquelle travailler. Ce qu’on pourrait appeler l’algorithmique incrémentale est présentement une branche de la discipline en plein développement.
Une absence
Cette perspective centrée sur les périphériques n’inclut pas la dénommée "intelligence artificielle", ce qui appelle plusieurs remarques :
ce domaine repose essentiellement sur deux piliers, le modèle de réseau neuronal, emprunté à la biologie, et la notion de base de connaissances, emprunté à une autre branche de la discipline, nommée plus généralement base de données ; ces vieux concepts donnent de meilleurs résultats aujourd’hui grâce à l’accélération des processeurs et à l’agrandissement des mémoires, sans avoir nécessité de franchissement d’un nouvel obstacle épistémologique ;
comme déjà signalé, la science étudie des phénomènes, non des objets manufacturés ; à ce titre, l’IA n’est pas une science mais plutôt un ensemble de technologies, issues hier de la mécanique, aujourd’hui de l’informatique, demain probablement de la biologie ;
l’informatique a d’abord été vue comme une branche des mathématiques ou de la physique, et a fini par s’en dissocier, étant incompatible avec les épistémologies respectives de ces deux disciplines ; l’IA prendra sans doute son indépendance de l’informatique, pour entretenir avec elle des rapports assez semblables à ceux de la médecine avec la biologie.
Penser le vocabulaire
Bachelard citait comme obstacle épistémologique un vocabulaire inadapté ; sur ce plan, l’IA en offre un florilège intéressant :
la locution intelligence artificielle, traduite mot à mot de l’anglais alors que le mot français "intelligence" se traduit par "cleverness" (contre-performance pour une activité incluant la traduction automatique) est doublement trompeur, parler de savoir numérique serait plus juste ;
la locution "apprentissage profond", traduction d’ailleurs peu employée de l’anglais "deep learning" témoigne d’un anthropocentrisme discutable, parler de mimétisme massif décrirait mieux la technologie sous-jacente, et il est significatif que ses échecs soient nommés, et jamais traduits, over-fitting, le mot "plagiat", qui devrait s’imposer, étant évidemment moins discret ;
avec ce genre d’approximations, il n’est pas étonnant que les adversaires de la science et de la technologie accusent celles-ci de "ne pas penser" ; il est temps de renoncer à l’inflation du vocabulaire scientifique dans l’espoir d’obtenir plus de crédits, et de réapprendre les étymologies grecques et latines pour forger un vocabulaire précis et économe en néologismes.
Une science parmi d’autres
Jean Rostand dans sa passionnante histoire de la biologie, expose que
la question centrale de la biologie est "qu’est-ce que la vie",
qui reste toujours sans réponse mais permet de faire avancer la discipline.
On pourrait reprendre la formule quant à la physique & la matière,
la psychologie & l’individu, et bien d’autres. Et l’informatique ?
étudierait-elle l’intelligence ? Non, on peut prendre
comme contre-exemple une création musicale par ou avec un ordinateur,
dont on attend une séduction sonore plus qu’une démonstration d’intelligence.
Laissons cette étude à la psychologie génétique, ou peut-être aux
mathématiques ;
au vu de la variété des architectures matérielles et logicielles, c’est semble-t-il une question plus générale et plus humaniste :
"qu’est-ce que la pensée ?".