💻 Le langage Forth

 

Forth est un langage de programmation étonnant, à la fois retro (datant des années 70) et présentant des caractéristiques qui lui permettent de rester d'actualité.

 

 

 

 

 Quelques versions de Forth

 

gforth ou pforth sont des versions libres de forth. Du fait de la profusion des implémentations de forth, et de la grande disparité dans la syntaxe, il peut être intéressant de choisir une version qui colle au plus près au standard ANS FORTH de 1994 (ANSI), ce que fait parfaitement pforth.

 

uf forth est intéressant parce qu'il utilise comme base la machine virtuelle varvara (uxn), et c'est un des rares forth moderne permettant d'afficher directement des pixels.

 

Gforth

UF Forth (basé sur UXN et Varvara)

UF Forth (version de dev sur gitlab)

pforth, Portable ANS Forth in 'C'

ciforth (common intel forth), suit le standard ISO

Portable Forth Environment (n'est plus mis à jour depuis des années, mais suit le standard ANS)

Forth Interpreter+Compiler for WebAssembly (ANS)

Présentation de Forth pour Arduino (notamment FlashForth)

 

ueFORTH, avec graphisme et son

ueFORTH, version pour le web, et explications

 

 

À noter

 

 

." Ceci est du texte"

 

 

s" Ceci est du texte"

 

 

: chaine s" Un petit texte" ;

chaine type

 

 

 

: ls s" ls -alh" system ;

 

ensuite "ls" listera les fichiers du répertoire courant...

 

 

: to-string ( n -- addr c ) s>d <# #s #> ;

 

 

 

: SIMPLELOOP CR 0 BEGIN DUP 11 < WHILE DUP 5 * . CR 1+ REPEAT ;

 

ce qui fera la même chose que :

 

: SIMPLELOOP CR 11 0 DO 5 I * . CR LOOP ;

 

 

 

: test 4 [ HEX ] A [ DECIMAL ] + . ;

 

donnera 14.

 

 

 

: test 2 [ 4 1 + ] LITERAL * ;

 

sera équivalent à :

 

: test 2 5 * ;

 

 

 

240 xemit

 

affichera ð

 

liste des caractères unicodes

Il est également possible d'entrer directement le caractère unicode dans gforth:

 

." 🐉"

 

 

 

 

Exemples

 

 

informatique/forth/carre.fs.txt

 

 

 

: OddOrEven? dup 2 mod 0 = if . ." is even " else . ." is odd " then ;

 

 

 

 

 

 Tutoriels

 

 

Cours sur gforth en français

forth in 15 minutes ("Learn X in Y minutes")

"Starting FORTH", an essential beginner guide by Leo Brodie (en anglais)

D'autres livres, parfois obsolètes. "The complete forth" par Alan Winfield est intéressant.

 

 

Simple forth, cours en anglais

Learn 4tH the easy way (en anglais)

 

 

 Manuels et références

 

Forth 79 standard

Forth 83 standard

UF Forth glossary

 

Forth 94 ANS standard

Forth 200x Standard liste core bib

gforth index

 

 

 Exemples

 

Rosettacode Forth section (programming examples and samples)

Exemple de sokoban sur gforth

 

 4th

 

4th cx circdemo2.4th && feh circle.ppm

 

 

 Autres Forth plus exotiques

 

DurexForth, pour C64

ACME cross assembler compiler (C64)

 

 

 Outils en Forth

 

Lichen, un CMS (gestion de contenu html) à partir de gemtext et gforth

 

Fendo, autre générateur de site statique en gforth

 

Galope, General-purpose Forth library.

 

Common Tools

 

The Forth Scientific Library

 

Diverses expérimentations dans divers Forth (ANS)

 

Tavern, un système de fictions interactives, avec une syntaxe proche de Forth

 

SmartHome en Forth

 

 

 

 Reflexions sur Forth

 

Why forth? (+ miniforth in Lua)

 

"Forgotten languages from my past"

 

Forth: The programming language that writes itself

 

My history with Forth & stack machines

 

Stack Computers