Le livre ./code --poetry
est un objet original réunissant programmation, poésie et graphisme, que l’amoureux du code peut prendre plaisir à avoir dans sa bibliothèque pour le feuilleter de temps en temps et méditer sur toute cette littérature pour machines qu’il a écrite depuis ses premiers émois binaires. Attelage a priori improbable, Daniel Holden est programmeur et travaille dans les jeux vidéos à Montréal alors que Chris Kerr est un poète qui vit à Londres. Ils ont en fait fréquenté la même école et se connaissent depuis l’âge de onze ans. Explorons leur livre :
- Daniel Holden et Chris Kerr, ./code --poetry, Broken Sleep Books, 2023, ISBN 978-1-915760-89-0.
Sommaire
- Sources et rendus
- Autres textes pour « massive nerds »
- Le logos informatique
- Notes diverses
- Bibliographie
Sources et rendus
Un code poem est un code source mélangé à de la poésie, alors on pourrait traduire l’expression par un mot composé comme code-poème ou poème-source. J’utiliserai plutôt cette dernière traduction, le mot « source » ayant clairement des connotations poétiques. Pour ce qui est du concept de code poetry, poésie-source me satisfait moins. À vous de voir.
Dans les poèmes-sources du livre, parfois les mot-clés du langage utilisé font partie du texte du poème, parfois le poème est simplement contenu dans des commentaires que la coloration syntaxique et la mise en page aideront à mettre en valeur. Utiliser des chaînes de caractères est une autre solution facile. On peut aussi généralement utiliser des noms de variables (éventuellement inutilisées), de fonctions, de labels, etc. Dans certains poèmes-sources les parties de code imprononçables sont isolées en haut ou en bas du code source comme dans chernobyl.rkt. Le code est toujours mis en forme avec soin et constitue parfois un calligramme, mot inventé par Apollinaire, par exemple une raquette de tennis pour Processing. Les auteurs se réclament également de la poésie concrète.
On notera que dans le cas où l’on utilise également les mots-clés du langage dans le texte poétique, on sera bien sûr dans la plupart des langages plutôt incité à écrire en anglais. Mais on pourrait aussi considérer leurs mots-clés comme des parties d’un mot, par exemple for(midable=0;;) // j’étais fort minable
. Sinon, on pourra utiliser un langage Logo en français ou quelques autres rares langages pour batracien hexagonal que vous pourrez citer en commentaires.
Une contrainte majeure respectée dans le livre est qu’un programme doit être exécutable : il produit alors souvent de l’art ASCII, soit statique soit le plus souvent dynamique comme dans water.c
, mais peut aussi produire un texte mixant poésie et codes informatiques (des balises HTML par exemple dans divide.php
). Quant au titre du poème, c’est simplement le nom du fichier source.
Les sujets abordés dans ces poèmes sont variés : expériences personnelles, théories du complot, dystopies, technologie et environnement, etc. D’après l’introduction du livre, chaque poème-source et sa sortie sont censés refléter le caractère du langage informatique utilisé. On trouvera pour chacun des vingt-six poèmes le code source sur la page gauche, avec coloration syntaxique, sur fond clair ou sombre, et sur la page droite la sortie. Le livre se double d’un site compagnon https://code-poetry.com/ qui a l’avantage de montrer les versions animées des sorties. Le livre essaie néanmoins de rendre cela par des successions de copies d’écran quand c’est possible. Comme la bannière en haut du site web semble boguée ou incomplète, voici les liens directs vers les vingt-six codes disponibles : Javascript, Julia, PHP, Racket, C++, Piet, Bash, Shakespeare, Perl, C, Haskell, C, J, Batch, Ruby, Objective C, Go, Processing, Ante, Befunge, C#, Python, Python, Erlang, Lua, Brainfuck. On notera que parmi les langages vedettes, le C et le Python ont droit à deux codes. Et on saluera les efforts du programmeur pour arriver à maîtriser les bases de tous ces langages pour la rédaction du livre. Si vous y trouvez un de vos langages préférés, vous pouvez partager en commentaires les particularités ou astuces des codes présentés (on frise parfois l’offuscation).
Autres textes pour « massive nerds »
Après les vingt-six poèmes, nous tombons sur la Code Poetry Manual Page, placée dans la section 7 des man-pages
(Overview, conventions, and miscellaneous) : ./code --poetry
- A collection of executable art. Chaque poème ou langage a droit à un paragraphe de commentaires (techniques, littéraires ou humoristiques).
Le livre se termine par un texte de chaque auteur. Le premier texte, celui du poète, explique les contraintes liées à la mise en page et à la présentation graphique des codes sources et de leurs sorties à la fois dans le livre et sur le site compagnon, puis se termine par une liste d’autres livres déjà publiés sur le sujet, en insistant sur ce en quoi le présent livre s’en démarque.
Le second texte est écrit par le programmeur du tandem et s’intitule (si l’on interprète le graphisme d’introduction) « I love ASCII ». Il tente d’abord d’expliquer au candide (qui serait tombé par hasard sur ce livre ?) ce qu’est un langage de programmation pour l’introduire à la culture geek. Il explique par exemple la multiplicité des langages et dit :
Les gens ont donc tendance à s’identifier à certains langages plus qu’à d’autres, ce qui entraîne un effet d’amplification. Au fur et à mesure que les gens affluent vers le langage qui leur correspond le mieux, la culture s’homogénéise. Des frontières sont tracées, des nations se développent et des drapeaux sont hissés.
Ces factions sont connues pour se livrer à des « guerres de religion » à propos du meilleur style de programmation. La lecture des arguments est une expérience en soi, quelque part entre un débat théorique entre physiciens des particules et une dispute enfantine sur Porsche versus Ferrari.
Le texte se termine par la déclaration d’amour au code ASCII annoncée en titre, avec des explications intéressantes sur les origines de certains caractères. Mais quand l’auteur taquine sa compagne en lui disant qu’il va se faire tatouer les quatre-vingt-quinze caractères imprimables du code ASCII, elle lui répond en substance : « Please don’t, you massive nerd! »
Finalement, la dernière page imprimée du livre nous invite à nous mettre au travail avec la chaîne de caractères layoutyourunrest
écrite en majuscules puis en minuscules. On peut traduire ça par : « exposez votre trouble ». C’est en fait la devise de la maison d’édition Broken Sleep Books (dont le fondateur est insomniaque !), spécialisé dans la poésie et basée au Pays de Galles. Alors lecteur linuxien, es-tu inspiré ? N’es-tu pas en mal de défi depuis que TapTempo a été porté dans ton langage favori ? Are you experienced?
Le logos informatique
Le verbe créateur est bien sûr un thème biblique. Wikipedia rappelle également que :
Le terme « poésie » et ses dérivés « poète », « poème » viennent du grec ancien ποίησις / poíesis par le verbe ποιέω / poiéō, « faire, créer » : le poète est donc un créateur, un inventeur de formes expressives […]
On sait bien que les écrivains créent des mondes, certains poussant même la chose à l’extrême, comme J.R.R. Tolkien qui a créé tout un monde avec sa mythologie, son histoire, sa géographie, ses créatures, ses langues, ses poèmes et chansons, etc. Mais les développeurs ne sont pas en reste. Que le logos informatique soit créateur et crée des mondes, voire le monde, pour le meilleur et pour le pire, quiconque a vécu l’évolution de notre société depuis les débuts du web pourra difficilement en douter.
Notes diverses
- Difficile après cette conclusion de ne pas avoir envie de réécouter Un autre monde (1984) de Téléphone. « Dansent les ombres du monde ».
- Cette alliance de la poésie et de la technologie m’a fait aussi penser à Anne Clark, qui dans les années 80 déclamait ses textes dans un style dit « spoken word » sur fond de musique électronique new wave. Son morceau le plus connu est Our Darkness (1984), qualifié plus récemment par certains de proto-house. Elle a continué sa carrière et en 2022 a sorti un album Borderland (Found Music for a Lost World) dans un style musique de chambre. On y trouve en particulier un poème de Mary E. Coleridge (1861-1907) intitulé L’oiseau bleu récité par Anne Clark : The Bluebird. Enfin, sur son site officiel, on voit qu’en 2024 elle a prêté sa voix à des installations réalisées par l’artiste Clemens von Wedemeyer qui s’intéresse entre autres aux relations sociales, comme on peut le voir sur ces photos montrant des graphes : Social Geometry. Malheureusement, on ne l’entendra pas ; il aurait fallu aller à Berlin.
- Cette dépêche n’est pas sans lien non plus avec Des nouvelles de Fortran n°6 où j’évoquais récemment l’utilisation du langage dans les années 60-70 pour explorer la génération automatique de poèmes.
- On notera que comprendre la poésie moderne anglo-saxonne peut parfois être ardu, la syntaxe de la langue, déjà plutôt souple, subissant des contorsions et le vocabulaire puisant dans le vaste répertoire de la langue anglaise. Sans compter ici le mélange avec le code source qui brouille parfois la lecture (faut-il lire les mots-clés du langage ?).
Bibliographie
- Chris Kerr et Daniel Holden, « Optimizing Code for Performance: Reading ./code --poetry » in Poetry and Contemporary Visual Culture / Lyrik und zeitgenössische Visuelle Kultur, édité par Magdalena Elisabeth Korecka et Wiebke Vorrath, Berlin, Boston: De Gruyter, pages 167-184, 2023, https://doi.org/10.1515/9783111299334-009, licence CC BY-NC-ND 4.0. Dans ce chapitre, on trouvera en particulier des explications éclairantes sur certains des poèmes-sources du livre.
- Interview des auteurs du livre (en), Daniel Holden et Chris Kerr, par Aaron Kent, 11 octobre 2023.
- Alan Riddell, Typewritter Art, London Magazine Editions, 1975, PDF en ligne. Ce livre contient de belles illustrations de cet art de la machine à écrire, une forme de poésie concrète.
- L’entrée nerd dans Linguee.
- Le livre avait été évoqué dans la section Liens en août 2023 : https://linuxfr.org/users/gilcot/liens/what-is-code-poetry .
- Quatre poèmes-sources du livre avaient déjà été publiés en 2019 sur le site https://www.welcometothejungle.com/fr/tags/developers-poem-programs .
# Merci
Posté par Khrys (site web personnel) . Évalué à 5 (+5/-0).
Merci pour cette belle découverte !
[^] # Re: Merci
Posté par Luc-Skywalker . Évalué à 3 (+1/-0).
Je plussoie. Vraiment cool.
A mettre dans la même catégorie que "The International Obfuscated C Code Contest" selon moi.
"Si tous les cons volaient, il ferait nuit" F. Dard
# Achat
Posté par vmagnin (site web personnel) . Évalué à 2 (+0/-0).
A noter qu'on peut le trouver sur eBay à un prix normal : 22,38 € / livraison gratuite. Chez Jeff, c'est plus cher.
Ou alors essayer de le commander à son libraire de quartier et être patient : ISBN-13 978-1915760890
# .
Posté par Thomas Douillard . Évalué à 4 (+2/-1).
[^] # Re: .
Posté par vmagnin (site web personnel) . Évalué à 3 (+1/-0). Dernière modification le 15 janvier 2025 à 21:59.
Difficile de faire plus fort ! (encore que Cantor nous dirait peut-être qu'il y a des infinis encore plus grands… Ce qui impliquerait peut-être que l'on pourrait être encore plus minable)
[^] # Re: .
Posté par Thomas Douillard . Évalué à 4 (+2/-1). Dernière modification le 18 janvier 2025 à 16:56.
Puisque tu en parles, il manquait un "for" pour faire minable.
Il se trouve que les boucles infinies c'est un moyen de se "représenter" ces infinis d'ordre supérieurs … Si tu essayes de numéroter les instructions exécutées dans le programmes (ligne par ligne pour la simplicité), un programme qui termine se termine au bout d'un nombre fini d'instruction, un nombre entier.
Une boucle infinie dans le programme devrait attendre un nombre infini d'instructions avant de terminer. Mais chaque instruction a son nombre entier. Le truc se corse si on considère un monde mathématique ou cette boucle se termine au bout du premier nombre infini …
Les instructions qui suivent la boucle sont alors potentiellement numérotées "infini+1" "infini+2" ………
Une telle numérotation fonctionne après la première boucle infinie, mais si on en enchaîne 2 ? et ben on a du infini + infini + 1 = infini*2+1 , infini + infini + 2 ……
Là on aurait 2 boucles infinies imbriquées, ce qui nous amènerait sur du infini² je pense, c'est à dire un fort beau score de minablitude, plutôt mauvais pour la santé dont il faut probablement se débarrasser au plus vite pour retrouver un semblant d'estime de soi, rare sont les personnes qui le méritent vraiment sans doute. Comme quoi on peut mixer mathématiques et poésie de manière surprenantes !
Voir Nombre ordinal ou Ce post de David Madore pour lycéen ou celui là pour une intro plus mathématique de vulgarisation
# Déguster
Posté par vmagnin (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 14 janvier 2025 à 20:43.
A ceux qui ne se sentent pas poète, je suggère de se tourner vers l'estomac et de remplacer le poème par une recette de cuisine. Je pense en particulier au fameux code du donut ASCII qui tourne en 3D, ici en C :
https://www.a1k0n.net/2011/07/20/donut-math.html
[^] # Re: Déguster
Posté par Benoît Sibaud (site web personnel) . Évalué à 4 (+1/-0).
Note d'avertissement : il y a un risque de développer TapeTantpis pour plein de langages.
[^] # Re: Déguster
Posté par vmagnin (site web personnel) . Évalué à 2 (+0/-0).
Oui, à consommer avec modération.
On va devoir créer une page Wiki : TapeToiUnDonut ou t@pe2a1Donut.
[^] # Re: Déguster
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 4 (+1/-0).
Je pourrais « coder » une (très) courte poésie en tricot :-)
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Déguster
Posté par vmagnin (site web personnel) . Évalué à 2 (+0/-0).
Est-ce que ces brodeuses sont programmables sur PC ? :
https://sewingcraft.brother.eu/fr-fr/produits/machines/machines-a-broder/machines-a-broder
Un petit code qui brode un motif et qui est mis en page comme le motif, ça le fait.
[^] # Re: Déguster
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 5 (+2/-0).
Depuis 2018, il y a une extension, Inkstitch, pour Inkscape, on en a parlé ici :-)
Il y a aussi des logiciels privateurs mais seulement, à ma connaissance, pour Windows.
Après ça dépend du format de fichier accepté par les machines, qui a tendance à s'être rétréci et, à ma connaissance, les machines brodeuses actuelles acceptent toutes un format commun.
Merci pour ton commentaire, parce qu'en furetant sur le site de l'extension, je suis tombée sur la page des polices. Il y en a de très chouettes, mais, évidemment elles ne peuvent pas être utilisées pour du texte, mais seulement pour de la broderie machine.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: Déguster
Posté par vmagnin (site web personnel) . Évalué à 2 (+0/-0).
Sympa. C'est sûr que l'Abril En Fleur AGS ne va pas t'aider à lire l'article dans tangente :-)
# L'informatique et l'art
Posté par Vincent-Xavier JUMEL (site web personnel) . Évalué à 2 (+1/-0).
Merci pour cette dépêche. J'aurai peut-être pu mettre ça dans, un jour, nal, mais pas eu le courage.
Les vacances de fin d'année ont été l'occasion pour moi de me plonger dans l'œuvre de Iannis Xenakis : https://books.google.fr/books?id=y6lL3I0vmMwC&printsec=frontcover&hl=fr#v=onepage&q&f=false et en particulier de découvrir la vivacité encore présente, avec les retranscriptions de FORTRAN moderne de https://github.com/ThemosTsikas/XenakisFreeStochasticMusicFortran/blob/main/XenFSM_1.f de sont travail, qui viennent de faire l'objet d'un article https://books.openbookpublishers.com/10.11647/obp.0390/ch6.xhtml
Pour finir, un extrait audio : https://www.youtube.com/watch?v=9XZjCy18qrA
Vous aurez reconnu ST/10=1,080262
[^] # Re: L'informatique et l'art
Posté par vmagnin (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 14 janvier 2025 à 23:09.
Super,
j'avoue que je ne connais pas assez X. pour reconnaître une oeuvre stochastique plus qu'une autre :-)
Concernant le
XenFSM_1.f
que tu cites, il n'y a que les lignes 421-494 qui sont en Fortran actuel, de façon à rendre le programme compilable par GFortran. Le reste c'est du FORTRAN IV (le livre date de 1963 !), et malgré l'option-std=legacy
GFortran ne gère pas ces noms de fonctions se terminant par unf
.# Poien/poiesis
Posté par Adeimantos . Évalué à 3 (+3/-0).
Juste pour sacrifier au pédantisme de rigueur lorsqu'il s'agit de préciser, il me semble qu'il faut introduire des nuances dans les définitions que donne Wikipedia, en allant les chercher dans un outil qui a fait ses preuves (académiques), le dictionnaire Liddell Scott. Si en effet, on peut faire dériver le terme "poésie" du grec ancien "poien" (et de son substantif "poièsis"), il s'en faut que ce terme signifie "créer"; d'autant que "créer" signifie "produire quelque chose à partir de rien". Or, en grec ancien, "poièn" s'oppose à "praxis", qui signifie l'action au sens par exemple "d'aller au combat", ou "enseigner". De manière générale, les Grecs rangent les "fabricants" du côté du "poien", tandis que les actions non-directement utiles sont rangées dans la colonne "praxis". Aussi est-il étonnant de voir la poésie rangée avec la poterie, la menuiserie et autres coutellerie. Le "poète", pour les Grecs, est un "fabricant", ou un "fabricateur", pas seulement parce qu'il ensorcelle, mais parce que son dispositif langagier "produit" littéralement des images.
Références : Dictionnaire Liddell-Scott : ποί-ησις, εως, ἡ, fabrication, creation, production, opp. πρᾶξις (action, v. Arist. EN1140a2, Pol.1254a5), [μύρου] Hdt.3.22; νεῶν Th.3.2, etc.; ἡ τῶν ζῴων π. Pl.Smp.197a; ἡ τῶν μελῶν π. Id.Grg.449d; μίμησις π. τίς ἐστιν, εἰδώλων μέντοι Id.Sph.265b, etc.; αἱ ὑπὸ πάσαις ταῖς τέχναις ἐργασίαι ποιήσεις εἰσί Id.Smp.205b. 2. of Poetry, ἡ τῶν διθυράμβων π., τῆς τραγῳδίας, τῶν ἐπῶν, Pherecr.145.10, Pl.Grg.502a, 502b, R. 394c: abs., art of poetry, οἱ ἐν π. γενόμενοι Hdt.2.82, cf. Ar.Ra.868, etc.; οὕτως . . ἀταλαιπώρως ἡ π. διέκειτο Id.Fr.254; οἱ ἄκροι τῆς π. ἑκατέρας, i.e. tragedy and comedy, Pl.Tht.152e; ᾠδαὶ καὶ ἡ ἄλλη π. Id.Phdr.245a; π. ψιλὴ ἢ ἐν ᾠδῇ ib.278c. b. poetic composition, poem, ἐς ποίησιν ἐσενείκασθαι Hdt.2.23, cf. Th.1.10, etc.; περὶ ὧν Ὅμηρος τὴν π. πεποίηκεν Pl.Ion531d: pl., Id.Lg.829e.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.