Vendredi 17 janvier 1986

Qu'est-ce qui nous pousse à choisir un domaine d'étude ou à nous préparer à un métier ? Je n'ai jamais vraiment eu l'occasion de me poser ces questions, car j'ai eu la chance de savoir très tôt ce que je voulais faire. ✨

Le 17 janvier 📅 est la date anniversaire d'un événement qui a déterminé mon choix. C'était aussi un vendredi, et cela remonte à très longtemps.

Comme tous les vendredis, en sortant des cours, je me rends chez mon marchand de journaux pour acheter Hebdogiciel, un hebdomadaire hors normes, une sorte de croisement entre Charlie Hebdo et Github 🤯. Les actualités de l'informatique y sont présentées sous un angle satirique qui leur a valu quelques procès ⚖️. Mais le principal contenu du journal, ce sont d'immenses listings de code source 📜, une denrée assez rare à cette époque.

Je suis en classe de 3ème. J'avais découvert le langage BASIC quelques mois plus tôt au club informatique du collège. Mes week-ends se partagent entre les matchs de foot ⚽ et la saisie de code, souvent recopié à partir de l'Hebdogiciel du vendredi.

J'avais commencé à écrire mes propres programmes, mais je manquais de méthode pour concevoir des logiciels un peu plus élaborés. En revanche, dans Hebdogiciel, il y avait une rubrique qui me parlait particulièrement : les Deulignes.

Quand on programme en BASIC 🔤 avec un petit ordinateur personnel des années 80, on n'a pas d'éditeur de texte pleine page comme ceux d'aujourd'hui. On code une seule ligne à la fois, en identifiant chaque ligne avec un numéro pour pouvoir la retrouver et la modifier. Chaque ligne peut contenir plusieurs instructions. La bonne pratique consiste à laisser des lignes non utilisées pour, ultérieurement, pouvoir insérer du code sans avoir à tout renuméroter. Le premier jet d'un programme sera ainsi souvent numéroté de 10 en 10.

10 I=5
20 FOR J=1 TO I:PRINT "*";:NEXT
30 I=I-1:PRINT
40 IF I>0 THEN GOTO 20

Le deuligne, c'est un exercice de style où l'on ne peut utiliser que deux lignes de code, chacune étant limitée à 255 caractères. On pourrait comparer ça à un Oulipo du codeur.

Je me souviendrai toujours de l'Hebdogiciel de ce vendredi là, car, dans la rubrique des deulignes, il y avait le mien. Je l'avais envoyé sans grand espoir, même pas sur un support magnétique. Je l'avais recopié à la main ✍️ sur un bout de papier à petits carreaux glissé dans une enveloppe ✉️, et un journaliste avait pris le temps de le taper pour l'essayer.

Mon deuligne

Et voilà, mon code était dans un journal ! Ça peut paraître dérisoire, mais pour moi, c'était énorme. Mon code avait quitté mon ordinateur. Un nouveau monde s'ouvrait à moi. 🌍

Pour marquer cet anniversaire, j'ai eu envie de reproduire ce deuligne en JavaScript.

Et, pour garder l'esprit de l'exercice de style, j'ai essayé de conserver autant que possible la forme du code initial : c'est du JavaScript qui ressemble à du BASIC. 🤯

 1DEFGR$(0, 32, 17, 16, 31, 3, 62, 64, 0);
 2DEFGR$(1, 224, 240, 254, 254, 240, 24, 6, 0);
 3DEFGR$(2, 14, 240, 246, 254, 248, 16, 224, 0);
 4DEFGR$(3, 0, 24, 57, 191, 57, 24, 0, 0);
 5let A$ = [];
 6A$[0] = " " + GR$(0) + GR$(1);
 7A$[1] = " " + GR$(0) + GR$(2);
 8let I = 0;
 9let B = 15;
10SCREEN(4, 7);
11let C$ = "  ";
12await FOR(1, 21, async (J) => {
13    LOCATE(0, 0);
14    CLS();
15    PRINT(J);
16    await FOR(0, J * 9, (K) => {
17        PSET(RND()*39 + 9, RND()*24, GR$(3), 1);
18    });
19    await FOR(0, 37, async (A) => {
20        LOCATE(A, B);
21        PRINT(A$[I]);
22        LOCATE(A, B - 1);
23        PRINT(C$);
24        LOCATE(A, B + 1);
25        PRINT(C$);
26        let S = STICK();
27        B = B - Number(S === 1 && B > 1) + Number(S === 5 && B < 22);
28        if (POINT(A * 8 + 28, B * 8 + 4) === 1) END();
29        PLAY("L15RE");
30        I = 1 - I;
31    });
32});
33CLS();
34PRINT("GAGNE!");

Que dire de plus ?

  • Les événements anodins peuvent avoir une grande importance. 🌟
  • Les exercices de style, en intégrant des contraintes, renforcent les compétences. 💪
  • Le code, ce n'est pas qu'un outil. Il peut aussi avoir une valeur intrinsèque. 💖
Une réaction ? Un commentaire ? Rejoignez la discussion.   linkedin   bluesky   twitter