@Ludwig! Merci pour l'éclairage.
Effectivement, pouvoir créer des mots qui vont permettre de créer des mots, est un outil assez puissant et agréable à utiliser.
Je ne suis pas sûr que l'on puisse comparer ça avec la POO telle qu'elle est pratiquée en C++ par exemple, et d'ailleurs je n'ai
jamais utilisé le terme d'objet en parlant de la pile système. pour moi ce sont toujours des valeurs 16,32, ou 64 bits qui correspondent
à quelque chose, mais c'est au programmeur de savoir justement quoi en faire. Il n'y a aucun garde-fou (je viens de voir qu'avec swift Forth
il y en a un en ce qui concerne les accès mémoires)
Par exemple, j'ai dans mon Forth le mot SPRITE_BMP qui me permet de créer mes mots de type "sprite" en provenance d'une image bmp
par exemple : image.bmp 100 150 45 23 SPRITE_BMP TOTO
va créer le mot TOTO qui est un sprite récupéré sur l'image "image.bmp"
le point de départ est en X100 Y150, la largeur vaut 45 et la hauteur 23 pixels
et si je tape :
20 40 TOTO
mon sprite s'affiche en X20 Y40
(ça c'était pour dire que je savais utiliser ces choses là )
Si je créé deux variables POSITION_X et POSITION_Y pour positionner mon sprite,
je peux m'en servir en faisant : POSITION_X @ POSITION_Y @ TOTO
mais si j'oublie un "@" : POSITION_X POSITION_Y @ TOTO
rien ne va m'avertir de la boulette, juste l'affichage ne fonctionnera pas car X vaudra l'adresse de POSITION_X
Bon, ok, j'ai pris un exemple extrêmement simple à débugger, mais c'est parfois plus pervers car le "compilateur" ne vérifie
pas grand chose (à part l'était de la pile avant/après)
Si je tape : CREATE TRUC_BIDULE 4 ALLOT
pour créer un petit tableau de 4 octets
que j'initialise les 4 valeurs avec 12 34 56 et 78 :
12 TRUC_BIDULE 0 + C!
34 TRUC_BIDULE 1 + C!
56 TRUC_BIDULE 2 + C!
78 TRUC_BIDULE 3 + C!
mais que plus loin dans mon programme, pensant effacer le premier octet je fais : 0 TRUC_BIDULE 0 + ! ( ! au lieu de C! )
et bien en fait je viens de mettre à 0 tout le tableau car ! fonctionne sur 32 bits et non 8
Pour un programmeur venant d'un langage de haut niveau ça peut perturber
-----