• Aucun résultat trouvé

De la logique à l algorithme : la traduction dans le design de programmes

N/A
N/A
Protected

Academic year: 2022

Partager "De la logique à l algorithme : la traduction dans le design de programmes"

Copied!
20
0
0

Texte intégral

(1)

24 | 2022

Traduction & Design

De la logique à l’algorithme : la traduction dans le design de programmes

From Logic to Algorithm: Translation in Program Design

Kim Sacks

Édition électronique

URL : https://journals.openedition.org/appareil/4732 DOI : 10.4000/appareil.4732

ISSN : 2101-0714 Éditeur

MSH Paris Nord Référence électronique

Kim Sacks, « De la logique à l’algorithme : la traduction dans le design de programmes », Appareil [En ligne], 24 | 2022, mis en ligne le 18 juillet 2022, consulté le 27 juillet 2022. URL : http://

journals.openedition.org/appareil/4732 ; DOI : https://doi.org/10.4000/appareil.4732 Ce document a été généré automatiquement le 27 juillet 2022.

Creative Commons - Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International - CC BY-NC-ND 4.0

https://creativecommons.org/licenses/by-nc-nd/4.0/

(2)

De la logique à l’algorithme : la traduction dans le design de programmes

From Logic to Algorithm: Translation in Program Design

Kim Sacks

1 Les designers cherchent à définir des règles, à jouer avec la machine : mais sont-ils capables de modifier le fonctionnement des logiques machiniques ? Le langage des machines résiste à l’usager et la machine impose sa logique aux designers. S’ils veulent être en mesure d’en comprendre suffisamment le fonctionnement pour lui proposer de nouvelles règles – et, en conséquence, donner la possibilité à la machine d’opérer selon un jeu d’instructions et une structure de logique interne différente que celle fixée lors de sa conception – ils doivent en accepter la réalité machinique. « Ce qui demeure un problème est seulement la réalisation de ces strates qui, exactement comme les technologies médiatiques modernes, sont délibérément inventées dans le but d’échapper à toute perception. Nous ne savons simplement pas ce que nos écritures font1. » Cette opacité et cette résistance des machines au langage, sur lesquelles insiste Friedrich Kittler, seraient des conséquences de la stratification des logiques de traductions internes à la machine.

2 Voici des situations que certains designers de programmes reconnaîtront probablement : (1) plantage, stack overflow2, ou encore, (2) des moments où ils écrivent quelques lignes de code, tout semble fonctionner, mais le résultat n’est pas celui attendu. Ils vérifient le code, la syntaxe est bonne, mais la forme n’est pas celle prévue.

Dans le premier cas (1), il s’agit d’une faute de syntaxe. Dans le second (2), la syntaxe est bonne mais la sémantique ne reflète pas l’intention du designer. Pourquoi ? Parce que les strates sous-jacentes et la complexité des langages de programmation tendent à favoriser une méthodologie de recherche par tâtonnement plutôt que la connaissance préalable des logiques sous-jacentes, « afin d’aller au-delà de l’impression de boîte noire3 », comme le souligne Églantine Schmitt.

(3)

3 foreach(){...}, if(){…} else{...}, and, or, &&, || ; toutes ces chaînes de caractères sont familières pour les designers ayant un champ d’exercice intégrant des outils numériques. Ces groupes syntaxiques, bien souvent un hybride d’anglais et de syntaxe propre au langage de programmation, dérivent des structures du langage et de la logique formelle et aristotélicienne4. En mathématique, ainsi qu’en programmation, la logique formelle est une logique de raisonnement portant sur la déduction, en faisant abstraction de la vérité (ou non) des prémisses. Les propositions sont évaluées par des connecteurs logiques (si, et, ou) et sont validées par inférence. Lorsque le design se dote d’instruments programmatiques, la conception doit être traduite en logique formelle pour être ensuite traduite en code, et enfin, de nouveau traduite en binaire exécutable par nos machines. Le langage de programmation s’impose, dans le design de programmes, comme le mode privilégié de production de formes applicatives, à l’instar du design d’interface ou de la visualisation de données. Nous entendons par design de programmes tout champ ayant un outil de production impliquant du code. Soulignons en outre, que le mot « code » employé dans le design des programmes renvoie étymologiquement au codex grec : il étend son acception depuis sa signification de

« registre » ou « recueil », puis par extension au champ de la logique, de la linguistique, de l’informatique et de la cybernétique, il signifie « un système de concordance de signes ». Le mot « code » ne renvoie pas directement à la dissimulation, mais son sens se mélange à celui de « kryptos » du fait de l’emploi de « code secret », lui-même un

« recueil de conventions constituant un ensemble de signes »5, d’où la proximité sémantique à l’usage avec le terme « cryptage ». La cohabitation du code et du langage, au sein de l’informatique contemporaine, souligne encore davantage la dissimulation des logiques propres au cœur des machines.

Nous émettons les hypothèses suivantes :

- que les limites et intersections entre la traduction et les programmes se situent dans la cohabitation de différentes logiques, particulièrement la logique formelle et la logique booléenne.

- que la complexité des machines résulte d’une stratification, et que de cette stratification découle une succession de traductions qui rend la logique machinique résistante à l’entendement.

- que la spécificité de l’automatisation technique de la traduction des langages de programmations implique nécessairement un modèle non-réversible de traduction, hérité de la cryptographie.

- qu’il existe un modèle utopique du potentiel machinique qui serait l’épuisement total des possibles, puisque, si tout est quantifiable, tout peut relever d’un processus computationnel.

Traduction et logique booléenne

4 Du point de vue strictement mathématique, le design n’est pas rigoureux. Les designers ne sont aux prises qu’avec des outils qui permettent un certain tâtonnement, et non l’expression d’un raisonnement rigoureux à l’aide de méthodes formelles qui impliquent des modes de validation par des vérifications formelles. Dans le contexte où le designer s’attache à produire des formes à l’aide d’outils informatisés, la machine exécutera son programme, et de ce fait, son médium informatique contraint sa production par une logique programmatique propre, que le designer doit tenter de

(4)

s’approprier. Il cherche alors à parler grâce à la machine. Mais cette machine ne parle pas, elle comprend encore moins, elle exécute une logique stricte, dans un va-et-vient constant entre des niveaux de programmes distincts ; les couches de programmes empilés les uns sur les autres (jeux d’instructions, système d’exploitation, etc.) impliquent des traductions successives des syntaxes spécifiques à chaque couche.

Pourtant, les designers se dotent d’outils qui ne reflètent pas les logiques machiniques sous-jacentes. Ils ne travaillent bien souvent qu’avec la compréhension des outils en surcouche (ceux accessibles via l’interface utilisateur), et très rarement, ils s’attachent à discerner ce qui se passe au sein même de la machine. Ils utilisent des applications qui dépendent d’un système d’exploitation qui lui-même dépend d’une succession de couches logicielles entre la machine (électronique) et l’utilisateur final.

5 Des Premiers analytiques6 d’Aristote, ce que l’on retient principalement ce sont les syllogismes. Pourtant, il semble particulièrement intéressant, dans le cas du design des programmes, de souligner l’introduction de ce que nous appelons communément des variables, c’est-à-dire, l’utilisation de conteneurs sans contenu spécifique. Par exemple, A est B, où A et B peuvent prendre des valeurs variables (« L’homme est mortel »). Cette logique d’abstraction se développe dans ce que l’on qualifie de logique formelle, à savoir, un système de logique dans lequel on raisonne sur les structures des arguments avec un système abstrait de déduction (par inférence). Nos machines s’appuient dans une certaine mesure sur la logique de premier ordre, formalisation mathématique du calcul de prédicats, énoncée par Gottlob Frege à la fin du XIXe siècle, dont la théorisation des fonctions et variables ouvre la voie à l’algorithmie contemporaine.

Cette procédure formelle découle d’une logique et se traduit dans un programme répétable qui peut, potentiellement, contenir des variables, donc toujours transparent pour les contenus. On perçoit que cette abstraction aux contenus renforce l’imaginaire d’une tension structurante des technologies, à savoir celle opposant la transparence et l’opacité.

6 Rappelons le principe suivant : au niveau de l’électronique de la machine, l’information est un potentiel électrique. Comme le rappelle Warren Weaver en évoquant le travail de Claude Shannon (que l’on élaborera plus loin), l’information n’a pas de sens, ce n’est pas de la sémantique : l’information c’est le potentiel du message, « le mot information dans la théorie de la communication ne renvoie pas tant à ce qui est dit qu’à ce qui pourrait être dit. À savoir, l’information est la mesure de la liberté de choix de chacun lorsque celui-ci sélectionne un message7. » Nos machines, dites numériques, sont, dans la vaste majorité de leurs conceptions, binaires. Un bit est un conteneur qui a le potentiel de prendre deux valeurs, allumé ou éteint, que l’on notera par convention 1 ou 0. Le mathématicien George Boole, d’abord dans son court ouvrage The Mathematical Analysis of Logic8, puis avec davantage de précision dans An Investigation of the Laws of Thought9, propose l’utilisation des signes 0 et 1 comme signifiants du Rien et de l’Univers10. Il s’attarde à étendre la logique aristotélicienne de l’Organon, spécifiquement les Premiers analytiques11, et propose une spécification de la logique mathématique. Comme le note le logicien et mathématicien John Corcoran, dans son analyse comparative d’Aristote et de Boole12, si les travaux d’Aristote ont initié la logique philosophique, la publication de Laws of Thought en 1854 a été le déclencheur de toute la logique mathématique jusqu’à nos jours. Pourtant, dès l’ouverture de son traité, Boole annonce qu’il s’inscrit dans l’héritage philosophique de la logique aristotélicienne, et qu’il cherche à ouvrir son champ d’application en admettant que son travail n’a vocation qu’à étendre la logique

(5)

déductive et scolastique13. Il ne cherchera ni à extraire la logique mathématique de la philosophie, ni à les opposer, mais plutôt, comme en atteste le texte de 1847, à énoncer que la logique relève davantage d’une nouvelle forme de mathématiques que de philosophie. Boole cherche, en somme, à proposer une formalisation de la logique de la pensée en une logique mathématique, et ainsi, à lui offrir une rigueur dans les définitions et les opérations qui la composent. Il consacrera en outre tout un chapitre des Laws of Thought à la logique aristotélicienne. Ses écrits ont eu une influence considérable sur les évolutions des technologies de la communication, et spécifiquement, sur l’implémentation de la logique dans des circuits imprimés. Ainsi, les principes implicites de Dictum de omni et nullo (précepte du tout et du rien)14 se retrouvent très clairement dans les prémisses de la logique mathématique posées par Boole15, et conséquemment, dans le formalisme booléen. L’algèbre de Boole, soit l’approche algébrique de cette logique, applique un nombre important des principes énoncés, spécifiquement le calcul formel des propositions en fonction des valeurs de vérités {VRAI, FAUX} des propositions. Il semble évident que ce système occupe une place prépondérante dans les machines électroniques et particulièrement l’informatique.

Utopie d’unification binaire

7 Les paradigmes de programmation supposeraient que la machine rende possible l’utopie d’unification linguistique : elle permettrait d’automatiser et autonomiser les étapes de traduction, les rendant transparentes pour le designer. Ainsi, il ne reste comme outil qu’un langage générique, une langue source, interopérable et reproductible, puisque dans le cadre des programmes, il n’existe pas de dépendance entre langage source et langages cibles ; tous les langages de programmation sont traduits vers le binaire.

8 C’est exactement ce que vont théoriser Claude Shannon et Warren Weaver dans A Mathematical Theory of Communication16 en proposant le fondement théorique du modèle binaire appliqué à la communication. L’unité de mesure de l’information, le bit, version contractée de binary digits, y apparaît pour la première fois, terme dont Shannon attribue la paternité au mathématicien John Tukey17. L’implication technique du bit dans un circuit est le potentiel de stockage d’un bit d’information dans un seul composant à deux états. Ainsi, Shannon explique que cette unité de mesure impose l’utilisation du logarithme de base 2 pour déterminer le nombre de combinaisons potentielles, et, a fortiori, la quantité d’information potentielle18. La logique, unifiée au sein de l’électronique numérique, résulte du déterminisme des systèmes où le nombre d’états est fini ; en mettant en œuvre, grâce à de l’électronique, l’appareillage technique de l’algèbre de Boole, la machine se dote d’une logique strictement binaire, c’est-à-dire, capable de travailler sur des syntaxes complexes exclusivement à partir d’une entité à deux états et matérialiserait en ce sens le potentiel utopique du précepte du tout et du rien. Cette logique machinique de bas niveau (l’informatique machinique) est jusqu’à l’arrivée hypothétique d’alternatives comme la quantique, uniquement et exclusivement fondée sur les fonctions logiques combinatoires et les fonctions logiques séquentielles. Il est important de rappeler que les processeurs de nos machines sont construits en imprimant des circuits complexes de transistors grâce à des matériaux semi-conducteurs ; l’agencement des transistors permet en outre de mettre en œuvre

(6)

les fonctions logiques. Tous les algorithmes et calculs découlant de la logique booléenne peuvent être composés d’une organisation de portes logiques. Ces portes logiques, modélisations des fonctions logiques booléennes, se traduisent dans la majeure partie des cas par des transistors interférant avec le courant électrique afin de l’agrémenter d’opérateurs logiques. En algèbre de Boole, on dit alors que le bit est l’ensemble des valeurs de vérité {1,0}. Il n’existe que quelques opérations de base : unaires, non- proposition, binaires, ET, OU, NON, implication, équivalence, NONET, NONOU, Ouexclusif (disjonction exclusive). À eux seuls, les opérateurs logiques ET, OU, NON sont suffisants pour constituer toutes les logiques sous-jacentes à l’électronique, et conséquemment, érigent un système unifié capable de contenir tous les logiciels. Il semble que cette restriction logique participe inévitablement d’un imaginaire du tout computationnel, s’appuyant sur l’utopie d’un potentiel infini du software matérialisé par le hardware. Précisons que l’apparition du mot « software » en anglais, désigne de façon abstraite ce qui s’oppose au matériel machine, le « hardware ». Pourtant, dans l’acception de sa traduction « logiciel » – logique matérielle – le mot se détache de son intrication à la machine ; dans le sens commun, le mot semble désigner davantage des interfaces utilisateurs que des agrégations de programmes relevant de la logique computationnelle.

Logique appliquée aux machines

9 Les designers travaillent avec des langages qui reprennent à haut niveau (l’informatique utilisateur) certaines logiques de bas niveau. Nous ajouterons que les designers produisent avant tout selon des modalités computationnelles qui relèvent davantage de l’ordre du programme (prédétermination) que du logiciel. Ainsi, les fonctions booléennes et les validations de valeurs de vérités se retrouvent dans la plupart des langages programmatiques contemporains, à ceci près que différents langages utilisent différents signes pour représenter les opérateurs logiques : par exemple, AND, OR, NOT en python, et && (AND), || (OR), ! (NOT) en C ou en javascript. Si, selon les langages, la syntaxe diffère, il reste que la logique des tests de valeurs de vérité demeure identique. Le designer manipule donc des choix potentiels. Il traduit sa logique en utilisant des connecteurs : les connecteurs permettent de composer de nouvelles propositions à partir de plusieurs propositions, et formalisent les opérations logiques. Il utilise des conteneurs (des variables), et construit la logique propre à son programme en proposant une procédure par succession de tests, d’attribution de valeurs, et de déduction en fonction des valeurs des variables. Bien entendu, le designer ne jongle pas exclusivement avec des types booléens, des valeurs {1,0}, mais avec des syntaxes de logiques intermédiaires, incluant d’autres types de valeurs : chaînes de caractères (str), nombre flottant (float), nombre entier (int), etc. Toute la difficulté du design de programmes se focalise sur le fait qu’un programme est transparent à la valeur de vérité, mais opère strictement sur la logique, indépendamment du résultat du calcul des propositions (ou des prédicats). Un programme fonctionne comme une abstraction de la logique du designer, traduite dans un langage qui propose un potentiel de combinaison de choix découlant de la logique machinique.

10 Le programme informatique est une séquence textuelle de symboles interprétables par une machine. Le designer conduit sa logique à l’aide de langages programmatiques modernes que l’on qualifie communément de Turing complete ; c’est-à-dire que les

(7)

langages peuvent faire tout ce que peut faire une machine de Turing19. Exception faite de la finitude de la mémoire, que Turing évacue en proposant une machine computationnelle théorique. Autrement dit, Turing élabore les conditions nécessaires et suffisantes pour produire toutes les logiques à l’aide d’une machine. Lorsqu’il élabore les bases de sa machine universelle, Turing travaillait sur la résolution formelle d’un problème de logique de premier ordre posé en 1928 par David Hilbert et Wilhelm Ackermann, l’Entscheidungsproblem, soit le problème de décision. Le travail de Turing ayant déjà été commenté à maintes reprises, nous ajouterons simplement qu’en conséquence de ses recherches, les langages de programmation réemploient un certain nombre de méthodes théorisées afin de mettre en œuvre les logiques computationnelles et offrent aux usagers des outils de logique sous forme de séquences de symboles. Implicitement, cela signifie que les langages de programmation proposent plusieurs choses : une capacité à faire des conditions (if, else), et en conséquence, de se déplacer en mémoire pour exécuter/accéder à une autre adresse d’instruction. Cela traduit donc les logiques de bas niveaux des machines, les portes logiques, et déplace l’accès à ces fonctionnalités vers un langage de programmation accessible aux designers, donnant ainsi à ces derniers l’appareillage technique nécessaire à la production de logique algorithmique.

Traduction, cryptanalyse et chiffrement

11 Une chaîne de caractères (str) en langage naturel – disons le mot « design » en UTF8 – se traduit en langage machine – en hexadécimal, « 64 65 73 69 67 6e » et donc en binaire

« 01100100 01100101 01110011 01101001 01100111 01101110 ». Il y a déjà là deux étapes successives, dissimulant le sens du mot derrière une syntaxe binaire. Pour faire le cheminement inverse, la machine procède par analyse. Du point de vue d’une machine, il y a peu de différence entre la cryptanalyse et la traduction. La traduction en computational linguistics (linguistique informatique), c’est déjà de l’algorithmie, comme va le suggérer Noam Chomsky avec sa formalisation des structures grammaticales, plus spécifiquement la forme normale20. La linguistique informatique serait alors un décryptage d’information par de l’algorithmie. Comprendre et interpréter une chaîne de caractères (dans un encodage dont on ne possède pas la clef) revient au même que de trouver des structures, dans l’écriture, qui évoquent quelque chose que l’on tente de décrypter. Cette proximité, nous la percevons comme essentielle afin de comprendre pourquoi et en quoi les logiques machiniques résistent à l’entendement. Dans un contexte de traduction d’une information vers une autre information ayant la même sémantique, l’opération de traduction est similaire à une opération de chiffrement : ce dernier répond à des logiques propres, comme le fait d’utiliser des séquences d’instructions (permutations, substitutions, etc.) dans le but de transformer une chaîne de caractères en une autre chaîne de caractères non lisible sans la clef de chiffrement.

12 Nous pouvons poser que la traduction est une technique de substitution d’une langue à une autre. On prend une phrase ou une proposition (grammaire), on lui assigne une syntaxe différente avec la même valeur sémantique. La question de la substitution nous semble particulièrement intéressante en ce qu’elle fait intervenir plusieurs aspects de l’algorithme, tels que définis par le mathématicien Donald Knuth21 : l’utilisation de variables (soit un conteneur dont le contenu peut être changé), des méthodes d’assignation de valeurs, et une logique structurelle de la syntaxe. Cette proximité

(8)

technique entre le potentiel computationnel des machines et la traduction, que Weaver évoque dans sa correspondance avec Norbert Wiener en 194722, illustre la perméabilité du champ de la linguistique avec celui de l’informatique. À la suite de cette correspondance, Weaver rédige son célèbre memorandum intitulé « Translation » en juillet 194923, dans lequel il pose les bases théoriques du potentiel de la traduction machinique : il rapproche l’encodage de la langue des mathématiques, en rappelant particulièrement la flexibilité de la logique informatique. Il propose de percevoir ce qui dans la langue relève d’invariants, et part du postulat qu’il n’existe que peu de distinctions formelles entre la traduction et le chiffrement. D’autant que le code informatique, s’il a vocation à rendre intelligible la logique sous-jacente, relève également d’un langage spécifique, avec ses syntaxes propres.

13 Retraçant les origines du memorandum, Quinn DuPont souligne qu’il s’agit là davantage d’une traduction-cryptanalytique que de traduction-cryptographique, en ce que le processus de traduction découle, selon lui, d’un mode interprétatif d’un langage inconnu ; en admettant la possibilité de l’erreur et la place importante d’une forme d’intuition analytique, l’information encryptée peut finalement être analysée notamment par une méthode classique dite d’analyse fréquentielle24. La première apparition écrite d’une mention de l’analyse fréquentielle – et de façon générale, les premiers textes traitant des méthodes de décryptage25 – se trouve, dès le IXe siècle, dans les travaux du philosophe Abu Yūsuf Yaʻqūb ibn ʼIsḥāq aṣ-Ṣabbāḥ al-Kindī26 : ainsi, l’auteur, coutumier des écrits d’Aristote et de sa logique, décrit l’utilisation de l’inférence statistique en vue du décodage d’un message encrypté. DuPont remarque que le terme de cryptanalyse (istihrag al-mu‘amma) qualifiait non seulement la méthode de conversion d’un texte encrypté en un texte décrypté, mais que ce processus était quelquefois nommé at- targama, qui signifie tant interprétation que traduction27. Avec ce cadrage, il en conclut que la traduction machinique et la cryptanalyse sont intrinsèquement mêlées.

14 En ce sens, le traducteur/analyste opère à l’aveugle, en interprétant, en produisant une analyse des fréquences de lettres et/ou de mots, afin de décrypter/traduire vers une langue intelligible. Or, dans son memorandum de 1949, Weaver souligne que l’utilisation de méthodes probabilistes et statistiques ne nécessite pas la compréhension, simplement la substitution ; cette méthode, allouée au potentiel computationnel, permettrait non seulement de traduire un texte, mais de le traduire sans en connaître la langue source, à l’instar donc de la traduction-cryptanalytique. Ainsi, en appliquant les bonnes méthodes, un texte dont la langue source serait le turc, une fois encrypté, pourrait être décrypté par quelqu’un ne comprenant pas le turc. Weaver émet l’hypothèse d’un déplacement de la cryptographie vers une application dans le cadre de la traduction machinique. Il souligne l’importance de garder à l’esprit que de nombreuses langues possèdent les mêmes structures de logique syntaxique. Il propose d’appréhender le langage comme des suites de lettres, répondant à des règles statistiques strictes, et donc permettant une interprétation ou traduction computationnelle par des méthodes analytiques. Si nous percevons les limitations sémantiques d’une telle hypothèse, l’auteur ajoute que l’héritage des connaissances en cryptographie permettrait de résoudre de nombreux problèmes, particulièrement, par l’utilisation de projections probabilistes afin de déterminer l’occurrence des mots dans un contexte donné. Bien entendu, cette non-nécessité du sens semble avoir ouvert les perspectives de la traduction machinique, tout en participant de l’opacification des logiques internes aux machines.

(9)

15 Or, comme le précise Weaver, la capacité d’un système de communication n’est pas à décrire en termes de signes mais en termes d’information ; penser un système à partir du mot serait donc une mauvaise interprétation du concept même d’information. Il faudrait selon lui le définir en fonction de la source, de la longueur des différentes chaînes et surtout, par rapport à la nature de l’encodage des informations immédiatement environnantes28. En tout état de cause, du fait de la nécessité d’être transmis dans des canaux de communication électrique, il incite à penser le signal comme relevant exclusivement d’un processus d’encodage et de décodage (de l’émetteur et du récepteur). Il ajoute que cet encodage ne s’effectue jamais strictement sur le symbole lui-même mais sur les symboles qui le précèdent, ainsi que sur leur encodage. Cette approche contextuelle de l’information favorise inévitablement une résistance des logiques machiniques face à l’appréhension des designers. Il est important de noter que si le mot « communication » s’applique au télétype ou au morse comme dans les exemples choisis par Shannon et Weaver, celle-ci est effective au sein même des machines lorsque plusieurs composants se transmettent de l’information.

Ainsi, l’encodage de l’information se conçoit de façon quantitative, et relève donc de méthodes de prédictibilité par une succession de choix, modélisées par des arbres de décisions.

16 L’affirmation de la traduction-cryptanalyse comme fondement de la traduction machinique présuppose que l’on attribue contre-intuitivement au langage une structure régie par des règles. Et, comme nous l’avons énoncé plus haut, la machine fonctionne sur une logique combinatoire et séquentielle de choix. Or, ici s’opposent deux choses : d’une part, pour la machine, le nombre de choix augmentant, l’entropie augmente (soit la mesure du niveau d’aléa du système). Pourtant, à l’inverse, le langage (écrit) est une suite de lettres qui répond à un ordre généralisé, et donc se situe à un niveau bas voire nul d’entropie. C’est un des points importants de l’approche programmatique de la traduction : une chaîne de caractères répond à des lois probabilistes séquentielles, chaque lettre étant directement dépendante de la lettre la précédant. Cela paraît relativement évident de penser qu’il est plus simple de prédire la seconde lettre d’un mot, si l’on sait que la première lettre est un « w » plutôt qu’un

« d », vu le peu de mots commençant par « w » en français. Ce point précis, déjà évoqué par al-Kindī, Weaver le traite en ouverture de son texte29 et avance que cette règle probabiliste peut également s’appliquer très facilement à des séquences de mots. Ce processus, appelé chaîne de Markov, semble d’autant plus pertinent dans le champ de la traduction qu’il introduit la dépendance au contexte, à l’environnement immédiat au sein des séquences30 – question éminemment critique pour la linguistique et la traduction. La linguistique computationnelle recourt ainsi fréquemment à l’utilisation de modèles probabilistes n-gram, formes appliquées de chaînes de Markov au modèle du langage.

Traduction et utopie computationnelle

17 Dans le cadre des programmes, on définit l’encodage comme complètement transparent au « sens » ; en théorie, il serait possible de décoder des langues sans rien y comprendre. Si dans le champ de l’informatique, le texte se traite par l’analyse de l’information, des signes, il participe de l’idée utopique dans l’imaginaire collectif que

(10)

toutes les informations sont computationnelles – langage inclus – et donc que l’on peut les traiter par de l’algorithmie. Cette idée a ses limites.

18 Comme l’a postulé Chomsky à propos de la grammaire au sein du langage, préfigurant les futures composantes de la grammaire générative, la syntaxe peut être appréhendée indépendamment de la sémantique31. De fait, ce serait cette indépendance qui rendrait la traduction machinique proche de la cryptanalyse. La syntaxe s’attache à la manipulation des connaissances, alors que la sémantique s’attache au contenu. La conséquence de cette distinction est qu’il est envisageable, en ayant recours à un encodage standardisé, de traduire une logique en programme mécanisé (ou mécanisable), par la syntaxe. L’enjeu de la traduction des langues est bien entendu de conserver la sémantique malgré un changement syntaxique. En revanche, du point de vue de la machine/informatique, qui ne s’attache (à bas niveau) qu’à la syntaxe, une chaîne de caractères en anglais et une chaîne de caractères en hébreu ayant le même sens, la même sémantique, sont traitées comme deux choses strictement distinctes. Le test d’adéquation grammaticale s’effectue alors sur la structure syntaxique et non sur le test de compréhension sémantique. En s’attachant à la logique de propositions, il est possible d’avoir plusieurs phrases qui expriment une seule et unique proposition : par exemple, en changeant le lexique (godet/gobelet) ou encore, en traduisant dans une autre langue, voire en changeant l’alphabet (anglais/hébreu). Or, Chomsky souligne l’insuffisance des processus de Markov pour une application dans le langage naturel32. De plus, Antonio Casilli et Dominique Cardon renforcent cette insuffisance en insistant sur l’échec de la traduction machinique, puisque « la machine ne traduit pas : elle calcule l’estimation statistique de la meilleure traduction de ces deux (trois, quatre, etc.) mots, en les comparant à toutes les autres traductions qu’elle a en mémoire33. » Donc, au sein d’un modèle computationnel, on pourrait avancer qu’il y a une divergence fondamentale entre les intérêts de l’analyse des structures syntaxiques et celle de la sémantique ; ainsi, du côté de la machine, l’enjeu de la traduction ne se situerait pas dans la sémantique mais strictement dans la syntaxe, et ne relèverait pas, par sa technique, de la compréhension du langage.

19 Nous reprenons donc notre hypothèse d’ouverture : ce serait, pour partie, cette divergence qui produirait une architecture incompréhensible pour le designer. Qu’il s’agisse des intuitions au sujet de l’étude statistique de Weaver ou de la relation traduction-cryptanalyse à l’encodage, il semble que l’on prête aux machines un potentiel utopique dépassant largement le cadre du formalisme. Une machine universelle capable de tout et de rien, nous rappelant quelque-part le dictum de omni et nullo. Ce serait donc la projection de cette société idéale, rendue théoriquement possible par l’accomplissement machinique, qui s’incarnerait dans l’utopie fonctionnaliste des logiciels, et qui conséquemment inviterait à penser les logiques matérielles comme des dispositifs idéologiques. Puisque cette utopie incarnerait le mode technique d’accomplissement de tout, allant de la modélisation projective comportementale au déterminisme technologique, il s’agirait en outre que cette utopie procède de l’application technique de la logique machinique au monde. Ainsi, l’apparente fonctionnalité adossée à l’idéal universel des logiques matérielles renforce l’idée d’une transparence machinique par le biais de son inhérente technicité. La machine aurait le potentiel, via l’apprentissage, d’automatiser toute traduction, répondant encore davantage à l’utopie d’unification des langues vers un seul et même langage machine.

En outre, ceci s’avère corroboré par le fait que toutes nos machines sont conçues avec

(11)

en leur cœur des structures logiques identiques. Cette utopie est d’autant plus inscrite dans l’imaginaire collectif qu’un grand nombre de projets s’appuient sur le potentiel combinatoire des programmes pour donner des formes à des tentatives d’épuisement algorithmique : le potentiel machinique serait alors l’épuisement des possibles dont la finalité est l’épuisement total (et quantifiable) d’un processus computationnel, à l’image de la transposition numérique de la librairie de Babel34. Et ceci est exacerbé par les limites techniques à certains problèmes inhérents à la machine, comme le problème de décision déjà évoqué plus haut, et dont, paradoxalement, l’algorithmie35 serait la solution.

Abstraction logique

20 Aux prises avec la machine, le designer traduit d’abord sa logique en code dans un langage de programmation qu’il choisit. Puis, il compile son programme – il convertit son code source en code binaire ; il produit un algorithme pour le traduire dans la réalité machinique. Ainsi, pour designer un programme, la logique doit être infaillible et strictement répondre au choix du paradigme programmatique (impératif, descriptif, déclaratif, etc.). Au sein de cette chaîne de compilation, la structure d’une logique programmatique passe par un AST (Abstract Syntax Tree ou Arbres Syntaxiques Abstraits), soit un arbre de logique intermédiaire, modélisé pour répondre aux formes de logiques déductives. Au même titre que les syllogismes garantissent la validité formelle de la conclusion d’un raisonnement, la compilation ne s’effectuera que dans le cas où la logique formelle se traduit parfaitement dans l’arbre syntaxique.

21 Les oppositions et divergences, syntaxiques et sémantiques, se retrouvent dans l’architecture même de la machine. Une machine propose un jeu d’instructions, qui varie considérablement selon les implémentations36 : il s’agit d’une liste exhaustive d’instructions que le processeur est capable d’exécuter. Un processeur, de façon schématique, fonctionne de la manière suivante : il requête une instruction en mémoire, il identifie et décode l’instruction, il l’exécute, il recommence. Le programme va pouvoir interagir avec la machine en ce qu’il peut appeler l’exécution d’instructions et stocker en mémoire des valeurs. En fonction des langages, le nombre de strates entre l’exécution par la machine et le designer de programmes est plus ou moins important.

S’opposent alors les logiques de haut niveau et celles de bas niveau. Les langages de bas niveaux sont des langages qui permettent d’interagir directement sur le jeu d’instructions de la machine. Ils permettent l’adressage de position en mémoire et l’exécution d’instruction. Ils sont des représentations intelligibles de langages machine, comme par exemple, le langage d’assemblage. Les langages de haut niveau sont, quant à eux, des langages qui se focalisent davantage sur la logique syntaxique, et ne permettent pas nécessairement d’exécuter directement des instructions du processeur.

Ces deux approches cohabitent et doivent communiquer entre elles dans le but d’exécuter un programme. Chaque fonction if, else, foreach, etc. renvoie à une logique d’adresses et d’instructions. En outre, les langages de programmation ne fonctionnent pas tous selon les mêmes modes. Nous pourrions circonscrire ces derniers à deux grandes familles, les langages interprétés (Python, Ruby) et les langages compilés (C, C+

+). La compilation est une seule traduction unique du code source en exécutable (code machine ou assembleur). La chaîne de compilation n’est pas nécessaire lors de l’exécution. En revanche, pour un langage interprété, le code source est traduit ligne

(12)

par ligne, à la volée. L’interprète est nécessaire lors de l’exécution. Le designer de programme s’attache à traduire une idée en programme en transposant la logique du programme en langage de programmation, avec les outils à sa disposition (boucles itératives, conditions, variables, etc.). Cependant, les langages programmatiques peuvent être ambigus, puisqu’ils dépendent eux-mêmes d’implémentations et de règles propres à la syntaxe du langage. Ce programme doit alors être traduit en logique compréhensible par la machine ; au sein de la chaîne de compilation, la structure d’une logique programmatique passe par un AST, soit un arbre de logique intermédiaire, modélisé pour répondre aux formes de logique de raisonnement et logique de déductions. Un AST représente la structure de la logique programmatique sous forme d’un arbre de décision. Or ils sont caractérisés par leur « abstraction », autrement dit, leur capacité à ordonner des logiques et à en abstraire la sémantique ; ils traduisent le programme en une grammaire hors-contexte, en une grammaire algébrique37. Bien entendu, les compilateurs opèrent également des analyses sémantiques, principalement dans le but de vérifier la validité des types d’objets manipulés par le programme, la conformité des déclarations de variables, etc. Toutefois, la nécessité prépondérante d’un recours à un langage formel pour le designer, et à l’analyse syntaxique pour la machine, induit inévitablement une distanciation technique entre le code source intelligible et le programme définitivement traduit en langage machinique.

22 Une fois le code binaire produit, il est techniquement impossible de revenir au code source, au code intelligible pour l’humain. Comme si la traduction détruisait simultanément la possibilité de comprendre la logique source. Or, l’humain ne peut comprendre que la langue source, et la machine n’exécute qu’un seul type d’information, le code binaire. Toutes les traductions s’effectuent donc exclusivement depuis le code source original (dans le langage de programmation initial), participant à la séparation symbolique entre hardware et software et perpétuant une certaine idéologie fonctionnelle38. Celle-ci, s’inscrivant en outre dans cette impossible séparation, véhicule par la même occasion la non-nécessité d’un retour aux sources : la logique matérielle serait nécessaire et suffisante à l’élaboration de l’utopie énoncée plus tôt, par sa matérialisation dans l’exécution. Elle répond en ce sens d’une approche du fonctionnalisme comme utopie matérialisée par la technique. Pourtant cette hypothèse doit être appréhendée en gardant à l’esprit qu’avant même son exécution, et donc sa matérialisation, la logique machinique est aux prises avec l’interdépendance des strates, ces dernières répondant à des approches singulières du code. Ainsi, le code source se dote de commentaires, éléments de traduction de la syntaxe propre au programme en blocs non exécutés par la machine, afin de rendre le programme source intelligible. Malgré cela, la traduction au sein même de la programmation participe de l’impossible retour au code source, à la logique de conception du designer : elle opacifie l’objet traduit par la compilation (code binaire)39. La logique et les commentaires disparaissent lors de la traduction en code binaire, en faveur d’un programme idéologique fonctionnel, affirmant un peu plus la non-réversibilité technique du processus de traduction.

Non-réversibilité, opacification et obfuscation

23 Le processus d’abstraction, entre celui qui tape le programme et la machine qui l’exécute, permet de donner à différentes machines un socle commun. Paradoxalement,

(13)

c’est également ce qui éloigne symboliquement le hardware du software, ce qui fait que la machine échappe à l’entendement. À l’instar du latin pour les médecins ou de la typographie pour les graphistes, la logique machinique est le langage d’une classe, celle des gens qui comprennent les machines. Pourtant la machine et le code sont indissociables, et les penser comme des idées décorrélées illustre le potentiel utopique que l’on attribue aux machines.

24 À l’analyse de Friedrich Kittler évoquée en ouverture, nous ajouterons que la stratification et l’interdépendance des couches successives de programmes débouchent sur deux aspects : une non-réversibilité technique et l’idée d’une opacité inhérente au système. L’enjeu est simple : faire symboliquement disparaître le hardware et tuer l’auteur40, c’est-à-dire découpler la machine (à écrire) de celui qui en fait usage (celui qui sélectionne les combinaisons de caractères prédéterminées par la machine).

Pourtant, si la séparation entre hardware et software n’existe pas d’un point de vue matériel, pour Wendy Chun, c’est par sa dimension idéologique que la relation se démarque : « Logiciels et idéologie s’accordent de manière parfaite car ils tentent pareillement de décrire les effets matériels de l’immatériel, et de postuler l’immatériel à partir d’éléments visibles. Au terme de ce processus, l’immatériel devient un pur produit, quelque chose qui existe en soi : la finalité de la programmation n’est plus une machine qui fonctionne mais un programme qui fonctionne41. » Il s’agirait d’occulter la réalité machinique, de faire disparaître la matérialité électronique des machines derrière des interfaces de contrôle. Ces dernières s’imposeraient comme la première strate utilisateur et participeraient, paradoxalement, de l’idéologie fonctionnaliste des logiques matérielles qui tendraient à s’opacifier. Cette dissimulation se déploierait en réponse aux arguments de sécurité (fermeture des BIOS, systèmes propriétaires à codes sources fermés, etc.) et de potentiel risque d’espionnage industriel (impossibilité d’accès aux implémentations des architectures des processeurs, etc.) qui affecterait la concentration des capitaux dans l’industrie de l’électronique. Opaques et résistants à l’entendement, la machine et ses potentiels offriraient alors un espace pour abriter des programmes de haut niveau, notamment des logiciels utilitaires centrés sur l’expérience utilisateur (qu’il soit simple usager ou professionnel), attestant encore davantage l’idéologie fonctionnelle des programmes. La propension des machines à répondre d’un modèle de simulation et d’une logique de contrôle serait ce qui procure à la tension entre opacité et transparence sa dimension conflictuelle idéologique et utopique.

25 Où se situe alors la non-réversibilité de la traduction des programmes ? Nous pouvons penser qu’elle est le corollaire de l’opacification, second versant d’un même problème.

Chun évoque la traduction de cette façon : « En ouvrant un fichier, je le rends visible. À tous les niveaux le software semble rendre l’invisible visible – traduire entre le lisible machinique et le langage lisible humain42. » Pourtant, elle écarte la possibilité d’une machine qui ne ferait que transcoder (selon les arguments de Lev Manovich43), puisque percevoir la machine de cette façon serait oublier le fait qu’une machine a la nécessité de computation pour opérer elle-même44. L’idée d’une opacité consubstantielle à la machine, contre laquelle nous ne pourrions rien, relève, en réalité, de l’idéologie. Le paradoxe des machines, au regard de la traduction des logiques, serait donc cette cohabitation, entre un hardware dissimulé par des softwares, annonçant l’opacité machinique, et un hardware conduisant des softwares qui semblent répondre d’un modèle utopique de la transparence.

(14)

26 Ce que dit Chun, c’est que les couches successives, l’empilement des programmes, opacifient inévitablement, d’autant plus que les couches sont nombreuses.

Particulièrement, en ce que le système d’exploitation est strictement nécessaire dans les systèmes informatisés contemporains, pour opérer sous forme d’une abstraction matérielle (en prenant le rôle intermédiaire entre software de haut niveau et hardware), et de fait, peut altérer (même à la volée) le fonctionnement du programme en surcouche. En fait, le design de programmes destiné à un matériel spécifique n’est aujourd’hui envisageable que pour la programmation de bas niveau dans des systèmes embarqués et l’automation, et encore, celui-ci dépend inexorablement de l’accès, pour le public, au matériel lui-même, et donc doit de fait accepter ou contourner les monopoles industriels. Il est alors impossible de renverser la logique, de remonter aux sources, puisque chaque couche successive ajoute une strate d’opacification des modalités techniques des traductions vers les logiques machiniques. Cette non- réversibilité serait donc contextuelle. Elle dépendrait des choix des différents acteurs, des différentes implémentations des strates.

27 Toutefois, il est nécessaire de penser cette non-réversibilité comme la conséquence d’un contexte, pas uniquement machinique, mais politique. Si le software et le hardware sont indissociables, il est impossible d’appréhender les logiques machiniques sans garder à l’esprit que chaque strate dépend d’acteurs dont les intérêts économiques conditionnent les implémentations techniques. À haut niveau, la non-réversibilité devient un dogme, une ligne de conduite qu’un designer peut suivre s’il souhaite conserver le contrôle sur sa production : il peut obfusquer45 son programme, le dissimuler par un processus proche du cryptage, cachant ainsi les méthodes de conceptions et les logiques derrière de l’encodage de « sécurité », garantissant ainsi la non-réversibilité des programmes qu’il produit. Ici, l’impossible retour aux sources est un choix délibéré. La non-réversibilité s’inscrit donc dans ce contexte : dans leur texte fondateur de l’informatique, Weaver et Shannon proposent le traitement du signal comme le seul mode possible de décodage du message dans le schéma classique de la communication. Or, le bruit, si les auteurs l’entendaient dans sa dimension technique, nous proposons de le percevoir dans sa dimension idéologique. En édictant l’obfuscation comme un paradigme machinique, l’utopie unificatrice par le binaire se confronte à l’impossibilité technique du retour aux sources, par une implémentation volontaire de bruit. En outre, l’introduction du bruit participe de fait à l’élaboration d’une narration autour de l’utilisation des logiques machiniques. Elle facilite le passage fonctionnaliste d’un contrôle de la logique vers une logique de contrôle, au cœur du paradoxe opacité/transparence et de fait son extension politique entre la matérialité technique du hardware et l’idéologie fonctionnelle du software.

28 Nous pourrions conclure ainsi : le modèle de logique programmatique fait cohabiter plusieurs paradigmes de fonctionnement, celui d’une logique booléenne et la transposition de toutes les autres logiques formelles en binaire. Ce modèle machinique s’avère idéal puisque répondant à toutes les formes de logiques potentielles, et répondant en même temps à la possibilité d’une machine utopique, au langage unifié et qui pourrait devenir la grande machine universelle (capable du tout et du rien). Or, la succession de strates implique inévitablement des encodages successifs pour permettre la communication, interne à la machine ou entre les machines. Le binaire rend possible la computation mais résiste à l’entendement ; les logiques machiniques nous résistent et se dissimulent, par leurs techniques et par leurs proximités avec la traduction-

(15)

cryptanalyse. Avec le code comme outil, l’automatisation technique de la traduction des langages se voit confrontée aux paradoxes des méthodes combinatoires et séquentielles, à savoir l’application d’un modèle syntaxique à une application sémantique pourtant fondamentalement distincts. Malgré une certaine efficience, la computabilité des signes (séquences de lettres, de mots) a montré ses limites, notamment par la difficulté que représente le contexte pour la machine. La conséquence est alors une non-réversibilité, technique d’une part et politique d’autre part. Il semble que le bruit, celui que Shannon et Weaver ont cherché à éliminer, prend des formes inattendues ; celle d’une opacification des machines mais aussi celle d’un modèle non-réversible de traduction, celle où le capitalisme numérique conditionnerait certains choix d’implémentations techniques pour les designers de programmes (comme l’obfuscation des sources) ainsi que pour les différents acteurs de l’économie numérique. La dissimulation, dans un contexte politique d’interdépendance entre les différentes strates, semble s’ériger en dogme technique et de fait, restreint l’intelligibilité des machines.

BIBLIOGRAPHIE

Aristote, Premiers analytiques, Tricot Jules (trad.), Paris, Vrin, 1983.

Basile, Jonathan, Tar for Mortar : The Library of Babel and the Dream of Totality, dead letter office, Babel Working Group, 2018.

Boole George, An Investigation of the Laws of Thought, on Which are Founded the Mathematical Theories of Logic and Probabilities, London, Walton and Maberly, 1854.

Boole George, The Mathematical Analysis of Logic : Being an Essay Towards a Calculus of Deductive Reasoning, London, Macmillan, Barclay, & Macmillan, 1847.

Broemeling Lyle D., « An Account of Early Statistical Inference in Arab Cryptology », The American Statistician, vol. 65, n° 4, 2011, p. 255-257. JSTOR : www.jstor.org/stable/23339552 (consulté le 9 mai 2020).

Cardon Dominique et Casilli Antonio, À quoi rêvent les algorithmes, Paris, Seuil et La République des Idées, 2015.

Chomsky Noam, « On certain Formal Properties of Grammars », Information and Control, vol. 2, n° 2, 1959, p. 137-167. En ligne : http://www.sciencedirect.com/science/article/pii/

S0019995859903626 (consulté le 6 mai 2020).

Chomsky Noam, Syntactic Structures, Princeton, New Jersey, Mouton and Co., 1957.

Chun Wendy Hui Kyung, « Contrôle et liberté : logiciel et plaisir causal » dans Lartigaud David- Olivier (dir.), Art++, Orléans, Hyx, 2011.

Chun Wendy Hui Kyong, « On Software, or the Persistence of Visual Knowledge », Grey Room, vol. 18, 2005, p. 26-51.

(16)

Corcoran John, « Aristotle’s Prior Analytics and Boole’s Laws of Thought », History and Philosophy of Logic, n° 24, 2003, p. 261-288. DOI : 10.1080/01445340310001604707

Cozzens Margaret et Miller Steven J., The Mathematics of Encryption : An Elementary Introduction, Providence, Rhode Island, American Mathematical Society, 2013.

Dupont Quinn, « The Cryptological Origins of Machine Translation, from al-Kindi to Weaver », Amodern 8 : Translation-Machination, 2018. URL : http://amodern.net/article/cryptological-origins- machine-translation/ (consulté le 27 avril 2020).

Galloway Alexander R., « Language Wants To Be Overlooked : On Software and Ideology », Journal of Visual Culture, vol. 5, n° 3, déc. 2006, p. 315-331, DOI : 10.1177/1470412906070519 (consulté le 15 septembre 2020).

Guez Emmanuel et Vargoz Frédérique, « La mort de l’auteur selon Friedrich Kittler », Appareil, n° 19, 2017. En ligne : https://doi.org/10.4000/appareil.2561 (consulté le 10 mai 2020).

Kittler Friedrich, There is no software, ctheroy.net, 1995. URL : http://ctheory.net/articles.aspx?

id=74 (consulté le 20 février 2020).

Knuth Donald E., The Art of Computer Programming Volume I, Fundamental Algorithms, (third edition), Massachusetts, Addison-Wesley, 1997.

Manovich Lev, The Language of New Media, Cambridge, MA, MIT Press, 2001.

Patterson Richard, « Aristotle’s Perfect Syllogisms, Predication, and the ‘Dictum De Omni.’« , Synthese, Logic and Metaphysics in Aristotle and Early Modern, vol. 96, no. 3, Springer, 1993, pp. 359-378.

Rey Alain, dir., Dictionnaire historique de la langue française, Paris, Dictionnaires Le Robert, 1998.

Schmitt Églantine, « Des humains dans la machine : la conception d’un algorithme de classification sémantique au prisme du concept d’objectivité », Sciences du Design, n° 4, 2016, p. 83-97. https://www.cairn-int.info/revue-sciences-du-design-2016-2-page-83.htm (consulté le 6 mai 2020).

Shannon Claude E. et Weaver Warren, A Mathematical Theory of Communication, Urbana, University of Illinois Press, 1964.

Weaver Warren, Translation. 17 July 1949, typescript, photocopie de l’original consultable en ligne : http://www.mt-archive.info/50/Weaver-1949-original.pdf (consulté le 6 mai 2020).

Weaver Warren et Wiener Norbert, Correspondence, March-May 1947, typescripts, photocopie de l’original consultable en ligne : http://www.mt-archive.info/50/Weaver-1947-typescript.pdf (consulté le 6 mai 2020).

NOTES

1. Kittler Friedrich, There is no Software, ctheroy.net, 1995, URL : http://ctheory.net/

articles.aspx?id=74 (consulté le 20 février 2020) : « What remains a problem is only the realization of these layers which, just as modern media technologies in general, have been explicitly contrived in order to evade all perception. We simply do not know what our writing does. » (Nous traduisons.)

2. Il s’agit d’un débordement de la pile d’exécution, soit, un bug causé par l’écriture en dehors de l’espace alloué dans la pile d’exécution. Ce bug est fréquemment rencontré lors de l’exécution d’une boucle infinie.

(17)

3. Schmitt Églantine, « Des humains dans la machine : la conception d’un algorithme de classification sémantique au prisme du concept d’objectivité », Sciences du Design, n° 4, 2016, p. 83-97. URL : https://www.cairn-int.info/revue-sciences-du-design-2016-2- page-83.htm (consulté le 6 mai 2020).

4. Aristote, Premiers analytiques, Tricot Jules (trad.), Paris, Vrin, 1983.

5. Nous nous appuyons ici sur les différentes entrées étymologiques de : Alain, Rey, dir., Dictionnaire historique de la langue française, Paris, Dictionnaires Le Robert, 1998.

6. Aristote, Premiers analytiques, Tricot Jules (trad.), Paris, Vrin, 1983, I, 1, 24b, 18-20.

7. Shannon Claude E. et Warren Weaver, A Mathematical Theory of Communication, Urbana, University of Illinois Press, 1964, p. 8-9, « […] this word information in communication theory relates not so much to what you do say, as to what you could say. That is, information is a measure of one’s freedom of choice when one selects a message. » (Nous traduisons).

8. Boole George, The Mathematical Analysis of Logic : Being an Essay Towards a Calculus of Deductive Reasoning, London, Macmillan, Barclay, & Macmillan, 1847.

9. Boole George, An Investigation of the Laws of Thought, on Which are Founded the Mathematical Theories of Logic and Probabilities, London, Walton and Maberly, 1854.

10. Dans le texte original, plus particulièrement dans la proposition numéro II, Boole définit le choix des termes « Nothing » et « Universe » (quelquefois traduit par l’unité ou l’universelle) et les représente respectivement par le 0 et le 1. Cf. Boole George, op. cit., p. 47.

11. Aristote, Premiers analytiques, op. cit., I, 1, 24b, 28-30.

12. Corcoran John, « Aristotle’s Prior Analytics and Boole’s Laws of Thought », History and Philosophy of Logic, n° 24, 2003, p. 261-288. DOI : 10.1080/01445340310001604707 13. Boole George, op. cit., p. 242.

14. Patterson Richard, « Aristotle's Perfect Syllogisms, Predication, and the “Dictum De Omni.” », Synthese, Logic and Metaphysics in Aristotle and Early Modern, vol. 96, n° 3, Springer, 1993, p. 359-378.

15. Boole George, op. cit., p. 4.

16. Shannon Claude E. et Weaver Warren, A Mathematical Theory of Communication, Urbana, University of Illinois Press, 1964.

17. Ibid., p. 32.

18. Autrement dit, en reprenant les propos de Weaver en introduction du texte de Shannon, si un système veut pouvoir se doter d’une capacité potentielle à exprimer 16 choix distincts, il ne pourra le matérialiser électroniquement (avec un circuit de portes logiques) qu’avec log2 16 = 4, donc 4 bits. [0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111]. Cf. Ibid., p. 10.

19. On peut noter que l’universalité de la machine, c’est-à-dire la capacité d’une machine à simuler le fonctionnement de toute autre machine, se retrouve bien avant dans les travaux théoriques de Charles Babbage sur sa machine analytique.

20. Chomsky Noam, « On Certain Formal Properties of Grammars », Information and Control, vol. 2, n° 2, 1959, p. 137-167. En ligne : http://www.sciencedirect.com/science/

article/pii/S0019995859903626 (consulté le 6 mai 2020).

21. Knuth Donald E., The Art of Computer Programming Volume I, Fundamental Algorithms, 3rd edition, Massachusetts, Addison-Wesley, 1997, p. 4-6.

22. Weaver Warren et Wiener Norbert, Correspondence, March-May 1947, typescripts, photocopie de l’original consultable en ligne : http://www.mt-archive.info/50/

Weaver-1947-typescript.pdf (consulté le 6 mai 2020).

(18)

23. Weaver Warren, Translation. 17 July 1949, typescript, photocopie de l’original consultable en ligne : http://www.mt-archive.info/50/Weaver-1949-original.pdf (consulté le 6 mai 2020).

24. Dupont Quinn, « The Cryptological Origins of Machine Translation, from al-Kindi to Weaver », Amodern 8 : Translation-Machination, 2018. En ligne : http://amodern.net/

article/cryptological-origins-machine-translation/ (consulté le 27 avril 2020).

25. Exception faite du livre perdu Book of Cryptographic Messages de Al-Khalil ibn Ahmad al-Farahidi (718-786), précurseur de l’utilisation de techniques influentes sur al-Kindī, spécifiquement les combinaisons et permutations pour la création de listes de mots. Cf.

Broemeling Lyle D., « An Account of Early Statistical Inference in Arab Cryptology. », The American Statistician, vol. 65, n° 4, 2011, p. 255-257. JSTOR : www.jstor.org/stable/

23339552 (consulté le 9 mai 2020).

26. Cozzens Margaret et Miller Steven J., The Mathematics of Encryption : An Elementary Introduction, Providence, Rhode Island, American Mathematical Society, 2013, p. 84.

27. Dupont, Quinn. « The Cryptological Origins of Machine Translation, from al-Kindi to Weaver », Amodern 8 : Translation-Machination, 2018. http://amodern.net/article/

cryptological-origins-machine-translation/ (consulté le 27 avril 2020).

28. Shannon Claude E. et Weaver Warren, op. cit., p. 16.

29. Ibid., p. 11.

30. Ibid., p. 28 et p. 45-49.

31. Chomsky Noam, Syntactic Structures, Princeton, New Jersey, Mouton and Co., 1957, p. 13-17.

32. Ibid., p. 47.

33. Cardon Dominique et Casilli Antonio, À quoi rêvent les algorithmes, Paris, Seuil et La République des Idées, 2015, p. 110.

34. Basile Jonathan, Tar for Mortar : The Library of Babel and the Dream of Totality, dead letter office, Babel Working Group, 2018.

35. Il s’agit bien ici d’opposer la nécessaire finitude de l’algorithmie avec les

programmes, qui par la définition de Knuth, ne sont jamais définis par l’existence d’un point d’arrêt.

36. En fonction du processeur, les machines répondent à des implémentations

techniques spécifiques, à des architectures spécifiques. Il existe de nombreuses familles de jeux d’instructions. Il s’agit en outre de la première strate d’interface entre la logique d’instructions exécutables par la machine et la logique programmatique.

37. Soit une grammaire formelle de type 2 selon la hiérarchie de Chomsky.

38. Chun Wendy Hui Kyong « On Software, or the Persistence of Visual Knowledge », Grey Room, vol. 18, 2005, p. 26-51. À cet égard, nous invitons également à la lecture de la réponse d’Alexander Galloway au texte de Wendy Chun qui marque une critique de l’hypothèse de Chun sur l’analogie entre idéologie et logiciel. Cf. Galloway Alexander R.,

« Language Wants To Be Overlooked : On Software and Ideology. », Journal of Visual Culture, vol. 5, n° 3, déc. 2006, p. 315-331. DOI : 10.1177/1470412906070519 (consulté le 15 septembre 2020).

39. Kittler Friedrich, There is no Software, ctheroy.net, 1995. En ligne : http://

ctheory.net/articles.aspx?id=74 (consulté le 20 février 2020).

40. Guez Emmanuel et Vargoz Frédérique, « La mort de l’auteur selon Friedrich Kittler », Appareil, n° 19, 2017. En ligne : https://doi.org/10.4000/appareil.2561 (consulté le 10 mai 2020).

(19)

41. Chun Wendy Hui Kyung, « Contrôle et liberté : logiciel et plaisir causal » dans Lartigaud David-Olivier, dir., Art++, Orléans, Hyx, 2011, p. 367.

42. Chun Wendy Hui Kyong « On Software, or the Persistence of Visual Knowledge », Grey Room, vol. 18, 2005, p. 45 : « By opening a file, I make it visible. On all levels, then, software seems about making the invisible visible – about translating between

computer-readable code and human-readable language. » (Nous traduisons.) 43. Manovich Lev, The Language of New Media, Cambridge, MA, MIT Press, 2001, p. 64.

44. Chun Wendy Hui Kyong, op. cit., p. 46.

45. L’obfuscation est un procédé de brouillage du sens d’une information dans le but de le rendre illisible. En informatique, l’obfuscation est employée pour opacifier la lecture du code tout en conservant sa capacité d’exécution, par exemple en ajoutant du code inutile ou en substituant la syntaxe lisible par une syntaxe inintelligible.

RÉSUMÉS

Qu’est-ce qui fait que les logiques machiniques résistent à l’utilisateur ? Il semble que l’on prête aux machines un potentiel utopique d’unification de toutes les formes de logiques vers un seul et unique modèle binaire. Pourtant, la transparence, postulée par cette utopie unificatrice, s’oppose à la situation technique effective des machines, révélant la tension existante entre l’opacité de la matérialité du hardware et l’idéal utopique du software. En réduisant l’information au strict minimum, les machines se doteraient d’un pouvoir computationnel infini. Héritière de la machine universelle théorique de Turing, cette machine utopique serait capable de tout et de rien.

Si tout est traitable par la computation, alors la machine devient véritablement universelle en rendant possible un langage unifié dans des circuits de logiques électroniques. Le design des programmes se situe à l’intermédiaire entre la logique machinique et la production de programmes fonctionnels. Ce texte explore les modalités techniques de la traduction de la logique au sein des machines dans le cadre du design de programmes. Nous émettons l’hypothèse que la stratification des couches successives de logiciels, entre le designer et l’électronique, impliquent de multiples traductions. Cet empilement permet à la machine d’exécuter le programme tout en rendant la compréhension des logiques machiniques difficile pour l’utilisateur, une traduction bruitée vers un langage inintelligible. Les logiques de substitution d’une chaîne de caractères par une autre chaîne de caractères partagent des traits communs avec l’analyse du cryptage de l’information, avec la cryptanalyse. Si les modèles analytiques sont proches, les objectifs linguistiques diffèrent : du point de vue de la machine, la traduction, automatisée, s’attache à la syntaxe, et du point de vue de l’humain, elle s’attache particulièrement à la sémantique. Cette distinction fondamentale contribue au sentiment d’opacification des logiques et à la résistance des machines face à l’entendement. Or, ces procédés imposent une non-réversibilité de la traduction : interdépendance entre les strates, compilation, obfuscation, enjeux économiques, constituent autant d’instances qui semblent ériger la dissimulation des logiques en dogme technique, au profit d’une idéologie fonctionnelle restreignant paradoxalement l’intelligibilité des machines computationnelles.

What makes machine logic so difficult to understand for users ? It seems as if we attribute to machines the utopian potential of unifying all forms of logic into one single binary model. Yet,

(20)

the transparency proposed by this utopian unification contradicts the actual technical situation of machines, revealing an existing tension between the material opacity of hardware and the utopian ideal of software. By reducing information to its bare minimum, machines would acquire infinite computational power. Heir to Turing’s theoretical universal machine, this utopian machine would be capable of everything and nothing. If computation can process everything, then the machine becomes truly universal by enabling a unified language embedded in electronic logic circuits. Program design is at the interface between machine logic and the production of functional programs. This essay explores the technical modalities of logic translations inherent to machines within the context of program design. We hypothesize that the successive layers of software, between a designer and the electronics, implies successive translations. This layering allows the machine to execute the program while simultaneously making it difficult for the end user to understand the machine-based logic, which would be equivalent to a noisy translation resulting in an unintelligible language. The logic of substituting one string (sequence of characters) for another string shares common traits with information encryption analysis, ergo cryptanalysis. While the analytical models are similar, the linguistic goals are quite different : from the machine standpoint, automated translation focuses on syntax, and from a human standpoint, it focuses particularly on semantics. This fundamental distinction contributes to a perception of machine logic opacity and makes it all the more difficult for the machine’s functioning to be understood. These processes reinforce the non-reversibility of translation : interdependence between layers, compilation, obfuscation, economic stakes, are all instances that seem to provide the basis of concealment of logic as technical dogma, favoring a functional ideology that paradoxically restricts the intelligibility of computational machines.

INDEX

Mots-clés : utopie, obfuscation, cryptographie, linguistique computationnelle, logique machinique, non-réversibilité

Keywords : utopia, obfuscation, cryptography, computational linguistics, computer logic, non- reversibility

AUTEUR

KIM SACKS

Docteur en arts, designer et chercheur, laboratoire Acte, Design, Arts, Médias, Université Paris 1 ; kim.sacks@univ-paris1.fr

Références

Documents relatifs

Nous présentons l’architecture d’un outil générateur de systèmes conseillers. Le système ÉpiTalk sert à développer un conseiller qui se greffe à un

Le travail en réseau et l’enseignement à distance exigent une connaissance assez profonde des dispositifs numériques et rendent positivement sur l’innovation pédagogique,

Pour vérifier la validité de cette théorie du critique littéraire, engageons une étude de ce mythe dit de la ‘Connaissance’ dans l’œuvre romanesque de Amélie Nothomb

Autrement dit, notre souci, par le biais de ces deux textes donc deux discours de deux écrivains, tous deux natifs d’Oran ; tous deux ressentant une appartenance à ce

Mais toute sa vie elle aspire à un ailleurs mythique et quand, enfin, le docteur, à l’indépendance, propose de lui donner sa maison, elle refuse le cadeau malgré

Analyse du total des informations correctes produites au Questionnaires Q1 et Q2 Nous analysons, tout d’abord, le total des réponses correctes aux questions portant sur la base de

Cette intervention, consacrée à la revivification de la langue arabe par une approche plurilingue, sera étayée par le biais de deux cas d’étude, l’un se rapportant

• Un des premiers algorithmes capables de traiter efficacement n’importe quelle grammaire CF sans transformation.. • Pour CYK, les grammaires étaient