Image: la Machine d'Anticythère
Fordj est le moteur (engine en anglais) qui fait tourner Alphaville.
À chaque fois qu'une joueuse ou qu'un joueur participe au Jeu, une nouvelle itération, une nouvelle étape dans l'histoire d'Alphaville est générée automatiquement par la plateforme. Ce mécanisme automatique réalise deux opérations fondamentales : (1) l'assemblage automatique des Parcelles qui viennent former la Ville 1), et (2) l'évaluation automatique des « fichiers sources » qui composent cet assemblage.
Ces « fichiers sources » sont les données qui sont « générées » par les acteurs humains du jeu, joueurs et joueuses. Ces fichiers sont de deux types : les fichiers 3D créés à partir de Blender et les fichiers Markdown créés directement sur la plateforme.
Lorsqu'un Participant.e modifie ou dépose un fichier sur la plateforme, le « moteur » réalise les deux opérations d'assemblage (1) et d'évaluation (2). La phase d'évaluation comporte une partie d'évaluation des fichiers 3D et une partie d'évaluation des fichiers Markdown :
README.md
de la plateforme. Cette « lecture » est sujette à une phase cruciale : l'interprétation.Les machines numériques qu'on appelle des ordinateurs ne sont pas tant des « machines à ordonner », comme l'étymologie du mot le suggère, mais des « machines à interpréter », ou pour être plus précis, des machines d'interprétation-action. Pour comprendre ce principe fondamental du numérique, il faut s'intéresser au « moteur universel » qui fait « tourner » ces machines et qui porte le nom de machine de Turing.
Image: wikipedia
Cette « machine théorique » fonctionne ainsi : une « tête de lecture » glisse le long d'un ruban d'information. Ce ruban est composé de cases qui chacune contient une information stockée sous la forme d'un symbole, ce qui correspond pour nous autres humains, à une lettre ou à un chiffre.
La « tête » se déplace le long du ruban et « lit » les symboles qui sont présents dans les « cases ». À chacun des symboles présents dans ces cases correspond un « sens », ou plutôt une action qui est associée à cette information. Cette information, ce peut être par exemple de se « déplacer d'une case à droite », « lire la prochaine instruction » ou « écrire un symbole » dans une case. Ce principe d'interprétation-action à la base théorique du numérique, c'est ce qu'on appelle plus généralement un calcul. Il s'agit donc d'un calcul qui ne se réduit pas à de simples opérations mathématiques telles que l'addition ou la multiplication, mais d'un « calcul » qui est plus « général » dans le sens où il s'agit avant tout d'interpréter et d'agir. Les ordinateurs sont les objets d'un « calcul universel » dont l'idée est aussi ancienne que la Caractéristique universelle de Leibniz (XVIIIe) ou la Machine analytique de Charles Babbage (XIXe). Ce « calcul » c'est le sens du mot anglais computation que l'on retrouve dans l'expression computational Design (CD) et que l'on traduit en français par conception numérique.
Fondamentalement, une machine numérique, c'est donc une machine de Turing qui « lit et interprète » des données numériques ; des données qui sont, fondamentalement, des nombres binaires stockés sous la forme de 0
et de 1
. On peut donc envisager ces machines comme de vastes systèmes très complexes basés sur un principe pourtant très simple de « lecture-écriture » de 0 et de 1. Mais dans la pratique, on ne « dialogue » pas avec une machine numérique au format binaire, mais à l'aide de « langages intermédiaires » tels que le langage Markdown par exemple. Le travail principal d'une machine numérique, c'est de « traduire » ces langages intermédiaires, des langages de « haut de niveau » 2) vers des langages de plus « bas niveau », tels que le « langage binaire ».
Comment une machine numérique interprète-t-elle ces langages ? Il existe pour cette opération fondamentale des programmes qu'on appelle des compilateurs qui ont pour tâche de partir d'un « fichier source » et d'organiser les informations qu'il contient sous une forme « interprétable » par la machine. Ce travail passe par un certain nombre d'étapes qui peuvent-être plus ou moins complexes en fonction du langage à interpréter. Mais tous les compilateurs partagent la même étape initiale qu'on appelle l'analyse lexicale ou tokenization qui consiste à identifier les mots du code à interpréter. Ces mots que l'analyse lexicale identifie, nous les appelons des token. Le token 3), c'est la plus petite entité d'un texte interprétable, un peu comme un pixel pour une image matricielle. En règle générale, ces tokens sont « extraits » du texte en prenant en compte les espaces qui séparent les mots. On peut dire qu'un token, c'est simplement un mot. La première étape de la compilation réside donc dans cette opération qui consiste à bien séparer les mots et à les stocker sous la forme d'une liste avant de passer à l'étape suivante de l'interprétation.
Sloyd interprète les textes numériques suivant plusieurs « niveaux de langage ». Il en existe plusieurs, mais nous retenons pour l'instant deux niveaux fondamentaux : le « langage Markdown » et le « langage Alpha-1 ».
Le langage Markdown est le premier langage que les Participant.es d'Alphaville apprennent à écrire. Pour bien écrire en Markdown, il s'agit de respecter un certain nombre de règles de syntaxe très simples. Si l'on respecte correctement ces règles, le moteur Markdown est capable de les interpréter et de générer un document web.
Le « langage Alpha-1 » est le plus petit des interpréteurs que l'on puisse imaginer. Il s'agit d'une fonctionnalité minimale de la plateforme qui va lire certaines « données » présentes dans les fichiers Markdown. Cette fonctionnalité, nous la trouvons au niveau du moteur de la plateforme dans le fichier qui indique comment vérifier des données. Une fonction en particulier décrit les étapes permettant d'interpréter les données.
Ce « langage Alpha-1 » doit pouvoir nous aider à comprendre toutes les petites erreurs que nous pouvons commettre lorsque nous nommons des fichiers numériques. Voir les Commentaires J1.
Site sous licence Creative Commons BY-NC-ND v4.0 : Milovann
Yanatchkov