Le code existe-t-il ? Phénoménologie d'un objet impossible

Un programme informatique n'est ni tout à fait une chose, ni tout à fait une idée — et cette indétermination constitue peut-être le problème métaphysique le plus fascinant de notre époque. Chaque jour, des milliards de lignes de code orchestrent nos vies : elles pilotent des avions, font battre des cœurs artificiels, décident qui obtient un prêt bancaire. Pourtant, personne ne sait vraiment ce qu'est un logiciel. Est-ce un texte ? Un processus ? Un objet mathématique flottant dans un ciel platonicien ? Une série de tensions électriques dans du silicium ? La question paraît abstraite, presque scolastique. Elle est en réalité vertigineuse : nous avons confié notre civilisation à des entités dont nous ne comprenons pas le mode d'existence.

La philosophie, longtemps indifférente à cette question, commence à s'en emparer. Et les réponses qu'elle propose bouleversent nos catégories les plus anciennes — celles de matière et de forme, de puissance et d'acte, de langage et d'action.

Quand le code disparaît : Heidegger et l'outil invisible

Pour comprendre comment le code existe, il faut d'abord noter un paradoxe : le code fonctionne précisément quand il se rend invisible. Vous lisez cet article grâce à des milliers de couches logicielles — système d'exploitation, navigateur, protocoles réseau, serveurs distants — dont aucune ne se manifeste à votre conscience. Le logiciel, quand il marche, s'efface.

Martin Heidegger, dans Être et Temps (1927), avait forgé un vocabulaire pour décrire exactement ce phénomène, bien avant l'ère numérique. Il distinguait deux modes d'être des objets que nous utilisons. Le marteau du charpentier, quand tout va bien, est zuhanden — « sous-la-main », prêt-à-l'emploi. Il se fait oublier. Le charpentier ne pense pas au marteau : il pense au clou, à la planche, au meuble qu'il construit. L'outil se retire de la conscience pour laisser place à l'action. Mais que le marteau se brise, et soudain il apparaît dans toute sa matérialité brute. Il devient vorhanden — « présent-sous-la-main », objet d'observation théorique. On le regarde, on l'examine, on constate ses propriétés.

David Berry, dans The Philosophy of Software (2011), a montré combien cette analyse s'applique au code avec une précision troublante. Le logiciel qui fonctionne est l'outil zuhanden par excellence : il est si bien retiré qu'on ignore jusqu'à son existence. Mais qu'un bug survienne — écran bleu, message d'erreur cryptique, plantage en cascade — et le code surgit brutalement dans la conscience. Il devient vorhanden, objet opaque et récalcitrant. Berry rappelle l'incident de 1979 à Cheyenne Mountain, quand un défaut logiciel déclencha une fausse alerte de missiles nucléaires soviétiques : en un instant, du code que personne ne regardait devint l'objet le plus visible — et le plus terrifiant — de la planète.

Heidegger identifiait trois modes de panne : la conspicuité (l'outil se casse — le bug classique), l'importunité (un élément manque — la dépendance absente, la bibliothèque introuvable) et l'obstination (quelque chose bloque notre projet — l'incompatibilité système). Tout développeur reconnaîtra ces trois frustrations quotidiennes. Le code n'apparaît à la conscience que sur le mode de la défaillance. Son être normal est le retrait.

Le langage qui agit : quand le code performe le réel

Mais le code n'est pas seulement un outil. Il est aussi, et peut-être d'abord, un langage. Un langage très particulier, toutefois, dont la philosophie du langage ordinaire peine à rendre compte.

En 1962, le philosophe britannique John L. Austin proposait une distinction devenue célèbre entre les énoncés constatifs (qui décrivent le monde : « il pleut ») et les énoncés performatifs (qui transforment le monde par le fait même d'être prononcés : « je vous déclare mari et femme »). L'énoncé performatif ne décrit pas une action — il est l'action. Inke Arns, dans un article de 2005, a eu l'intuition de rapprocher cette théorie du code informatique. Quand un programme contient l'instruction print("Hello World"), cette ligne ne décrit pas une impression à l'écran. Elle effectue cette impression. Le code est performatif au sens le plus radical du terme.

Plus encore : le code est peut-être le langage performatif le plus pur que l'humanité ait jamais créé. Les performatifs humains peuvent échouer de mille façons — Austin parlait de « conditions de félicité » : pour que « je vous déclare mari et femme » fonctionne, il faut que le locuteur soit habilité, que les personnes soient consentantes, que le contexte soit approprié. La parole humaine peut mentir, être ironique, rater sa cible. Le code, lui, ne ment jamais. Il ne peut qu'une seule chose : s'exécuter correctement ou planter. Une erreur de syntaxe est l'équivalent computationnel de prononcer un mariage quand on n'est pas officiant — un performatif « infelice », pour reprendre le terme d'Austin. Le code est un langage d'une sincérité absolue, non parce qu'il serait vertueux, mais parce que la catégorie même du mensonge ne s'y applique pas.

Arns rappelle d'ailleurs une analogie plus ancienne encore : celle du Golem de la tradition kabbalistique. Dans la mystique juive, le mot emet (אמת, « vérité ») inscrit sur le front d'une statue d'argile lui donne vie. Effacer la première lettre transforme emet en met (מת, « mort ») — et le Golem s'effondre. Du texte qui anime la matière, du langage qui engendre l'existence : le code est le dernier avatar d'un rêve vieux de plusieurs millénaires — celui du verbe créateur.

Puissance et acte : le programme qui n'a jamais tourné

Cette nature performative du code ouvre une question ontologique abyssale : un programme qui n'a jamais été exécuté existe-t-il en tant que logiciel ?

Le code source, stocké sur un disque dur, est un texte. On peut le lire, le copier, le versionner, le commenter. Il appartient au règne du logos — du langage, de la raison. Le programme en cours d'exécution, en revanche, est un processus : temporel, dynamique, éphémère. Il appartient au règne de la praxis — de l'action, du faire. Entre les deux, un gouffre. L'historien Michael Mahoney définissait le logiciel comme « le comportement des machines lorsqu'elles fonctionnent ». Si le logiciel est le comportement, alors le code qui dort sur un disque n'est pas du logiciel. C'est une partition qui n'a jamais été jouée. Une recette qui n'a jamais été cuisinée.

Aristote aurait reconnu ici sa distinction entre puissance (δύναμις, dunamis) et acte (ἐνέργεια, energeia). Le code source est le logiciel en puissance. L'exécution est son passage à l'acte. Mais cette analogie ne suffit pas, car le gland contient en puissance le chêne de façon univoque, alors qu'un même code source peut produire des comportements radicalement différents selon l'environnement d'exécution — le compilateur, le système d'exploitation, le matériel. Wendy Chun, dans Programmed Visions (2011), insiste sur ce point : « notre croyance que les compilateurs se contentent de développer les commandes de haut niveau — plutôt que d'altérer ou d'insérer d'autres comportements — est simplement cela : une croyance. » Le gouffre entre le texte et le processus n'est pas seulement ontologique. Il est aussi, comme le soulignent Chun et Alexander Galloway, politique : ceux qui savent lire le code source voient un monde différent de ceux qui ne perçoivent que l'interface.

Il n'y a pas de logiciel : la thèse radicale de Kittler

En 1992, le théoricien des médias Friedrich Kittler publie un essai au titre provocateur : There Is No Software. Son argument procède par descente vertigineuse dans les couches de la machine. Vous lancez un traitement de texte. Celui-ci tourne sous un système d'exploitation. Le système d'exploitation repose sur un BIOS. Le BIOS est gravé dans le silicium. À chaque niveau, une couche logicielle dissimule celle qui la porte. Et quand on atteint le fond — les transistors, les différences de tension électrique — « il n'y a pas de logiciel du tout », écrit Kittler. « Toutes les opérations de code, malgré leurs facultés métaphoriques comme call ou return, se réduisent à des manipulations locales de chaînes de caractères, c'est-à-dire, j'en ai peur, à des signifiants de différences de voltage. »

La thèse est d'un matérialisme brutal. Le logiciel serait une illusion — un voile jeté sur la réalité nue du matériel. Les interfaces graphiques « dispensent de l'écriture elle-même » et « cachent une machine entière à ses utilisateurs ». La hiérarchie des langages de programmation fonctionne comme une « fonction à sens unique » en cryptographie : facile à calculer dans un sens (du code source au binaire), impossible à inverser. Le logiciel dissimule sa propre origine. Pour Kittler, le dernier véritable acte d'écriture humaine fut celui des ingénieurs d'Intel dessinant à la main le plan du microprocesseur 4004 au début des années 1970. Après cela, la conception requiert des ordinateurs qui conçoivent d'autres ordinateurs — et l'écriture humaine cède la place à l'auto-engendrement machinique.

Position séduisante, mais insuffisante. Car elle échoue à expliquer pourquoi le même algorithme, implémenté sur des matériels radicalement différents — un processeur Intel, un processeur ARM, un ordinateur quantique — produit les mêmes résultats. Si le logiciel n'était que voltage, changer le substrat physique devrait changer le résultat. Or ce n'est pas le cas. Quelque chose persiste à travers les incarnations matérielles — et ce quelque chose, quoi qu'il soit, est ce que nous appelons « logiciel ».

L'objet numérique comme mode d'être inédit

C'est ici qu'intervient le philosophe Yuk Hui, dont l'ouvrage On the Existence of Digital Objects (2016) constitue la tentative la plus rigoureuse pour penser l'ontologie du numérique. Hui opère une synthèse audacieuse entre deux traditions : la phénoménologie heideggérienne (qu'est-ce que l'Être des objets numériques ?) et la philosophie de l'individuation de Gilbert Simondon (comment les objets techniques adviennent-ils à l'existence ?).

Simondon, dans Du mode d'existence des objets techniques (1958), avait proposé de penser les objets techniques non par leur utilité mais par leur genèse. Un objet technique évolue de l'abstrait (éléments disjoints, assemblés de façon lâche) vers le concret (système de plus en plus intégré, cohérent, fonctionnant en symbiose avec son milieu). Hui transpose ce schéma aux objets numériques : l'évolution des langages de balisage — du GML au HTML, du XML aux ontologies du Web sémantique — illustre un processus de « concrétisation » où les objets numériques deviennent progressivement plus riches en relations internes et plus profondément imbriqués dans leur environnement.

Mais Hui va plus loin que Simondon. Pour lui, l'objet numérique — une vidéo en ligne, un fichier, un profil utilisateur, composé de données et de métadonnées régulées par des schémas — n'est ni un objet naturel ni un objet technique classique. Il est constitué par ses relations : relations techniques (métadonnées, protocoles, code) et relations existentielles (émotions, souvenirs, collectivités qu'il suscite). L'objet numérique n'a pas de substance au sens classique. Il est un nœud dans un réseau de relations — et ce réseau est son mode d'être.

Cette perspective éclaire le problème vertigineux de la copie numérique. Quand vous dupliquez un fichier, créez-vous un nouvel objet ou le même ? Dans le monde physique, l'identité est liée à la continuité matérielle : ce bateau est le bateau de Thésée parce qu'il occupe une trajectoire spatio-temporelle continue. Mais les objets numériques peuvent être dupliqués parfaitement — bit pour bit identiques. La métaphysique traditionnelle, construite pour un monde où les copies sont toujours imparfaites, n'a tout simplement pas de catégorie pour ce phénomène. Le philosophe Nurbay Irmak propose de considérer le logiciel comme un « artefact abstrait » — abstrait en ce qu'il ne possède pas de localisation spatiale, mais artefactuel en ce qu'il est créé intentionnellement par des êtres humains et peut être détruit. Comme une œuvre musicale, il peut exister en multiples instanciations sans qu'aucune ne soit plus « réelle » que les autres.

Le code comme nouveau mode d'être-au-monde

Ce qui émerge de ces réflexions croisées, c'est l'idée que le logiciel constitue un mode d'existence véritablement inédit — irréductible aux catégories héritées de la tradition philosophique. Il n'est ni l'objet matériel d'Aristote, ni la forme pure de Platon, ni le texte des herméneutes, ni le simple outil des pragmatistes. Timothy Colburn le nommait « abstraction concrète » — oxymore délibéré. Brian Cantwell Smith, dans On the Origin of Objects (1996), le situait dans une « distance moyenne » entre engagement et séparation, ni purement abstrait ni pleinement concret. Luciano Floridi proposait de le penser comme « entité informationnelle », analysable à travers des niveaux d'abstraction empruntés à la fois à Kant et à l'informatique elle-même.

Aucune de ces tentatives n'est pleinement satisfaisante. Et c'est peut-être là le point essentiel. Le code résiste à l'ontologie parce qu'il est fondamentalement hybride : texte et processus, abstrait et matériel, inerte et performatif, invisible et omniprésent. Il est un outil qui se retire (Heidegger), un langage qui agit (Austin), une forme qui persiste à travers ses incarnations (Simondon), un nœud de relations qui constitue un monde (Hui).

Peut-être faut-il accepter que le code nous oblige à inventer de nouvelles catégories ontologiques — comme l'atome, en son temps, obligea les physiciens à inventer la mécanique quantique parce que ni « onde » ni « particule » ne suffisaient. Le logiciel n'est ni matière ni esprit. Il est autre chose. Et le fait que nous n'ayons pas encore de mot pour le dire n'est pas un échec de la pensée — c'est le signe qu'elle a encore quelque chose à découvrir.

L'enjeu dépasse la pure spéculation. Quand nous ne savons pas ce que le code est, nous ne savons pas non plus ce qu'il nous fait. Comme le rappelait Heidegger à propos de la technique en général : le danger n'est pas dans les machines, mais dans notre incapacité à penser leur essence. Le code qui pilote nos existences mérite mieux que notre indifférence ontologique. Il mérite une philosophie à sa mesure — une philosophie qui reste, pour l'essentiel, à inventer.