Poisson frais

SHENZHEN I/O

La programmation, c’est du chinois

Enveloppant son dernier titre du double mystère de l’électronique chinoise, Zachary Barth poursuit dans son coin sa petite lignée de puzzles en forme de bac à sable. Des jeux à la portée ambigüe ; car on ne joue pas à SHENZHEN I/O pour apprendre à programmer, mais pour élaborer quelque chose qui nous dépasse, qui ne nous appartient jamais totalement.

Mes parents étaient plutôt du genre anti-jeu vidéo, et si la négociation était possible, il a fallu accepter d’apprendre pour s’amuser. De ce fait, le premier "jeu" — avec autant de guillemets que nécessaire — sur lequel j’ai mis les mains était forcément à portée pédagogique. Les énigmes de l’infâme Bossdémath dans Le Labyrinthe au Cent Calculs (1989) étaient pour la plupart de simples opérations, additions ou multiplications à plusieurs chiffres. Mais certaines étaient nettement plus coriaces, comme cette histoire d’engrenages qui m’a laissé un vif souvenir.

Peut-être ce problème fera-t-il sourire le lecteur. J’avais quoi, huit ou dix ans ? Combien de temps passé, au final, devant l’écran monochrome (et un peu baveux) du Commodore C286 LT ? Il a fallu griffonner tous ces calculs, sur une feuille de papier posée devant la machine qui ronronnait. Ces quelques problèmes n’était pas appréhensibles dans leur ensemble ; il fallait d’abord en construire une partie — ici les puissances de 3 — puis tester plusieurs options. Quelle joie, enfin, quand tout s’assemble ... une sorte de magie, une incrédulité : oui, cela fonctionne. Même pour le joueur adulte, la solution n’est pas tout-à-fait immédiate ; encore aujourd’hui, la joie de la découverte a allumé sa petite étincelle au fond de moi.

Partage du travail

Quelque 25 ans plus tard, ce sont les mêmes picotements de plaisir à chaque niveau réussi de SHENZHEN I/O : l’impression d’être parvenu à compléter quelque chose de plus grand que soi. À première vue pourtant, la perspective de construire des gadgets made in China n’a pas de quoi passionner les foules. À l’aide de quelques composants programmables, sorte de microscopiques Arduinos, il nous faut construire ici un réveil, là un détecteur de pollution, puis une machine qui rend la monnaie.

Mais très vite, les petits circuits deviennent légèrement trop compliqués pour être modélisés dans leur intégralité dans notre petit cerveau. Il faut donc commencer par découper la problématique, pour s’occuper d’une partie, puis d’une autre. C’est là où on accroche : l’envie de dépasser ses faiblesses structurelles en composant, petit à petit. On a déjà couvert dans ces pages les ingrédients de la méthode Zachtronics ; comme SpaceChem avant lui, SHENZHEN a l’intérêt de rendre explicite la modularité des problèmes, et même obligatoire. On n’a droit qu’à de petits composants rectangulaires, qui ne contiennent qu’un nombre très limité d’instructions : 9 ou 14, selon la taille choisie. C’est très peu, vu la faiblesse des instructions disponibles. Au joueur de décider quel petit rectangle s’occupera, par exemple, de faire une division (qui n’est pas une instruction en soi), de stocker des valeurs, ou de produire le résultat.

Seulement, le découpage n’est pas si simple : la taille de l’espace de jeu est limitée, le nombre de branchements aussi. S’installe ainsi, pour le joueur, un va-et-vient entre l’intérieur des composants et l’agencement de ceux-ci : on tente de mettre en place une idée, mais elle ne tient pas, on l’ajuste, d’autres problèmes surgissent, on est perdu. En même temps, il faut se donner des règles de communication entre les modules : faut-il les synchroniser, ce qui peut coûter de précieuses lignes, ou tenter de les laisser faire chacun sa soupe, au risque de tout dérégler ? On conçoit bien que cette énumération de problèmes simultanés n’a pas besoin d’être poussée bien loin pour surcharger les capacités cérébrales du pauvre joueur.

Apprendre en s’amusant, ou s’amuser sans apprendre

Si Le Labyrinthe au Cent Calculs de ma jeunesse était un ludiciel à portée pédagogique, est-ce toujours le cas de SHENZHEN I/O ? Certains le croient, comme Matt Sayer dans un papier qui présente TIS-100 — le prédécesseur rustique de SHENZHEN I/O — comme un moyen d’apprendre la programmation.

Non, et oui.

Non, pour de multiples raisons. D’abord parce que la façon de programmer dans les Zachtronics est à l’inverse exact de ce que l’on doit apprendre : un code lisible, réutilisable, qui se conçoit bien. La programmation de SHENZHEN I/O est si abominable que si l’on laisse un puzzle en plan pour le reprendre le jour d’après, il est généralement plus raisonnable de tout reprendre à zéro. Tous les pédagogues le savent : trop de contraintes à la fois risquent de déformer la conception initiale de l’objet que l’on étudie. Or SHENZHEN comme TIS s’amusent précisément à ajouter des embûches gratuites : un seul registre utilisable, un nombre très restreint d’instructions, etc. Il y a des moyens très simples d’expliquer le concept de pile en cinq minutes ; il est absurde de croire, comme Matt Sayer semble le faire, que la version réduite et difficile de TIS-100 fera mieux.

D’ailleurs, et comme on a déjà pu le relever ici, le cadre oriental n’a d’autre raison que de souligner le caractère abscons des puzzles et du langage de programmation. Le joueur est perdu dans la froide signalétique industrielle de la même façon que le personnage occidental est perdu dans son nouvel environnement cantonais [1].

TIS-100, prédécesseur bourru de SHENZHEN I/O.

En somme, les jeux Zachtronics sont des tests plutôt que des leçons. Une façon de défier les programmeurs : tu crois que tu sais programmer ? viens donc essayer avec deux bras dans le dos et sur un monocycle. La course au score de SHENZHEN ou TIS a quelque chose du IOCCC, ce concours qui vise à produire les plus jolis programmes avec le code C le plus illisible possible. Ce qui ne veut pas forcément dire que SHENZHEN I/O soit à réserver à l’élite des programmeurs. On peut tout à fait s’y amuser sans connaissance préalable — on y sera probablement un peu perdu au début — et même finir par apprendre un concept utile ou deux, mais si c’est une méthode bien tortueuse pour un tel résultat.

Néanmoins, un petit oui survit. Oui, SHENZHEN I/O apprend certains concepts relatifs à la programmation, qui ne se situent pas au niveau le plus concret. Ce sera la capacité de développer soi-même toute une batterie de techniques de programmation et de tests, des schémas de pensée qu’il va pouvoir réutiliser d’un niveau à l’autre, la capacité à s’approprier un langage. Le puzzle game habituel va aider le joueur à s’approprier des concepts ; l’inévitable Witness le fait avec élégance, tandis que Stephen’s Sausage Roll regarde le joueur les trouver tout seul ; mais dans l’un comme dans l’autre, il n’y a toujours qu’une seule façon de faire. Dans SHENZHEN comme dans les autres Zachtronics, la multiplicité des solutions fait que chacun s’imprime différentes routines. Même après avoir fini le jeu, ce n’est qu’en discutant avec d’autres joueurs que je découvre de nouvelles techniques.

Mise en abyme

Lorsque l’on en vient à pousser le raisonnement jusqu’au bout, quel objet, juste sous nos yeux, est d’une complexité qui dépasse largement les capacités intellectuelles d’une seule personne ? C’est évidemment l’ordinateur lui-même. Et justement, on ne peut que constater un désir fort de la part des joueurs de simuler tout ou partie de l’ordinateur lui-même. Jeux dans le jeu, reproductions miniature, simulations toujours plus complexes.

Fin 2016, on a ainsi vu passer tête-bêche d’innombrables créations programmées sous SHENZHEN I/O : jeux de voitures, labyrinthe en 3D, plusieurs implémentations de Tetris. Plus loin, voici émulateur Atari construit dans Minecraft, tandis que les joueurs de Factorio ne sont pas en reste avec divers projets comme le décodeur vidéo ci-dessous — les explications valent mieux que la simple vidéo, qui ne laisse rien percevoir son incroyable mise en œuvre. À moins que l’on ne préfère combiner cette première version d’un autre clip fameux, dont la musique est d’ailleurs (évidemment) reproduite sous SHENZHEN I/O. Vu de loin, Factorio a d’ailleurs une tendance à reproduire le schéma interne d’un ordinateur avec ses bus, son alimentation, ses entrées et sortie, ses différents éléments de production spécialisés. Fin du fin, d’un Zachtronics à l’autre : voici ainsi TIS-100 simulé dans Infinifactory.

Chacun de ces projets ébahit par sa complexité autant qu’il questionne. Ce n’est pas vraiment jouable ; cela ne peut servir à rien — à part de benchmark aux développeurs, comme la vidéo ci-dessus pour les développeurs de Factorio. Ils posent en réalité un simple résultat théorique, celui de la possible (re)production d’un système, aussi complexe soit-il. Encore et toujours par petits pas, par petits composants que l’on assemble, l’envie de voir surgir ce paradoxe : construire quelque chose qui nous dépasse.

Notes

[1] C’est évidemment mon point de vue d’occidental, qu’il faudrait comparer à l’avis d’un joueur chinois pour bien faire.

Il y a 0 Message pour "La programmation, c’est du chinois"

Laisser un commentaire :

Qui êtes-vous ? (optionnel)
Ajoutez votre commentaire ici

Suivre les commentaires : RSS 2.0 | Atom

© Merlanfrit.net | À propos | web design : Abel Poucet