Outils pour utilisateurs

Outils du site


progrem

Ceci est une ancienne révision du document !


Un Progrem

Un petit programme en forme de poeme. Ou bien l'inverse.

Propositions :

  • Le Progrem est constitué d'un programme javascript pour être facilement executable sur tous types de machines
  • Le Progrem produit une sortie interpretable dans du navigateur internet.
  • Le Progrem est constitué du couple code source et sortie produite par le code source.
  • Le Progrem peut être éducatif et son programme doit donc être conçu en conséquence.
  • La “tuyauterie” nécessaire à produire la sortie ne devrait pas apparaitre dans le Progrem. Il faut donc fournir une API au progrem qui permet de mettre en valeur l'algorithmie du Progrem. On peut envisager de fournir une API “localisé” pour traduire le Progrem en français, espagnol, …
  • L'exécution du Progrem pourrait être effectué étape par étape comme avec un debugger pour améliorer la compréhension du lecteur. Cela nécessite la définition d'un formalisme qui permet à tous les Progrems de pouvoir être visualisé dans un tel cadre.

Un progrem qui déssine

Un progrem qui dessine dessinerait des images fixes ou animées. Le dessin produit serait “responsive” : la taille du dessin est configurable.

Le code d'un Progrem

On se concentre sur l'algorithme principal, pas sur les api js. On soigne la compréhension de l'algorithme. On cache si possible le code inutile pour la transmission de l'intuition de ce que fait le code.

function construireNouveauPixel(colonne, ligne, animation) {
  imageIndex = animation.getImageIndex()
  imagePrecedente = animation.getImagePrecedente()
 
  si ( condition(ligne, colonne, animation) ) {
    pixel = new Pixel(rose)
  } sinon {
    pixel = new Pixel(bleu)
  }
  return pixel;
}
 
for image i {
  clearImage()
  for ligne l {
    ligne = image[l]
    for colonne c {
      si ( condition(c, l, i) ) {
        pixel = ligne[c]
        pixel.couleur = rose
      }
      paintPixel(pixel)
    }
    paintLigne(ligne)
  }
  paintImage(image)
}

Coder un lecteur de progrem en typescript

Nous utiliserons npm (sudo apt install npm)

Initialisation du projet

cd progrem-veiwer
npm init
npm i typescript --save-dev
./node_modules/.bin/tsc --init

On peut customiser un peu la configuration de typescript pour generer les sourcemaps (ce sont les fichiers qui permettent de débugger), et changer le repertoire où est généré le code javascript en modifiant le fichier tsconfig.json et en spécifiant ces élements de configuration :

    "outDir": "dist",
    "sourceMap": true,

Enfin on peut démarrer le compilateur de typescript en mode “watch” pour générer le code à la volé en lançant la commande :

./node_modules/.bin/tsc -w
progrem.1559386230.txt.gz · Dernière modification : 2019/06/01 10:50 de bigMax