Discussion sur le langage Forth

Cette catégorie traite de développements récents destinés à 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

Avatar de l’utilisateur
Dominique
Messages : 831
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique »

Merci _sam_

C'est exactement ça. Maintenant ça roule :D
Daniel
Messages : 17423
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Discussion sur le langage Forth

Message par Daniel »

Dominique a écrit :La réponse doit se trouver quelque part, mais où ?
ici : http://www.flexusergroup.com/flexusergr ... s/asmb.pdf page 17

Le pdf ci-dessus est la documentation de base, à laquelle il faut ajouter le fichier a09.htm pour les fonctions supplémentaires apportées par A09.

Comme l'a dit Sam, l'optimisation pour utiliser l'adressage direct quand c'est possible est un piège, car parfois ce n'est pas ce que l'on souhaite. Il vaut mieux spécifier explicitement le type d'adressage avec les signes < et >.
Daniel
L'obstacle augmente mon ardeur.
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

Dominique a écrit :je pense que _sam_ a parfaitement raison : Forth a toujours été considéré un Operating System comme disent les Américains.
Ah bon ? par QUI ? Peux-tu citer des travaux, indiquer des liens et des références sérieuses pour prouver cette affirmation ?

Attention : l'affirmation d'un particulier comme Sam ne comptera pas. Il faut un organisme officiel!

Moi, j'ai regardé sur le site de FORTH inc (forth.com), sur le site du Forth Interest Group, sur Wikipedia.fr et .com :

Le résultat est sans appel : Partout, le FORTH est décrit comme un langage de programmation, un environnement de programmation, mais jamais comme un OS. ;)

"Forth is an imperative stack-based computer programming language and programming environment." (wikipedia)

source : http://en.wikipedia.org/wiki/Forth_%28p ... anguage%29

Je te laisse prendre le soin de relire ce qui est indiqué sur la page du FORH Interest Group : What is FORTH ?

- Forth is a stack-based, extensible language

- Forth is a real-time programming language

- Extremely efficient thread based language

source : http://www.forth.org/whatis.html

Voilà. La messe est dite! LOL :D

p.s: franchement, à avoir voulu faire passer ce langage pour un Système d'Exploitation (Operating System),
vous vous êtes décridibilisés...
Daniel
Messages : 17423
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Discussion sur le langage Forth

Message par Daniel »

Je vais nourrir un peu le troll :
http://www.forthos.org/
http://www.forth.org/svfig/osf.html
Forth when used to implement, and be, an Operating System can displace all other current offerings of (Microsoft, OS/2, UNIX based) operating systems on the PC single user desktop platform, and farther.
Dernière modification par Daniel le 25 mai 2013 20:54, modifié 2 fois.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7987
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Je pense que le hiatus réside dans la définition de l'OS, et cela particulièrement dans le contexte des micro-ordinateurs anciens (Thomsons, Oric, TI99-4a, ...).

La définition la plus générale d'un OS est l'interface entre les couches basses adressant le matériel et les programmes que l'utilisateur lance. L'OS structure les primitives de bas niveau en concepts plus abstraits. Les bits de la liaison série clavier sont abstraits en caractères par les couches basses (ROM, BIOS). Ces caractères du flux clavier sont ensuite interprétés comme une ligne de commande par l'OS. Similairement les bits arrivant à l'unité centrale via la K7 sont abstraits en octets par le BIOS. Ces octets du lecteur K7 sont structurés par l'OS en blocs qui sont eux même structurés en fichiers. Ces fichiers représentent des entités exécutables que l'on peut charger en mémoire. Certaines de ces entités en mémoire sont organisées de telle sorte qu'on peut les exécuter. L'OS fournit même la façon ont ces entités peuvent être invokés en binaire (l'ABI). Bien entendu l'ABI, la gestion de la ligne de commande, de l'écran, des fichiers varient d'un OS à l'autre.

Avec cette définition, sur micro un os peut être le basic pour les machines qui n'ont que lui en rom, mais sur thomson avec ses cartouches l'OS peut être bien sur le basic, mais aussi le logo ou même le forth (ou même peut être le prolog sur des bécanes encore plus ésotériques). Ce que l'on observe est que contrairement aux ordinateurs personnels """modernes""", sur les anciens micro, l'OS et les langages sont très voisins. Le corolaire est qu'il n'y a pas d'OS qui va de soi sur un micro. Il n'y a pas de notion d’exécutable universel accepté par tous les OS d'une même machine. Sur micro, tout dépend du langage qui tient lieu d'OS.

Mais ce ne sont que mes 2 centimes d'euros.

Sinon pour ajouter de l'eau au troll^w moulin, il y a aussi ceci http://wiki.forthfreak.net/index.cgi?StandAloneForth qui liste tous les forths destinés à être utilisés comme OS pour des tas de matériels (entre parenthèses):
  • ByteForth (8051, AVR)
  • amforth (AVR)
  • FlashForth (AVR, PIC18F, PIC24, dsPIC30, dsPIC33)
  • PFAVR, (AVR)
  • 4IM (x86)
  • EnthFlux (x86)
  • RetroForth (x86)
  • JKForth (x86)
  • Purr (PIC18)
  • Pic18Forth (PIC18)
  • Mecrisp (TI MSP430)
  • 4E4th (TI MSP430)
  • 430 v4th (TI MSP430)
  • SOL (PDP-11)
  • MetaStic (H8, x86)
  • BootOS (? une machine russe apparement)
  • CamelForth (8051, 8086, Z80, 6809, Rabbit2000)
  • etc...
Ah tiens, un FORTH sur les AVR ca doit être super sympa à expérimenter. Je suppose que cela évite de passer par une phase de cross-compilation sur PC et qu'on peut tout faire dans l'ATMega lui-même. Rahh j'en imagine même un connecté, mieux: soudé, à l'UART d'un minitel, le transformant ainsi en vrai ordinateur autonome.
Dernière modification par __sam__ le 25 mai 2013 21:28, 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 »

oh! 2 insultes de troll me concernant. En général l'argument de celui qui n'a plus d'arguments :

- il passe à l'insulte et traite celui qui cite des sources officielles.

Ne discutant pas avec les gens qui m'insultent, js stoppe là ma participation à ce forum.
__sam__
Messages : 7987
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

:shock: Et moi qui pensais être pris pour le T..l, Je suis :shock:
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
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: Discussion sur le langage Forth

Message par gilles »

Pour mettre tout le monde d'accord (dans le sens du forth-OS), il faut revenir au concepteur lui même:
Colorforth est la branche actuelle du forth par Chuck Moore lui même.
http://www.colorforth.com/cf.htm

Je cite :

Code : Tout sélectionner

    Stand-alone! Includes operating system.
    Compact! 2K bytes for core software.
    Fast! Optimized object code.
    Simple! Applications stored as source. No object library.
    Innovative! Text compressed and pre-parsed.
    Unique! 27-key Dvorak keyboard.
Le forth est aussi devenu un langage à part entière (et je dirais : "seulement un langage"), mais ce n'est pas l'intention première.
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

On parle de FORTH, pas de ColorFORTH qui en est un dérivé bien plus récent.

ColorForth n'est pas Forth, et n'a pas été créé pour le remplacer. Prendre un autre langage pour démontrer à tout prix une contre-vérité n'a aucun sens...

pfff... c'est pas en ajoutant des arguments aussi peu crédibles les uns que les autres que vous allez transformer un langage en OS.

j'arrête de perdre mon temps sur ce forum.
Xavier31
Messages : 63
Inscription : 11 mars 2013 15:29

Re: Discussion sur le langage Forth

Message par Xavier31 »

gilles a écrit :Colorforth est la branche actuelle du forth
Hahahaha. C'est une blague ? la normalisation officielle est l'ANS-FORTH.

Il suffit pourtant de lire pour comprendre : Moore a préféré créer des dialectes qui s'éloignent de Forth au lieu de l'améliorer :
Moore developed Forth in the early 1970s and created a series of implementations of the language. In the 1980s he diverged from (or rather ignored) the standardization of the language, instead continuing to evolve it. He developed a series of Forth-like languages, each fairly extreme in its simplicity: Machine Forth, OK, colorForth.
Bon, je quitte vraiment le forum cette fois. Car je me doute que vous allez pondre 10 pages de posts
pour "prouver" que ColorForth EST la version actuelle et officielle de Forth... Pas de temps à perdre à répondre à ça.

Je préfère me concentrer sur ma programmation en Forth.

Bye
Avatar de l’utilisateur
gilles
Messages : 2782
Inscription : 07 août 2008 13:44
Localisation : Nantes
Contact :

Re: Discussion sur le langage Forth

Message par gilles »

La normalisation est une chose, l'invention en est une autre. Il reste historiquement exact que l'intention du Forth est bien l'intégration OS-langage. Intégration que l'on peut également retrouver dans le forth de l'openFirmware par exemple, qui est très probablement l'usage le plus courant du Forth.
Là encore cela n'enlève rien au fait que le forth soit aussi un langage normalisé. Ce n'est pas l'un ou l'autre ce sont les 2.
__sam__
Messages : 7987
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Xavier31 a écrit :Bon, je quitte vraiment le forum cette fois. (...) Je préfère me concentrer sur ma programmation en Forth.
Ok. Bonne programmation alors, mais saches que le fil de Dominique sur le portage du programme de Paint est toujours autant rempli d'infos utiles pour la programmation Forth sur thomson. Il pourra t'être utile à un moment où à un autre. Les infos sur le Forth sur thomson sont assez rare sur le web. Perso à part la publication d'Olivier Singla citée plus haut, je n'ai pas trouvé grand chose.

A remarquer: il semble que sur ces 30 dernières années, depuis l'époque où il faisait du Forth sur thomson, il ait émigré aux USA et soit devenu un expert du forth avec sa propre branche: le FROTH (/!\ aux postillons, le O et le R sont invresés). Comme quoi le forth n'est pas forcément une impasse ou un échec. Et quand on voit le CV du gars, on constate que FORTH amène assez vite à toucher à tout dans le domaine embarqué (il a travaillé pour QNX pendant 4ans, ou SYSECA/ARINC - embarqué aviation). Je pense que la contribution majeure du FORTH (ou du C.. au choix) à son CV est cette petite qualité: Ability to deal with large and undocumented amount of code :mrgreen:
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
__sam__
Messages : 7987
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Puisque c'est un fil sur le Forth, j'aurais voulu savoir, Dominique, si à ta connaissance manipuler des coordonnées 3D (en gros: pleins de floats) en Forth est facile (inversion, rotation matricielle, etc). Faut-il considérer les coordonnées 3D sous la forme de 3 nombre flottants sur la pile de données, ou est-ce plus efficace d'empiler l'adresse d'un tableau de 3 floats? Toujours dans cette logique "manipulation de nombres", comment représente-t-on une matrice 3x3 en forth ? Y a t'il une façon élégante d'écrire les routines de multiplication (matrice * vecteur), etc.

sam (bref, algèbre linéaire + forth = ?)
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 : 831
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: Discussion sur le langage Forth

Message par Dominique »

Je vais essayer de me documenter pour te répondre.

Il y a bien eu le GRAFORTH pour Apple, qui a connu un certain succès. Je me souviens même l'avoir eu.

Mais il y a eu aussi des "papers" comme disent les américains. Celui P16 du N° 14 de Forth-Dimension

http://www.forth.org/fd/FD-V14N5.pdf

On n'est plus déjà dans FIG FORTH.

Edit : je viens de trouver ce N° 5 qui parle justement du Graforth et qui doit répondre à tes questions:

http://www.forth.org/fd/FD-V05N1.pdf
__sam__
Messages : 7987
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Discussion sur le langage Forth

Message par __sam__ »

Le numéro 14 de Forth Dimension est intéressant. Les matrices sont typiquement des tableaux alloués avec ALLOT. Ils sont organisés en lignes ou colonnes, et on accède aux éléments individuels via des accesseurs dédiés acceptant les indices i et j sur la pile. J'ai remarqué que
  • pour la multiplication de matrice il faut pouvoir accéder aux indices de 3 boucles imbriquées, or FORTH n'en donne accès qu'à deux: I et J. Ils ont contournés la difficultés en utilisant une variable annexe et en y recopiant la valeur de I dans la boucle la moins profonde.
  • certaines opération ont besoin de créer des matrices temporaires. Le ALLOT fait le boulot pour la création, mais il vient un moment dans l'algo où il faut "libérer" ces matrices temporaire.. et là ils utilisent à nouveau ALLOT mais avec une valeur exactement opposée à celle utilisée la 1ère fois. Effectivement, si ALLOT n'est qu'une manip de jeux d'addition sur le pointeur indiquant la première cellule libre en mémoire, on peut l'incrémenter, mais donc aussi la décrémenter. Et si on a défini aucun mot entre les deux instants l'organisation mémoire est préservée.
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