Pablo-Martín Córdoba
×

3.2.8

À l'intérieur de la Tour de Babel

7 min de lecture · 9 notes

Lors de la réunion des 28 et 29 mai 1959 au Pentagone, il a été établi qu’il fallait entamer des actions dans le but de construire ce nouveau langage, destiné à rendre l’utilisation des ordinateurs bien plus accessible. Ce langage fut désigné sous le nom de CBL – common business language. Lors de cette réunion, toujours selon le récit de la pionnière Jean E. Sammet, d’autres spécifications ont été discutées et approuvées, par exemple :

  • La plupart des participants s’accordaient à l’utilisation du langage anglais, bien que certains soutenaient qu’il fallait privilégier l’usage de symboles mathématiques.
  • Privilégier la facilité d’utilisation au détriment de la puissance du langage.
  • Création de trois groupes de travail, chargés respectivement du court, moyen et long terme.

Ce fut alors le groupe de travail sur le court terme qui s’occupa de la création concrète du langage COBOL, en combinant les meilleurs aspects de trois langages existants à l’époque, utilisés en interne par des acteurs différents : le FLOW-MATIC de Remington Rand Univac, développé en 1958 sous la direction de Grace Hopper ; l’AIMACO (Air Material Command), développé par l’armée des États-Unis en 1959 ; et le COMPTRAN, développé par IBM en 1958. Le COBOL (Common Business-Oriented Language), premier grand langage de programmation mobilisant des mots issus du langage naturel, est ainsi né du travail d’un sous-groupe de six personnes faisant partie du comité du court terme, sous la direction de Grace Hopper (1906-1992), une autre pionnière de l’informatique.

Depuis, d’innombrables langages de programmation ont été créés, plus ou moins spécifiques, plus ou moins proches du fonctionnement de la machine, où les programmes et les données sont inscrits en code binaire. Une « stratification » de langages s’est ainsi formée, différenciés selon leur distance au socle matériel de l’ordinateur et leur proximité avec le langage naturel humain.

Comme on peut l’observer dans le tableau de la page 285, le code machine ne fait aucun usage des éléments issus du langage naturel humain. Voici les fameux « zéros » et « uns » du numérique, qui sont en fait des présences ou des absences : de charge électrique pour les supports volatiles (mémoire RAM), ou d’une orientation particulière des éléments magnétiques (disques durs HDD) ; et, pour le signal, présence ou absence d’une valeur cherchée sur un courant continu. Les 1 et les 0 sont donc en fait déjà des abstractions1 et la lecture du continu au niveau des supports et signaux, en vue de discrétiser la valeur lue, n’est pas du tout banale d’un point de vue technique2.

d’abstraction
langage
mnémoniques
"naturelle"
libres
Pseudo-code (algorithmique informelle) (N’est pas un vrai langage exécutable) N/A (liaison informels, ex. SI, ALORS, POUR…)  100% ( uniquement du langage courant) Oui Description en langage naturel structurée comme du code. Exemple : « SI x > 0 ALORS afficher "Positif" ». Aucune syntaxe rigide imposée.
Langage dédié (DSL / 4GL haut niveau) SQL (requêtes BDD) (1974)  60 (SQL-92 standard) à 100+ mots réservés  70–80% (syntaxe anglaise) Partiellement Langage déclaratif très proche de l’anglais. Ex : SELECT nom FROM Clients WHERE ville="Paris";. Lisible par un non-programmeur. Identifiants libres avec quote si mot réservé.
Langage de haut niveau (interprété) Python (script, 3e gén.) (1991) mots-clés (en Python 3.x)  50–60% (syntaxe concise) Oui Langage généraliste. Syntaxe proche de l’anglais : opérateurs logiques (and, not, in). Ex : for item in liste: print(item). Indentation signifiante.
Langage de haut niveau (compilé) COBOL (gestion, 3e gén.) (1960) + mots réservés (COBOL-85 : 357)  80–90% (très verbeux en anglais) Oui Syntaxe très littérale en anglais. Ex : IF NOT END-OF-FILE THEN MOVE TOTAL TO GRAND-TOTAL. Conçu pour être lu par des non-techniciens.
Langage de plus bas niveau (compilé) C (systèmes, 3e gén.) (1973) mots-clés (C90/C99)  30–50% Oui Langage proche du matériel. Peu de mots-clés, beaucoup de ponctuation. Ex : if(flag && i<10) total+=arr[i];. Code très compact, d’où faible proportion de mots "naturels".
Langage d’assemblage (assembleur) x86 asm (Intel syntax)  80 (8086) à 1000+ (x86-64)  0–10% Oui Code natif lisible via des mnémoniques. Ex : MOV AX,1 ; INC AX ; JNZ loop. Instructions abrégées (MOV, JMP, ADD, …) et registres (AX) ne sont pas du langage courant.
Code machine (binaire pur) (ex. OpCodes x86) (Pas de mots, juste des codes binaires) % Non Suite de bits incompréhensible pour l’humain. Ex : B8 01 00 00 00 = MOV EAX,1. Aucune abstraction : tout est adressé numériquement. C’est le langage que comprend directement le processeur.

Au niveau d’abstraction immédiatement supérieur, on trouve l’assembleur, langage spécifique à chaque machine, où une petite centaine de mots-clés3, formés le plus souvent par l’abréviation de mots issus du langage humain, représentent les opérations nécessaires lors de la programmation de la machine. Ces mots clés sont très spécifiques : ils indiquent souvent une action, mais aussi l’objet sur lequel elle doit s’appliquer, voire parfois également le destin de cet objet4. Plus abstraits que les « zéros », les mots-clés des assembleurs sont pourtant bien plus concrets et spécifiques que ceux qu’on trouve dans les langages de plus haut niveau.

Le COBOL, comme nous l’avons vu, issu d’un grand effort de « traduction » du fonctionnement de la machine vers un langage compréhensible par l’humain, emploie plus de trois cents instructions, qui sont aussi pour la plupart des mots en anglais, sauf qu’à la différence de l’assembleur, elles se présentent toujours complètes, sans abréviation. C’est un langage d’une grande verbosité5, ce qui lui a valu de vives critiques avec le temps. Edsger Wybe Dijkstra, qui a reçu en 1972 le prix Turing pour sa contribution au développement des langages de programmation, était très critique envers COBOL, et en cela il exprime le ressenti d’un grand nombre de codeurs. Pour Dijkstra : « L’usage du COBOL atrophie l’esprit ; son enseignement devrait donc être considéré comme un crime6. ». Dijkstra était directement critique vis-à-vis de toute tentative de rapprocher la programmation d’un ordinateur du langage naturel humain, comme en témoigne son écrit Sur la sottise de la « programmation en langage naturel »7.

Des langages comme le C (1973), utilisé pour construire le système d’exploitation UNIX, ont cherché à pouvoir être employés sur des machines différentes (capacité qu’on connaît, pour un langage de programmation, sous le nom de portabilité), tout en gardant un bon contrôle du matériel (hardware). Bien plus tard, à partir des années 1990, des langages d’une nouvelle génération sont apparus, à l’instar de Python et de C++, capables de décrire des logiques orientées objet — des langages qui sont devenus les plus prisés par les codeurs professionnels et avancés. Enfin, avec l’avènement récent de l’intelligence artificielle, Python est devenu l’outil plébiscité par la nouvelle génération de codeurs8.

La programmation orientée objet rapproche le code informatique du langage naturel sur le plan sémantique, c’est-à-dire en ce que ces langages désignent. Autrement dit, avec la programmation orientée objet, le plan symbolique se rapproche de celui des entités du réel, des objets. Or, sur le plan de la syntaxe, les langages orientés objet marquent un écart par rapport au langage naturel, du fait de l’apparition de symboles à la lisibilité réduite, voire nulle, pour les non-initiés.

Comparaison du langage naturel et langage de programmation. À gauche la famille « CompagnonAnimal » est décrite en langage naturel, à droite elle est écrite en Python.

Pour conclure ces paragraphes, disons que des efforts intenses et nombreux ont été nécessaires pour rapprocher la logique du fonctionnement de l’ordinateur du langage humain. Ce rapprochement a permis un certain degré de démocratisation de l’usage des ordinateurs, désormais à la portée des programmeurs et des ingénieurs9. Or, ces efforts ont rapidement trouvé leurs limites, tout en s’effectuant de manière problématique, par la mise en œuvre de stratégies susceptibles d’une lecture politique. Des langages de programmation plus efficaces que leurs aînés « verboses » – à l’instar du COBOL – ont fini par voir le jour avec le temps : des langages situés à une distance considérable du langage naturel humain, et qui demeurent assez illisibles pour les non-initiés, voire pour les experts à certains égards. Leur efficacité tient sans doute au fait qu’ils découpent les tâches selon une représentation symbolique des objets, s’approchant ainsi, sur le plan sémantique, de la manière dont l’humain accède au réel.

  1. Brian Cantwell Smith nous rappelle que le fait d’être « numérique » (en anglais digitality) n’est pas une propriété de quoi que ce soit pour un élément concret. Voir à ce sujet Brian Cantwell Smith, The Devil in the Digital Details (edited 2010, v75) [en ligne]. Madrid : Real Academia de Bellas Artes de San Fermando, Calcografía Nacional, 2010. disponible à l'adresse : http://www.ageofsignificance.org/documents/The%20Devil%20in%20the%20Digital%20Details.pdf.↩︎

  2. Ibid.↩︎

  3. Pour une architecture x86 et 32 bits. Cette liste de mots clés atteint le millier pour des architectures 64 bits.↩︎

  4. Par exemple PUSH veut dire push data onto stack, ADC désigne une addition avec retenue (comme celle de la figure XXXX), et MOVSB implique move byte from string to string.↩︎

  5. Qui emploie plus de mots que nécessaire pour décrire une opération.↩︎

  6. Edsger W. Dijkstra, Selected Writings on Computing: A personal Perspective. New York, NY : Springer, 1982, p. 130.↩︎

  7. Edsger W. Dijkstra, «On the foolishness of « natural language programming » ». dans : BAUER, Friedrich L., BROY, Manfred, DIJKSTRA, E. W., et al. (dir.), Program Construction. vol. 69 [en ligne]. Berlin, Heidelberg : Springer Berlin Heidelberg, 1979, p. 51‑53. [consulté le 20 juin 2025].↩︎

  8. L’index TIOBE mesure la popularité des langages de programmation parmi les codeurs professionnels et avancés. Voir à ce sujet https://www.tiobe.com/tiobe-index/ consulté le 20 juin 2025.↩︎

  9. C’est moins la disponibilité de langages de programmation que l’apparition des interfaces graphiques ce qui a véritablement massifié l’utilisation de l’ordinateur.↩︎

Citer cette pageCórdoba, Pablo-Martín. « À l'intérieur de la Tour de Babel ». Dans Fabriques des images numériques à la lumière du cinéma expérimental — Résonances anthropologiques et politiques des algorithmes au sein des arts contemporains, Thèse de doctorat en arts plastiques et photographie, Université Paris 8 Vincennes-Saint-Denis, École doctorale EDESTA (n°159), unité de recherche AIAC, 2026. https://www.pablomcordoba.com/fr/these/a-l-interieur-de-la-tour-de-babel/