💾 Archived View for gem.ortie.org › gemlog › 2023-09-08.gmi captured on 2024-05-10 at 10:44:32. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-02-05)
-=-=-=-=-=-=-
Il y a un fait qui est indéniable : je pense ne pas trop mal me débrouiller en informatique au sens large, mais je reste malgré tout un piètre programmeur.
J'avais pourtant souhaité passer un peu moins de temps à étudier le sujet, mais malgré tout je m'y suis replongé à corps perdu, et c'est une nouvelle fois retombé sur le langage Forth, malgré son apparente austérité, c'est celui qui me semble le plus naturel. Pour certaines opérations de base (calculs, comparaisons), cela fonctionne bien, mais pour d'autres, dès lors qu'il s'agit de manipulations avancées de flux de texte par exemple, cela devient vite ardu.
J'avais commencé l'année dernière le portage de l'algorithme de Bresenham en UF Forth, qui permet de calculer le tracé de lignes à partir de deux coordonnées, et de les affichers pixel par pixel.
C'était toujours imparfait, certains chemins ne s'affichant pas correctement.
Presque un an après avoir séché dessus, je m'y suis remis et j'ai enfin réussi à un mettre un point final, même si le code devra encore être amélioré pour le rendre plus propre.
Dans la foulée, j'ai pu réutiliser le même code pour que cela fonctionne également dans ueforth (version linux, puisqu'il existe déjà en mode web en réutilisant des fonctions javascript)
Cela ne révolutionnera pas l'informatique, mais à un niveau personnel c'est satisfaisant de revenir aux fondamentaux : afficher du texte, gérer l'ascii, allumer des points sur l'écran...
J'ai également commencé la programmation d'un jeu en UF Forth. C'est une reprise du jeu du cochon, les règles sont simples, chaque joueur lance un dé à tour de rôle, et addition un score. Il continuera ainsi jusqu'à ce qu'il décide de s'arrêter ou qu'il fasse 1. Dans ce dernier cas, le score intermédiaire sera remis à 0. S'il s'est arrêté à temps, ce score sera ajouté à son total. Le premier à obtenir 100 gagne la partie.
Cela n'est pas encore entièrement finalisé, mais cela fonctionne dans les grandes lignes.
Il tourne également sur Nintendo DS, via l'émulateur UXN.
Le code se trouve sur Forth is Fun, dont le dépôt est indiqué en lien un peu plus haut.
En parlant de code, je suis en train de lire avec intérêt l'ouvrage « Thinking Forth », de Leo Brodie, qui a également réalisé l'excellent « Starting Forth » qui est une référence pour les débutants.
Il m'a bien fait prendre conscience que le code de mon jeu décrit plus haut est absolument l'inverse de ce qu'il faut faire pour réaliser un codage correct, dans l'esprit Forth. Aussi je vais m'atteler à améliorer ce point en repartant de zéro et en scindant mieux les divers éléments.
Il explique également, et je viens seulement d'en prendre conscience, que l'édition traditionnelle des divers Forth, dans des blocs (qui correspondaient à un seul écran), facilitait la réalisation de définition de mots (appelés « procedure » ou « function » dans d'autres langages), et cela obligait à les structurer de manière concise puisque chaque mot devait tenir sur un seul écran. Ensuite, ils pouvaient interagir entre eux en s'appelant d'un écran à l'autre.
UF Forth permet également ce mode de travail. Un exemple concret en est donné dans le dossier uf_forth de « Forth is Fun ».