Les scripts CGI permettent d'appeler des
commandes Unix, ou de lancer l'exécution d'un programme
Perl, C... et pourquoi pas en Forth ?
Voici un tout petit script en Forth écrit pour pouvoir
être appelé par Bash.
#! /usr/local/bin/gforth
256 Constant max-line
Create chaine max-line allot
variable n1 0
s" Depuis le script Forth : Ceci est un texte stocké dans
une chaîne..." dup n1 ! chaine swap cmove
chaine n1 @ stdout write-file throw
bye
Avant de pouvoir exécuter le script, penser
à faire :
chmod +x cuicui.fs
La seule notion nouvelle est celle de fichier STDOUT.
Dans Unix (et ses dérivés libres : Linux,
FreeBSD) "tout est fichier" (ce n'est pas moi qui l'invente).
Les fichiers communiquent par le moyen de "tuyaux".
Tois tuyaux existent au moins :
- le tuyau de lecture du clavier (STDIN) ;
- le tuyau d'écriture sur la console (STDOUT) ;
- le tuyau de sortie des erreurs (STDERR).
Unix (et ses descendants) est programmé en langage C,
l'affinité entre eux datant de la création d'Unix
et ce n'est pas un hasard si l'on trouve ces notions dans le langage C.
On les trouve également dans des langages tels que Perl et
PhP qui ont une affinité prononcée pour Unix et C.
Mais qu'en est-il de Forth, qui est "né sur une toute autre
planète" et, qui pour certaines de ses
déclinaisons, est tout à fait autonome (tels sont
4IM, colorForth, Enth...). Chuck Moore proclame d'ailleurs que "le
système n'est pas la solution mais qu'il est le
problème".
Ce que je propose ici n'est pas d'engager une polémique sur
les vertus de tel ou tel. Non que ces débats ne
m'intéressent pas, mais je pourrai en débattre
tout à loisir quand le "Site Forth en Forth" existera, en
utilisant les fonctionnalités qu'il offrira.
GForth a été choisi par défaut, parce
qu'il propose STDIN, STDOUT et permet donc de communiquer avec
navigateur et serveur web.
#!/bin/sh
echo "Content-Type: text/plain"
echo
echo "Depuis Bash : Vous avez cliqué sur le bouton Valider"
# appel du script en Forth
./cuicui.fs
Avant de pouvoir appeler le script Bash, il faut le rendre
exécutable par :
chmod +x coucou2.cgi
Remarquer le mode d'appel du script Forth : ./cuicui.fs
Elle s'appelle "formul2.html" et le seul changement par rapport
à la précédente est le nom du script
appelé :
<form ACTION="http://localhost/cgi-bin/coucou2.cgi" METHOD=POST
ENCTYPE="multipart/form-data">
Rappelons que pour visionner le résultat il faut :
- copier "formul2.html" dans le dossier /var/www/html
- copier coucou2.cgi et cuicui.fs dans le dossier /var/www/cgi-bin
- rendre les scripts exécutables
- lancer l'exécution du navigateur et entrer l'URL
http://localhost/formul2.html
A condition d'avoir un Apache qui va bien, cela marche !!!
Et là on peut commencer à rêver un peu :
- nous avons Forth (et chacun ne doit pas oublier combien ce langage
est, en mode compilé, extraordinairement efficace)
- nous avons une ébauche d'interactivité.
Si l'on se dit que la configuration d'Apache est du ressort de
l'hébergeur, on peut presque s'imaginer que nous avons
presque tout.
J'allais oublier l'essentiel : rester humble, ne pas se laisser abuser
par l'idéalisation de son égo.
Humble. Pas facile... mais nécessaire.
Haut de page