Discussion sur le langage Forth

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

Dominique a écrit :Ensuite, c'est un langage compilé.
Quand on compile le code source avec Turbo-Pascal, on obtient un programme exécutable en langage machine,
directement exécutable sans avoir besoin que Turbo-Pascal soit présent sur la disquette. Idem pour le langage C.

Par contre, mon programme source écrit en Forth doit d'abord être chargé par le langage Forth, puis compilé avant chaque exécution. Donc c'est un langage qui compile mais dont on n'obtient pas de programmes en langage machine exécutables indépendants. C'est une différence très importante.

Pour distribuer son programme, il faudra que l'acheteur possède le langage Forth, puis connaisse les commandes Forth
pour charger, compiler et éxecuter le programme.

Je m'interroge à ce sujet pour le MO5 par exemple : Quelqu'un à l'époque en 1986 qui aurait écrit un jeu en Forth pour MO5,
pour le distribuer sur cassette, le langage Forth doit-il être présent sur la cassette de chaque programme distribué ?

Qu'en aurait-il été des droits d'auteurs ? Car les gens n'ont plus besoin d'acheter la cassette "FORTH pour MO5"
si le Forth est livré avec chaque programme ? Ce n'est pas bien clair.

Ma question vaut pour le langage Forth en général :
Pourquoi ne produit-il pas un fichier final en langage machine, indépendant et directement exécutable ?
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Xavier31 a écrit :Pour distribuer son programme, il faudra que l'acheteur possède le langage Forth, puis connaisse les commandes Forth pour charger, compiler et éxecuter le programme.
Il faut voir FORTH comme un IDE avant l'heure. Il fait éditeur/compilateur/débugger tout en un. Quand à la publication, il me semble avoir lu ici que le compilo pouvait générer un fichier "BIN" au format Thomson qui soit autonome.

Dans le pire des cas, comme le forth est 100% en mémoire sans ROM, un simple dump de la mémoire vive dans un fichier binaire Thomson produira aussi un exécutable là encore forcément autonome, mais un peu plus gros que ce que la compilation d'un BIN direct (car je suppose que dans ce cas le compilo n'exporte dans le BIN que la machine virtuelle accompagnée des mots utilisés directement et indirectement par le programmes et pas toute la bibliothèque de mots présents en mémoire).
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

__sam__ a écrit :il me semble avoir lu ici que le compilo pouvait générer un fichier "BIN" au format Thomson qui soit autonome.
C'est l'info que je cherche. Je ne le vois pas dans la documentation du FORTH MO5. C'est écrit à quelle page ?
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique »

Xavier,

Forth est entièrement libre de tous droits. Son concepteur en a fait un "open source" depuis le début. La société qu'il a créée (Forth,Inc) ne vivait pas de licences sur le Forth, mais de son travail de programmateur Forth.
Comme l'a dit _sam_, n'oublions pas qu'il précède de presque 6/7 ans les programmes dont tu parles : Forth a débuté en 1976 sur les 8 bits, Turbo Pascal vers 1983.
D'ailleurs mon premier contact avec FORTH a été sur un ZX81 - 16K
Il y aurait beaucoup à dire pour répondre à toutes tes interrogations. Le mieux peut être est d'attendre la fin du projet MO4PAINT.
Dans la phase 2 du projet, une fois le programme terminé, je vais retirer tout ce qui est superflu (les routines de compil, les routines de recherche, celle qu'on n'a pas utilisé, les étiquettes des procédures etc...) et muni d'un ASM pour 6809, on régénérera les codes et MO4PAINT ne tournera qu'avec la partie exécution des codes compilés.
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

Dominique a écrit :Xavier, Forth est entièrement libre de tous droits.
Je ne parlais pas du langage Forth, mais du logiciel FORTH pour MO5 de Loriciels. J'étais curieux de savoir
si l'auteur d'un jeu en 1985 aurait pu le diffuser. La réponse est non, car il aurait fallu mettre le programme Forth sur la cassette.
Mais en passant par Loriciels, le jeu aurait pu être distribué et vendu. Mais les acheteurs auraient eu du mal à lancer le jeu.
Dominique a écrit : Son concepteur en a fait un "open source" depuis le début. La société qu'il a créée (Forth,Inc) ne vivait pas de licences sur le Forth, mais de son travail de programmateur Forth.
Forth inc vends bien des licences sur Forth.com, même s'il y a des Forth gratuits.
Le système développé et soutenu par FORTH, Inc. est SwiftForth. C'est de loin le plus abouti, mais il n'est ni portable, ni libre, ni gratuit. Donc je ne dirais pas que la société Forth inc fait dans l'open source.
Dominique a écrit :Comme l'a dit _sam_, n'oublions pas qu'il précède de presque 6/7 ans les programmes dont tu parles : Forth a débuté en 1976 sur les 8 bits, Turbo Pascal vers 1983.
Je posais simplement la question de savoir si ce langage pouvait générer nativement un fichier exécutable autonome.
La réponse est non, il ne le fait pas. D'où sa disparition face à Turbo-Pascal, lui-même évincé par le langage C.

Le FORTH-83 sur ORIC semble pourvoir sauvegarder facilement des exécutables autonomes :
http://oric.free.fr/F83/f83m-10.html#ss10.2

" Pour sauver une application dans un fichier .COM, faites BYE, lisez les adresse dddd et ffff de début et de fin, et sauvez votre application par: SAVE "MONFORTH.COM", A#dddd, E#ffff, AUTO "

Mais comme ce n'est pas généralisé de façon native en Forth, ça ne m'intéresse pas. Je ne pourrais pas le faire
sur les autres ordinateurs, tout simplement.
Dominique a écrit :Il y aurait beaucoup à dire pour répondre à toutes tes interrogations. Le mieux peut être est d'attendre la fin du projet MO4PAINT.
Ca y est, j'ai toutes mes réponses pour les questions posées plus haut. Je continue d'étudier la programmation en Forth, héhé.
Par contre, j'aurai certainement d'autres questions plus tard. J'apprends beaucoup sur les possibilités du Forth en regardant le projet MO4PAINT se construire en direct, tout le code source affiché par toi et sam. Très cool. :)
Dominique a écrit :Dans la phase 2 du projet, une fois le programme terminé, je vais retirer tout ce qui est superflu (les routines de compil, les routines de recherche, celle qu'on n'a pas utilisé, les étiquettes des procédures etc...) et muni d'un ASM pour 6809, on régénérera les codes et MO4PAINT ne tournera qu'avec la partie exécution des codes compilés.
Dans mon cas, ça ne m'intéresse pas ce genre de bidouille, car je compte programmer en langage Forth sur plusieurs ordinateurs différents. Ce serait pour moi une perte de temps de bidouiller la Ram pour chaque ordinateur. (même si ça peut à l'occasion avoir un intérêt dans des cas bien particuliers)
Dominique a écrit :Ensuite, c'est un langage compilé. Il était virtuellement impossible de le décompiler.
Quand à la décompilation en Forth, j'ai vu que GForth le fait sur PC avec le mot Forth "SEE" :
http://www.complang.tuwien.ac.at/forth/ ... orial.html

FORTH83 sur ORIC semble disposer d'un décompilateur également appellé "SEE" :
http://oric.free.fr/F83/f83m-1.html

je cite :
"Si vous avez des doutes, ou peur qu'une coquille se soit subrepticement infiltrée, utilisez le décompilateur (SEE) et le désassembleur (DESAS) pour lever le doute."

Je n'ai pas encore testé "SEE", mais ça peut être un outil pratique.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Xavier31 a écrit :" Pour sauver une application dans un fichier .COM, faites BYE, lisez les adresse dddd et ffff de début et de fin, et sauvez votre application par: SAVE "MONFORTH.COM", A#dddd, E#ffff, AUTO "
Je crois que c'est ce que j'évoquais plus haut. Je suppose que BYE fait revenir au basic, ensuite le SAUVE enregistre sur K7 la zone mémoire dans lequel Forth tournait.

Sur thomson on doit pouvoir faire exactement la même chose. L'organisation mémoire est donnée dans la manuel (p59 pour le Forth MO5). Typiquement, il me semble qu'il faille sauver la zone entre $454c (début du Forth) et HERE (fin du forth) ou $9DFF (bas de la pile Forth). Par ailleurs Dominique avait indiqué les routines pour sauver un bloc mémoire sur K7 (Nota: le Forth-79 de S.E.F.I contient lui aussi une foultitude de commandes pour gérer les mémoire de masses). Avec tout cela il y a tout ce qu'il faut pour générer automatiquement un exécutable Forth autonome.

Le secret est que tout est en RAM et qu'un dump de la mémoire est suffisant pour tout contenir (i.e. pas de bouts de codes dans une rom ni rien). On sauve l’interpréteur forth (qui est tout petit) plus la zone qui contient les variables et les mots compilés, et voila: un exe 100% autonome qui n'a même plus besoin d'être compilé. Enfin si j'ai bien tout compris du fonctionnement de l'environnement Forth sur MO5.

Sinon pour répondre à ton autre question, je n'ai pas retrouvé dans la doc du forth MO5 de commande permettant de réaliser un exécutable autonome. Je ne pense pas avoir révé. J'ai du lire cela peut-être sur le fil du Forth VG5000 ou même ailleurs. Mais c'est parfaitement réalisable. D'ailleurs dans ce document http://www.epi.asso.fr/fic_pdf/b38p140.pdf on peut lire:
Pour terminer, voici une bonne nouvelle pour tous les passionnés du langage FORTH dans l'Éducation nationale : je vais réaliser une implantation de FORTH sur MO5, dans le cadre du para-réseau. Cette version sera opérationnelle dès la rentrée scolaire 85, Elle tiendra compte de la mémoire auxillaire de 64K (organisée en 4 banques de 16K, commutables, et situées à la même adresse que la ROM BASIC). Seront intégrés les outils suivants : éditeur d'écrans-FORTH et éditeur de texte, macro-assembleur 6809, débugger, décompileteur FORTH, gestion d'overlays relogeables, virgule flottante. Les entêtes des mots FORTH
seront séparés, ce qui permet de supprimer les entêtes des mots d'un programme terminé (pour ne garder que le code exécutable). En outre, ce FORTH sera en code direct chaîné, c'est-à-dire que le CFA (champ code) contiendra du code machine au lieu d'une adresse. Le fait d'éliminer ainsi une indirection fait gagner un temps appréciable à l'exécution. Je désire que ce FORTH soit un système de développement complet, relativement indépendant du matériel sur lequel il sera implanté. C'est d'ailleurs à partir de ce FORTH que sera écrit le logiciel d'EAO OEOMETRIX, sur M05. Tout courrier (suggestions, etc...) sera le bienvenu !
Olivier SINGLA
Ecole Normale d'instituteurs
Bd. Montauriol
82000 MONTAUBAN
Je ne sais pas ce que cela a donné, mais le choix avait été fait dès cette époque sur cette implémentation d'avoir un forth qui contienne uniquement du code exécutable, de sorte à ce que l'interpréteur forth soit microscopique, voir quasi inexistant. Tout ca pour des histoires de vitesse d’exécution, et peut être aussi dans l'optique de produire des exécutables binaires "natifs" ne contenant plus les en-têtes des mots forths.
Dernière modification par __sam__ le 22 mai 2013 19:16, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

Salut Sam,

Oui, mais ma question était de savoir si le langage Forth permettait (sur tous les ordinateurs en général) de créer un exécutable autonome de façon native. Sans avoir à bidouiller la ram soi-même. La réponse est non. Ce qui explique selon moi
la disparition de ce langage. C'est ce que je voulais savoir. J'ai ma réponse. ;)

Je le redis : Si en 1985 un gamin avait écrit un jeu pour MO5 avec le logiciel Forth de Loriciels,
il n'aurait pas pu le vendre ni le diffuser. (le copyright de Loriciels interdit de distribuer le logiciel Forth sur cassette)

Sans parler de la difficulté pour un néophyte à lancer le jeu. (on a vu la difficulté de petitdj, moi-même et d'autres sur ce forum...)

D'où l'échec du Forth sur MO5 et sur les autres ordinateurs. C'est un langage très intéressant, mais qui reste en laboratoire.

Un programmeur a besoin d'un langage qui crée un exécutable autonome facilement.
S'il ne l'a pas, il se tourne vers un autre langage. C'est ce qui s'est passé pour Forth.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Xavier31 a écrit :Oui, mais ma question était de savoir si le langage Forth permettait (sur tous les ordinateurs en général) de créer un exécutable autonome de façon native. Sans avoir à bidouiller la ram soi-même.
Attention, la notion d'éxecutable autonome sans bidouiller la RAM soi-même est un concept relativement récent. A l'époque il fallait tout le temps jongler avec la ram. La notion même d’exécutable autonome n'était pas établie à l'époque je pense.

Un programme basic est il autonome? Ben non: sur TO7 il faut la cartouche basic. Alors un fichier BIN sur diskette est il un utilitaire autonome? Et bien toujours non: sur basic to7 toujours est encore il faut la D7 avec le DOS dessus avant de pouvoir charger un BINaire depuis le basic. En fait le C ou le pascal ne font des EXE qui marche que dans la mesure ou le système hôte dispose d'un (D)OS ayant abstrait la notion de programme machine sans avoir à s'occuper des détails tels que l'adresse de chargement et d’exécution du programme. Pour tout dire en 82, sur thomson, ce qui tenait lieu de DOS était le basic microsoft avec lequel, même pour charger un programme binaire qu'on avait écrit il fallait au minimum réserver de la mémoire par l’instruction CLEAR, ce qui rend l'opération de démarrage nettement moins simple que l'on croit. Au final pour un particulier qui voulait diffuser son super programme en assembleur dans hebdologiciel, il fallait toujours un programme basic amorçage s'occupant de l'allocation mémoire et du chargement des octets en mémoire. Bref c’était pas vraiment la notion d'exe autonome.
Xavier31 a écrit :Je le redis : Si en 1985 un gamin avait écrit un jeu pour MO5 avec le logiciel Forth de Loriciels,
il n'aurait pas pu le vendre ni le diffuser. (le copyright de Loriciels interdit de distribuer le logiciel Forth sur cassette)

Sans parler de la difficulté pour un néophyte à lancer le jeu. (on a vu la difficulté de petitdj, moi-même et d'autres sur ce forum...)

D'où l'échec du Forth sur MO5 et sur les autres ordinateurs.
Est-ce que les difficulté de diffusion d'un prog Forth l'ont limités? Je ne pense pas.

Il est parfaitement possible de sortir un exécutable autonome depuis une VM forth (cf le message de O.SINGLA ci-dessus). Mais avant même de distribuer un exécutable, il faut faire un programme qui ne plante pas. Et là le Forth (tout comme le C), n’empêche pas de se tirer une balle dans le pied. Cela a de quoi dégoutter tout apprenti programmer qui en restera au bon vieux basic dont les listing couvraient les pages d'hebdogiciel.

Maintenant, est-ce un échec? En relatif par rapport au LOGO je ne pense pas. Et dans l'absolu, c'est pas si évident que cela. Tout d'abord il était très populaire dans les années 80 et on le trouve en remplacement du trop fameux MS-BASIC dans quelques micro-ordi de l'époque (JUPITER-ACE et Canon Cat). Ensuite 30-40 ans après Le forth n'a pas disparu. Il a d'ailleurs une très longue descendance et n'est pas resté cantonné aux labos de recherche
Image
et on le trouve dans divers firmware et autre open-bios de systèmes embarqués, alors que le basic de 1985 avec ses numéros de lignes, son absence de procédures ou de variables locales a complètement disparu de la planète.

Plus généralement parlant, j'ai toujours entendu parler en mal du basic, lequel fabriquerait de mauvaises pratiques de programmation (code spaghettis, variables globales, aucune structuration, code au kilomètre); alors que le forth ne souffre pas de cette réputation. Je dirais même plus, beaucoup de ceux qui ont pratiqués le forth en parlent fièrement (code compact, rapide; empreinte mémoire réduite).
Dernière modification par __sam__ le 22 mai 2013 20:44, modifié 2 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

Sam,

Je maintiens que ce langage ne permets PAS de créer des exécutables autonomes de façon native, simple.

Toi tu dis que c'est "possible". Ce n'est pas du tout la même chose. Bien sûr qu'en informatique, en bidouillant,
on peut toujours arriver à faire quelque chose. Mais ce n'était pas du tout ma question.

Je dis qu'on ne peut pas créer des exécutable autonomes avec le langage Forth nativement et simplement,
et je le maintiens. J'apprends à programmer avec ce langage, et je l'ai constaté.

Nombre d'applications que je comptais faire en FORTH, je les ferai en Turbo-Pascal, justement à cause de ça.

Au lieu de comparer avec Logo, compare avec Turbo-Pascal. regarde simplement le nombre d'ouvrages
qui existe sur TP et sur Forth.

Quand au BASIC, crée au Dartmouth collège, son but est l'initiation à la programmation en 3 heures.
Objectif atteint. Charles H. Moore n'a pas du tout crée le Forth dans ce but, mais pour être plus rapide que Fortran
dans certaines conditions.

Des milions de personnes dans le monde ont appris la programmation grâce au BASIC.
Je programme en langage BASIC sans faire de programmation spaguetti. Tout dépend du programmeur.
Le Jupiter ACE, lui a été un bide total...

Je m'intéresse au FORTH puisque j'apprends à le programmer. Mais impossible de créer de programmes exécutables
en dehors de cet environnement SIMPLEMENT (avec un save). C'est un langage de laboratoire, et qui y est resté.

Des applications ont été utilisées dans certains domaines à une époque, mais vite remplacées par le langage C.

Donc, oui, le FORTH est resté confiné à une niche très confidentielle, totalement eclipsé par le langage C.

Voilà, j'arrête là pour ma part la discussion, sinon, chacun va fourbir des arguments à n'en plus finir,
et ce ne sera que perte de temps. :)

============================================================================================
Pour synthétiser, voici les questions que je me posais et leurs réponses :

Peut-on obtenir un programme exécutable nativement avec le langage Forth : NON

Est-ce un vrai langage compilé qui produit un binaire exécutable comme le langage C : NON

Est-ce à mon avis ce qui a crée son échec : OUI

Est-ce un langage intéressant à découvrir intellectuellement : OUI

============================================================================================

Après chacun peut avoir une opinion différente, chacun la sienne. Pour ma part, je m'intéresse à Forth
pour sa structure atypique, mais je crée mes applications en Turbo-Pascal, facilement distribuables. ;)
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

__sam__ a écrit : Il est parfaitement possible de sortir un exécutable autonome depuis une VM forth (cf le message de O.SINGLA ci-dessus). Mais avant même de distribuer un exécutable, il faut faire un programme qui ne plante pas.
J'ai écrit dans ce topic un programme en FORTH qui affiche le résultat d'une division avec beaucoup de nombres après la virgule.

Il ne plante pas. Donc puisque c'est si facile, je voudrais que tu me montres comment je peux en faire un exécutable autonome. ;)

Simplement, hein! Sans avoir à décortiquer la mémoire du MO5.
car je ne me vois pas ensuite décortiquer la Ram ni l'OS des autres ordinateurs que je vais utiliser...

Comme j'utilise le FORTH sur 5 ordinateurs différents et que ça va s'etendre, il faut aussi que je puisse créer
des fichiers exécutables par mes amis sans qu'il aient à charger ni à manipuler le langage FORTH.

Sur PC aussi donc, puisque je vais utiliser Turbo-Forth et GForth. :)

Voilà, j'attends ta solution simple et qui fonctionne sur chaque ordinateur. :)
Avatar de l’utilisateur
gilles
Messages : 2779
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: Discussion sur le langage Forth

Message par gilles »

Il manque le colorForth dans le graph (version actuelle de chuck Moore) mais c'est une version un peu particulière.
Le forth a tout de même une actualité dans différents domaines et des dérivés. Il reste utilisé pour l'écriture de firmware (dont l'openfirmware d'ancienne générations de mac, des stations et serveurs Sun et ibm). Postscript est également souvent considéré comme un dérivé de Forth.
C'est par contre rarement un langage de développement d'application, il n'est pas forcément adapté à un travail en grande équipe car le code source lui même est assez peu porteur d'information facile à partager.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

@Xavier: Oui je vois bien ton problème, mais il faut aussi comprendre que la notion d’exécutable autonome sans bidouiller la ram n'existe pas complètement sur thomson. Même un programme assembleur a besoin du basic pour se charger et se lancer. Un ".EXE" de PC est un truc qui est apparu ailleurs et plus tard que sur des micro ordinateurs.

Enfin, juste une précision: Il me semble que les chronologies entre les langages et les ressources disponibles à leur époque ne sont pas respectées dans ta comparaison. Le C (et le turbo-pascal) sont apparus bien plus tard sur micros que le Forth. Ils n'étaient pas vraiment en compétition.

A l'époque du Forth, la mémoire de masse pour tout le monde était le lecteur de K7. En terme de langages, à l'époque sur thomson on avait le basic microsoft, l'assembleur, le LOGO, et donc le FORTH et c'est à peu près tout. Aucun de ces langages n'était autonomes. Ils prenaient tous à un moment donné un code source avant de l’exécuter/le compiler. En outre tous ces langages avaient la spécificité, importante pour l'époque, de pouvoir fonctionner avec peu de mémoire et un lecteur de K7 (de sorte à ne pas devoir ressaisir le programme à chaque fois).

Du coup si tu compares ces langages "à K7" avec les langages à diskette et disk-dur que sont le C et le pascal, ca n'est plus la même chose. Le C (et le turbo-pascal) nécessite des machines autrement plus balèzes que les TO7 et autres MO5 je crois. Je me vois mal compiler du C sur K7 :lol:

A noter: je viens de découvrir sur le site de Daniel un truc intéressant : http://dcmoto.free.fr/programmes/pascal-base/index.html c'est un pascal contemporain du Forth MO5. C'est n'est clairement pas un turbo-pascal (il ne sait gérer qu'un sous-ensemble du langage), et a 1ère vue il n'a pas l'air très facile d'usage: il faut faire plein de manips K7 et là aussi s'occuper de l’adresse de chargement et de lancement de l’exécutable produite par le "LOADER". Mais c'est peut-être le langage sympa dont tu as besoin pour faire les progs que du désires sur "sasfépu". En effet, malgré ses limites, je pense qu'il doit être possible de faire des calculs +/- portables de grand-nombres avec lui.

@gilles: oui . je crois que là où j'ai trouvé la généalogie ils indiquaient ne pas avoir tout placé. C'est juste pour situer qui a influencé qui dans le paysage Forth. A la vue de l'arbre, on se dit qu'il n'est pas mort ou resté à végéter un vague labo :-) Ce graphe me surprend en partie, car j'y ai trouvé Smalltalk. Or pour l'avoir un peu pratiqué j'ai du mal à y trouver une similarité avec Forth. C'est peut-être la notion d'image mémoire de Smalltalk et d'écrans Forth qui le fait apparaitre le lien sur le graph. Mystère.

a+

sam.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique »

Je ne sais pas si j'ai bien compris, mais je pense que Xavier aimerait que son programme s'exécute automatiquement après le chargement de la K7.
Si telle est la question, alors oui, c'est faisable !
Comment ? C'est le HIC de ce Forth (et des autres).
Il y a un vecteur ( enfin un adresse) que Forth va chercher pour se mettre en mode "attente d'instructions".
C'est ce que faisaient tous les Forth que l'on trouvait à l'époque.
Celui du MO5 va chercher une adresse qui l'envoi vers un loop d'attente du clavier.
Hélas, ce Forth n'est pas assez documenté et ne nous dit pas où se trouve ce vecteur. C'est pour cette raison que j'avais dit que j'allais le désassembler. Une fois ce vecteur trouvé, il suffit de le faire pointer vers le programme que l'on a écrit.
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

Dominique a écrit :Je ne sais pas si j'ai bien compris, mais je pense que Xavier aimerait que son programme s'exécute automatiquement après le chargement de la K7. Si telle est la question, alors oui, c'est faisable ! Comment ? C'est le HIC de ce Forth (et des autres).
Salut Dominique,

Le problème de ce dialogue de sourd (malgré notre volonté à tous d'être clairs) vient du fait qu'avec un forum écrit,
c'est très difficile d'exprimer une idée. Je comprends ce que veut dire sam, et pourtant, ce n'est pas du tout ce dont je parle! :D

En fait, Dominique, peu importe que le support soit K7 ou D7. Ce que j'aurai aimé nativement (d'un simple SAVE)
avec TOUS les FORTH (pas seulement sur Thomson MO5) c'est de pouvoir sauvegarder mon programme sous forme
binaire exécutable. Un truc 100% indépendant de la plateforme FORTH, et qui ne demande pas à charger FORTH pour être exécuté.

Je comprends ta solution Domi, mais elle demande de désassembler le FORTH du MO5 pour y arriver.
Si demain je veux faire ça sur un Amstrad CPC, je dois à nouveau tout desassembler.

C'est pour ça que je dis que nativement, cette fonction de créer un exécutable manque au langage FORTH.

Car je comptais écrire des programmes écrits en FORTH à la fois sur des sasfépu et sur mon PC.
Mais s'il faut à chaque fois charger le langage FORTH avant, puis les compiler à chaque fois avant de pouvoir les lancer,
ça enlève beaucoup d'intérêt à la chose.

Même avec un FORTH sur K7, si FORTH permettait de sauvegarder directement par un SAVE un binaire exécutable,
il n'y aurait plus besoin de posséder le logiciel Forth et de le charger avant.

Un simple RUN "" depuis le Basic exécuterait le programme en langage machine. Ce serait très très très pratique.
Et si je pouvais faire ça avec n'importe quel FORTH, K7 ou D7, sur n'importe quel ordi, ce serait beaucoup mieux.

Si je veux que quelqu'un exécute mon programme FORTH "Division", il doit charger le langage FORTH, compiler,
et connaître les commandes Forth pour s'en sortir... Pas pratique du tout.

J'aime bien FORTH, sinon je ne m'y intéresserais pas. Mais quel dommage qu'un programme compilé en mémoire
ne puisse être exécuté que lorsque FORTH est chargé en mémoire!

Si on était autour d'une table avec des ordi, je pourrai l'expliquer simplement. Sur un forum, c'est mission impossible. :D
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

En fait tu cherches une façon "portable" (i.e. indépendant de la machine) de faire une sauvegarde compatible avec le basic des dites machines (de sorte à pouvoir charger avec RUN ""). Je pense que c'est un besoin d'utilisateur d'informatique "récente", dont on ne peut reprocher aux concepteurs du langage de ne pas l'avoir introduit.

A l'époque il n'y avait pas deux basics identiques, et même entre deux machines thomson, les appels aux routines de base "afficher un caractère" ne se font pas de la même façon entre TO et MO. En fait, la sauvegarde portable vers le basic hôte et toutes ses disparités n'était pas vraiment un besoin. Les gens étaient contents de se retrouver dans un environnement hôte de haut niveau et n'éprouvaient pas le besoin de redescendre à un niveau plus BASIC. Du coup le fait qu'il faille "bricoler" son environnement de dev pour effectuer cette opération qui n'existait pas vraiment à l'époque ne m’étonne pas trop.

Par contre ce qui est sympa est qu'avec les connaissances de Dominique, il devrait être possible de pouvoir coder une fonction d'export qui sauve le programme FORTH sous forme d'un prog basic autoporté. Il pourrait par exemple, prendre la forme d'une liste de DATA de code hexa représentant l'image de la VM FORTH ainsi qu'une boucle qui ira placer les octets en mémoire à coup de PEEK avant de sauter dans le point d'entrée avec EXEC. Bien sur, pour avoir cela dans tous les FORTH, il te faudra devenir un peu expert des FORTH et des machines que tu souhaites, mais c'est le prix à payer pour faire apparaitre des concepts nouveaux dans les sasfépu. Le bon plan est que contrairement aux autres langages, le forth permet d'ajouter des mots pour faire cela.

Ce mot supplémentaire fera les peeks et les pokes bien crapoteux pour toi, mais en tant qu'utilisateur tout te sera masqué. Je suis persuadé qu'une fois ce mot supplémentaire créé dans chacun des forths, alors l'export vers un format plus basic deviendra routinier et sans prise de tête.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre