De la logique à l’algorithme : la traduction dans le design de programmes - Sacks, Kim (Appareil, 2022)
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, 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.