dimanche 4 septembre 2011

Beauté et Mise en abyme d'un code source (Article accessible aux non-informaticiens !)

Il y a le mot source code dans le titre, mais rassurez-vous, aucune notion en informatique n'est requise pour vous émerveiller tout comme moi de la suite.

Tout d'abord, un peu de poésie avec les Djinns de Victor Hugo :


Murs, ville
Et port,
Asile
De mort,
Mer grise
Où brise
La brise
Tout dort.

Dans la plaine

Naît un bruit.
C'est l'haleine
De la nuit.
Elle brame
Comme une âme
Qu'une flamme
Toujours suit.

La voix plus haute

Semble un grelot.
D'un nain qui saute
C'est le galop.
Il fuit, s'élance,
Puis en cadence
Sur un pied danse
Au bout d'un flot.

La rumeur approche,

L'écho la redit.
C'est comme la cloche
D'un couvent maudit,
Comme un bruit de foule
Qui tonne et qui roule
Et tantôt s'écroule
Et tantôt grandit.

Dieu! La voix sépulcrale

Des Djinns!... - Quel bruit ils font!
Fuyons sous la spirale
De l'escalier profond!
Déjà s'éteint ma lampe,
Et l'ombre de la rampe..
Qui le long du mur rampe,
Monte jusqu'au plafond.

C'est l'essaim des Djinns qui passe,

Et tourbillonne en sifflant.
Les ifs, que leur vol fracasse,
Craquent comme un pin brûlant.
Leur troupeau lourd et rapide,
Volant dans l'espace vide,
Semble un nuage livide
Qui porte un éclair au flanc.

Ils sont tout près! - Tenons fermée

Cette salle ou nous les narguons
Quel bruit dehors! Hideuse armée
De vampires et de dragons!
La poutre du toit descellée
Ploie ainsi qu'une herbe mouillée,
Et la vieille porte rouillée,
Tremble, à déraciner ses gonds.

Cris de l'enfer! voix qui hurle et qui pleure!

L'horrible essaim, poussé par l'aquillon,
Sans doute, o ciel! s'abat sur ma demeure.
Le mur fléchit sous le noir bataillon.
La maison crie et chancelle penchée,
Et l'on dirait que, du sol arrachée,
Ainsi qu'il chasse une feuille séchée,
Le vent la roule avec leur tourbillon!

Prophète! Si ta main me sauve

De ces impurs démons des soirs,
J'irai prosterner mon front chauve
Devant tes sacrés encensoirs!
Fais que sur ces portes fidèles
Meure leur souffle d'étincelles,
Et qu'en vain l'ongle de leurs ailes
Grince et crie à ces vitraux noirs!

Ils sont passés! - Leur cohorte

S'envole et fuit, et leurs pieds
Cessent de battre ma porte
De leurs coups multipliés.
L'air est plein d'un bruit de chaînes,
Et dans les forêts prochaines
Frissonnent tous les grands chênes,
Sous leur vol de feu pliés!

De leurs ailes lointaines

Le battement décroît.
Si confus dans les plaines,
Si faible, que l'on croit
Ouïr la sauterelle
Crier d'une voix grêle
Ou pétiller la grêle
Sur le plomb d'un vieux toit.

D'étranges syllabes

Nous viennent encor.
Ainsi, des Arabes
Quand sonne le cor,
Un chant sur la grève
Par instants s'élève,
Et l'enfant qui rêve
Fait des rêves d'or.

Les Djinns funèbres,

Fils du trépas,
Dans les ténèbres
Pressent leur pas;
Leur essaim gronde;
Ainsi, profonde,
Murmure une onde
Qu'on ne voit pas.

Ce bruit vague

Qui s'endort,
C'est la vague
Sur le bord;
C'est la plainte
Presque éteinte
D'une sainte
Pour un mort.

On doute

La nuit...
J'écoute: -
Tout fuit,
Tout passe;
L'espace
Efface
Le bruit.

Victor Hugo, vue d'artiste (un peu goth)

Quelque chose de très chouette avec ce poème c'est sa forme. La longueur des vers augmente de façon arithmétique, symbolisant l'arrivée, telle une tornade des terribles Djinns, puis ils repartent au loin avec les derniers vers. Si parfois, par les assonances ou les allitérations la musicalité des mots servait le propos, ici, c'est une belle démonstration de la forme au 
service du fond. 

En informatique, quand un programme, un jeu vidéo, ou même ce blog que vous lisez en ce moment imprime un mot, par exemple :

Les Djinns funèbres, Fils du trépas, Dans les ténèbres Pressent leur pas;

On écrit, en général, quelque chose du style :


print "Les Djinns funèbres, Fils du trépas, Dans les ténèbres Pressent leur pas;";


Cette petite ligne au-dessus, puisqu'elle génère, au final le programme ou l'effet voulu par le programmeur, est dénommée source code (ou dans ce cas, fragment de source code, les programmes affichant une ligne toute bête ne sont pas très utiles).
Rien de transcendantal. 

Voici un objet virtuel, (codé dans le langage inform 6). C'est une table, installée dans un cloître (sur l'Ile San Michele à Venise). Si vous n'avez jamais codé, ne soyez pas effrayé, c'est facile à lire.

Object tablem "table de bois massif" cloitre
    with name 'table de bois massif' 'table' 'bois massif',
         description "^Une large table pouvant accueillir une dizaine de convives, placée en plein milieu de la cour, et
         proposant un vrai festin. ^ ",         
         has static supporter enterable female transparent;


Le cloître de l'Ile San Michele

Le mot Object veut dire que c'est...ben, un objet. Tablem c'est son petit nom pour le repérer  plus tard dans le programme. "Table de bois massif" c'est le nom qui sera affiché pour le joueur. Cloitre, c'est le lieu où elle est installée. Ensuite on a une série de name (noms) par lesquels on pourra l'appeler, une description et puis des attributs : static signifie qu'on peut pas le bouger, supporter veut dire qu'on peut mettre des choses dessus, enterable ça veut dire qu'on peut monter dessus, female veut dire que c'est un objet, qui selon la grammaire française sera féminin et transparent signifie que si on met des trucs dessus, on pourra quand même les voir à distance.

Rien qu'avec ce petit bout de code, vous le livrez à votre ordinateur et vous aurez une table  "virtuelle" parfaitement fonctionnelle. Chouette, non ? Vous pouvez faire des trucs bêtes comme essayer de manger la table. Comme il est pas spécifié qu'elle est mangeable, l'ordinateur vous répondra "vous ne pouvez pas la manger". Et il dira "la manger" et pas "le  
manger" parce que vous lui avez dit que c'était un nom féminin.

Maintenant c'est pas très beau sur la forme et le fond. Désolé, c'était de moi.

Mais adressons-nous aux maîtres.

Un langage de programmation tout à fait élégant a vu le jour il y a quelques années. C'est Inform 7. Il fonctionne en langage naturel.





Autrement dit, il suffit d'écrire : "Dans le cloitre, il y a une table. C'est un meuble et on peut mettre des trucs dessus. On peut même monter dessus." Et votre table apparaît. Cela rend la création de jeux (textuels, certes, mais ce qui est texte un jour ne tarde pas à franchir les frontières des textes) accessible à tout non-programmeur ou en tout cas toute personne non familière avec le code.


Exemple d'un non-programmeur
Comme M. Jourdain, il ne le sait pas, 
mais il peut coder en Inform 7


Bon, cela ne marche simplement qu'en anglais. (En français en faisant la danse du ventre, mais...bon, juste en anglais).

Voici un exemple de code source en Inform 7 :


The Fallen Tree is north of Longwall Street. "The overgrown ground, sloping gradually downwards to the north, is interrupted here by the fallen trunk of a giant of a tree. The trunk seems to have partially demolished an old town-house to northeast."

The trunk of a giant fallen tree is scenery in the Fallen Tree. Instead of climbing or entering the trunk, say "No need to clamber on it." The trunk of a giant fallen tree is wood. 

The partially demolished house is scenery in the Fallen Tree. Understand "town-house" as the partially demolished house. Effect of casting mend at the partially demolished house: record outcome "but it's just too huge a task. This whole idea of rebuilding Tolti-Aph, one house at a time, is very commendable, but perhaps not very realistic"; rule succeeds.


(Tiré de The Reliques of Tolti-Aph par Graham Nelson)

Avez-vous remarqué ? Nous avons l'impression de lire une histoire. Bon, pas une histoire fascinante, un peu une série d'instructions, mais quelque chose de tout à fait compréhensible.



Maintenant des petits malins se sont dits : Et si notre code source, qui devient maintenant lisible comme un livre, devenait beau comme un livre ? Quelle idée fabuleuse !

Voici un exemple fascinant :


"When the Moon Hits Your Eye" by Brian Slesinsky 

Part 1 - Definitions *

A sound is a kind of value.   Ting-a-ling-a-ling, Tippy-tippy-tay, 
Tippy-tippy-tay like a gay tarantella, and you ll sing Vita Bella are the sounds. 

Old Napoli is a room.  "A warm, pleasant night.  The full moon hangs 
low over the horizon."  The full moon is scenery in Old Napoli. "Something about the full moon makes you feel hungry." 


Understand "horizon" as the full moon. 

Dean Martin is a man. The description of Dean Martin is "He looks 

surprisingly alive.  And yet you know you're not dreaming." 
Check singing when Dean Martin is in the room: say "Why spoil the 
moment?"; rule fails. 

Love is a container. 

A thing can be in-Napoli where. 

A thing can be king.  A thing is seldom king.

 
To here's what they say:  Change love to king. 

Dean Martin's Show is a scene.  Dean Martin's Show begins when love is 

king.  Dean Martin's Show ends when love is not king. 

When Dean Martin's Show begins: 

  move Dean Martin to Old Napoli; 
  say "Hey, look, there's Dean Martin!"; 
  The moon hits your eye like a big pizza pie 
  in zero turns from now; 
  The world seems to shine like you've had too much wine 
  in one turn from now; 
  The stars make you drool just like a pasta fazule 
  in two turns from now; 
  You dance down the street with a cloud at your feet 
  in three turns from now; 
  You walk in-a dream but you know you're not dreaming signore 
  in four turns from now. 

When Dean Martin's Show ends: 

  remove Dean Martin from play; 
  say "Dean Martin leaves the stage.[line break]"; 
  say "(Next show in five minutes.)"; 
  Boy meets girl in five minutes from now. 

To that's amore: say "  '[a random sound].'" 

About-To-Ring relates various things to various sounds.  The verb to 
will-ring (he will-ring, they will-ring, he will-have-rung, it is about-to-ring, he is about-to-ring) implies the About-To-Ring relation. 

About-To-Play relates various things to various sounds.  The verb to 
will-play (he will-play, they will-play, he will-have-played, it is about-to-play, he is about-to-play) implies the About-To-Play relation. 

To you're in love: say "You're in love." 

To scuzza me but you see back in old Napoli: 

  Change love to not king. 

When play begins: 

  Boy meets girl in one turn from now. 

Part 2 - Lyrics 

In-Napoli where love is king. 

When boy meets girl: 
here's what they say. 

When the moon hits your eye 

like a big pizza pie: 
that's amore. 

When the world seems to shine 

like you've had too much wine: 
that's amore. 

Bells will-ring ting-a-ling-a-ling, 

ting-a-ling-a-ling, and you ll sing 
Vita Bella. 

Hearts will-play tippy-tippy-tay, 

tippy-tippy-tay like a gay 
tarantella. 

When the stars make you drool 

just like a pasta fazule: 
that's amore. 

When you dance down the street 

with a cloud at your feet: 
you're in love. 

When you walk in-a dream 

but you know you're not dreaming 
signore:

Scuzza me but you see 

back in old Napoli; 
That's amore.   

Que dit le code source ? Le code source pose d'abord des petites conditions qui semblent  absurdes. (Love is a container...c'est charmant ♥). Si vous lisez le code source comme une histoire, bon, vous voyez Dean Martin qui chante sa chanson - A Naples, où l'Amour est Roi...


Je suis le héros d'un texte expérimentalen Inform 7, et vous ?


Mais que va faire l'ordinateur, qui comprend ceci comme du langage naturel ? Et bien il va  réellement recréer Naples, l'amour et tous les évènements de la chanson "When the Moon Hits Your Eye" selon strictement les paroles, et ces éléments seront interactifs. En quelque sorte, il aura donné vie à la chanson, et ceci sans effort.



L'auteur avouait lui-même que dans ces "petites expérimentations" il voulait écrire des oeuvres qui soient admirables et par l'humain, et par l'ordinateur...

C'est une ambition légitime mais souvent vaine d'écrire une belle phrase.

Un écrivain portant le poids de son talent pourrait la façonner.

Un typographe pourrait lui donner la forme visuelle adaptée.


Avec l'informatique et sa dimension interactive, la beauté d'une phrase prend mille sens : avec le code source, c'est à dire la matrice qui donne vie à la phrase choisie et à sa potentialité en tant qu'objet, la beauté peut-être intérieure, fractale, porteuse de multiples sens, en fait, pas si loin des mystères et des ouvrages à clefs secrètes chers aux auteurs médiévaux et même antiques, aux premiers temps de la conception de la pensée écrite.



Aucun commentaire:

Enregistrer un commentaire

Merci de lire mon blog