B4IM : le forth 32 bits

Les informations suivantes sont tirées du site http://4im.atspace.com/installfr.html.

 Qu'est ce que B4IM ?

Le texte suivant est de l'auteur du langage : Astrobe.

B4IM est une version de 4IM écrite en C afin de le rendre portable et de permettre une coopération facile avec les OS populaires (Linux/Windows).
...
Pour être juste, le vocabulaire de base de 4IM a toujours été conçu de manière à être aussi indépendant que possible de la machine ou de l'OS, sans toutefois que cela n'implique de pénalités en termes de performances. Cette conception a permis de reprendre en grande partie les outils qui avaient été écrits sous DOS dans cette version Windows/Linux.
La raison de cette "conversion" au C est qu'il y a assez peu d'espoirs de parvenir rapidement a quelque chose sous Windows ou Linux sans en passer par une librairie C. 
....

Comme je l'ai indiqué, les versions Dos, Linux et Windows se veulent compatibles au niveau du vocabulaire de base. Cependant, si ces versions partagent un vocabulaire de base identique certaines versions comporteront des definitions supplémentaires qui leur seront spécifiques. On utilise le terme "B4IM" quand on se réfère à des aspects qui sont spécifiques à la version Linux/Windows. 

Principaux apports de cette version

Le prix à payer pour avoir l'interfaçage avec la librairie graphique GraphApp, est l'augmentation massive du "poids" de l'exécutable. Celui-ci passe à 514 ko.

Ci-dessous un commentaire d'Astrobe, tiré d'un échange par courrier électronique :
"La taille s'explique par la présence de la librairie GraphApp, qui permet de faire des applications graphiques ; toutefois, comparée à un système à vocation équivalente commeWish (Tcl/Tk), ou aux autres languages interprétés liés à des librairies graphiques (Ruby,perl, Guile, etc...) 4IM n'a pas à rougir, même s'il propose peut-être moins de fonctionnalités.
Si on enlève la librairie graphique, la taille de l'exécutable tombe à 17Ko!
4IM est à géométrie variable : il est assez facile d'ajouter ou de supprimer des "extensions". Et pour qui connait le C, il devrait être également facile d'en écrire (ce sera encore plus vrai quand j'aurais documenté cet aspect, ce qui est préparation)."

Lancement sous Linux

L'installation a été faite en utilisant les informations contenues dans la page http://4im.atspace.com/installfr.html.
J'utilise un environnement graphique (Gnome, à partir d'une Debian Sarge). Afin de pouvoir lancer B4IM, il me faut :
J'obtiens l'affichage suivant :

: 4IM ( September 2005 ; Forth4IM@netcourrier.com ) .
GraphApp extension
Files extension
Date/Time extension
foreign addresses extension
5321 bytes used

Le système d'aide

Il a été ajouté à 4IM depuis un an et se compose de blocs de texte (restant fidèle en cela à la tradition de forth).  Un gros effort a été fait par Astrobe de façon à proposer une documentation simple et claire. Cette documentation est en français.
La librairie graphique GraphApp ajoute une fonctionnalité intéressante : il est possible d'ouvrir l'aide dans une seconde fenêtre graphique.
Pour cela, il suffit de taper :
120 LOAD

Un exemple d'utilisation des fonctions graphiques

Le texte suivant a été tapé dans l'éditeur et mémorisé dans le bloc 124 (par 124 ED) :
10 10 MOVE-TO
X  Y 80 + LINE-TO X 80 + Y LINE-TO
X 50 - Y 30 - MOVE-TO X Y 100 + LINE-TO
150 10 MOVE-TO
X Y 150 + LINE-TO
240 160 MOVE-TO
X Y 150 - LINE-TO X 40 + Y 70 + LINE-TO
X 40 + Y 70 - LINE-TO X Y 150 + LINE-TO



124.............................................................

A la fin de la saisie, frapper ESC pour quitter l'éditeur.
Pour obtenir l'exécution du code, frapper 123 LOAD. (Oui : 123).
Cela donne :

tracé de 4IM dans une fenêtre graphique

Conclusion provisoire

Tout en conservant les acquis de 4IM, B4IM apporte des possibilités intéressantes :
- valeurs numériques sur 32 bits.
- fonctionne directement sous Linux (ou Windows) ce qui permet de le faire interagir avec des données de ce système.
- système d'aide en français.
- accès à des extensions écrites en langage C, ce qui se traduit, dans un premier temps, par la possibilité d'utiliser la librairie graphique GraphApp.
Selon que l'on décide d'utiliser ou non les extensions, le langage conservera ou non sa compacité initiale.

A suivre...