original in fr John Perr
Utilisateur Linux depuis 1994; il est un des �diteurs fran�ais de la revue LinuxFocus.
D�velopper en BASIC sous Linux ou un autre syst�me Unix ? Pourquoi pas ? Il existe plusieurs solutions libres qui permettent d'utiliser le langage BASIC pour d�velopper des applications interpr�t�es ou m�me compil�es.
Bien qu'il soit arriv� apr�s d'autres langages sur la sc�ne informatique, le BASIC s'est vite impos� sur de nombreux syst�me non-Unix comme le rempla�ant des langages de script que les Unix poss�dent nativement. C'est d'ailleurs, s�rement une des principales raisons pour lesquelles ce langage reste peu utilis� par les unixiens. Comme les divers langages de script, le BASIC est majoritairement interpr�t� et poss�de une syntaxe relativement simple, pas de donn�es typ�es, si ce n'est une diff�rence entre cha�nes et nombres. Historiquement, le nom du langage vient justement du fait qu'il est simple et permet d'initier facilement les �tudiants � la programmation.
Malheureusement, l'absence de standardisation a
conduit � l'apparition de nombreuses versions toutes incompatibles les unes
avec les autres. On peut m�me dire qu'il en existe autant que d'interpr�teurs
ce qui rend BASIC tout sauf portable.
Malgr� ces inconv�nients et de nombreux autres que les "vrais programmeurs" ne
manquerons pas de rappeler, BASIC reste une option � consid�rer pour d�velopper
des petits programmes rapidement, surtout depuis l'apparition il y a d�j� plusieurs
ann�es sous windows de
versions munies d'environnement de d�veloppement (IDE en anglais) qui permettent
la conception d'interfaces graphiques en quelques clics de souris. Ces versions
appel�es "Visual" on �t� de plus adopt�es comme langages macro dans les
applications bureautique ce qui en accro�t la d�mocratisation et l'utilisation par
toute une population qui n'aurait jamais abord� autrement la programmation.
Nous passerons ici en revue les diff�rentes versions disponibles sous Linux,
ou du moins les plus populaires, et nous en tenterons un comparatif.
Extrait et traduit de l'historique d'Andrea M. Marconi, consultable avec la documentation de kbasic
Le langage BASIC (en anglais Beginners All-Purpose Symbolic Instruction Code) est n� en 1964 au coll�ge de Dartmouth au New Hampshire (USA), o� il a �t� d�velopp� par John G. Kemeney (1926-93) et Thomas E. Kurtz (1928-). Kemeney, a travaill� sur le projet Manhattan Project (1945) puis, plus tard (1948-49) en tant qu'assistant d' Albert Einstein. c'est l� qu'il rencontre Kurtz � Dartmouth en 1956.
Ils commencent tout deux � travailler sur un nouveau langage de programmation simplifi�, et apr�s �tre pass�s par des versions appel�es Darsimco et DOPE, ils s'orientent vers un langage r�pondant aux sp�cifications suivantes:
Pour cela, ils partent de FORTRAN et ALGOL. la version finale est appel�e "Dartmouth BASIC" et comporte 14 instructions. Le "Dartmouth BASIC" �tait compil� et plut�t rapide pour l'�poque.
Les efforts de Kemeney et Kurtz sont r�compens�s le 1er mai 1964 � 4 heure du matin, deux programme BASIC tournent simultan�ment sur l'unit� centrale General Electric 225 du Coll�ge de Dartmouth.
Kemeney et Kurtz ne prirent aucun brevet et ne prot�g�rent pas leur invention afin de la laisser dans le domaine public. Cela en permit la croissance mais aussi la multiplicit�. Parmi les premiers utilisateurs, on compte General Electric qui avait vendu le GE-255 � Dartmouth.
Gordon Eubanks (le pr�sident de Symantec) est � l'origine de plusieurs versions de BASIC dont le BASIC-E en 1970. Il utilisait un pseudo code comme Java aujourd'hui. Puis vint CBASIC et beaucoup d'autres versions, ce qui incita en 1974 l'ANSI � �tablir des standards qui ne furent jamais vraiment suivis puisque l'utilisation de BASIC �tait d�j� r�pandue quand les standards apparurent en 1978.
Entre temps (1975),TinyBASIC est cr�� par Bob Albrecht et Dennis Allison. Il peut tourner avec 2K de m�moire RAM. Le premier BASIC interpr�t� appara�t aussi. Il est d�velopp� par William H. Gates III (1955-, plus connu sous le nom de Bill) et Paul Allen (1953-). Les producteurs de mat�riel informatique introduisent aussi une copie de BASIC sur des ROM de leurs machines. A la fin des ann�es 70, les premiers ordinateurs personnels ont leur version de BASIC:
Depuis le d�but des ann�es 80, l'histoire de BASIC est intimement li�e � celle des ordinateurs.
Deux produits dominent le march�. IBM fournit le BASICA avec PC-DOS, interpr�t� et sur ROM,
mais extensible. Son analogue pour MS-DOS est le BASIC Gee-Witz (ou GW).
En 1984 appara�t le compilateur BASIC de Microsoft, suivit de pr�s par de nombreuses versions
dont la s�rie QuickBASIC commenc�e en 1985 et achev�e en 1990 par le Microsoft BASIC
Professional Development System 7.1
Une nouvelle fois, ce sont les syst�mes d'exploitation qui am�nent des changements dans le langage avec l'introduction d'interfaces graphiques. Ainsi na�t Visual BASIC, con�u pour �laborer des interfaces graphiques (GUI). Visual BASIC pr�tend �tre un langage objet, ce que contestent de nombreux programmeurs. On notera cependant qu'une �tude r�cente estime � 90% le taux d'utilisation de Visual BASIC dans les programmes d�velopp�s pour Windows 9x.
Si l'on tente de recenser le nombre de BASIC disponibles pour Linux, on trouve facilement une bonne demi-douzaine de projets � divers stades d'avancement. Il existe m�me sur sourceforge une "Basic Foundry" qui �tablit un classement bas� sur le nombre de t�l�chargements r�alis�s:
TOP DOWNLOADS sur Sourceforge.net
On apprend aussi que Gnome et KDE on chacun leur projet destin� � remplacer
Visual Basic pour les raisons de d�mocratisation expliqu�es ci-dessus De plus
Richard Stallman lui m�me, fait un commentaire sur le besoin d'une alternative
libre � VB dans une
lettre � "the register",
le 10 f�vrier 2002.
Anthony Liguori (ajl13-at-bellatantic.net),
auteur de GLBCC (GNU/Liberty Basic Compiler Collection) le seul projet basic
labellis� GNU,
r�it�re cette demande
de mani�re plus pr�cise sur le site GLBCC
h�berg� par sourceforge.
Passons donc en revue les diff�rents BASIC pour nous faire une id�e du "look and feel" de chacune des interfaces et des possibilit�s du langage:
XBasic est s�rement l'environnement de d�veloppement dont l'interface utilisateur est une des plus abouti. Il int�gre un IDE, c'est � dire un outil de construction d'interface graphique, un d�bogueur et un compilateur. Un syst�me de "dot commands" permet aussi de commander au clavier l'interface sans utiliser la souris en tapant des commandes pr�c�d�es d'un point, directement dans la zone de saisie en haut � gauche de la fen�tre principale:
Cot� possibilit�s, XBasic poss�de toutes les biblioth�ques n�cessaires � la programmation
d'interfaces graphiques et beaucoup d'extensions. On citera la possibilit� d'appeler des fonctions
�crites en langage C. On retrouve d'ailleurs beaucoup des possibilit�s du langage C comme des
d�clarations de type, des unions de variables ou la cr�ation de biblioth�ques
Enfin, Xbasic est disponible sous license GPL pour les environnements Windows ou
Linux � l'adresse :http://www.xbasic.org
SmallBASIC est un interpr�teur en mode texte pour Win32, Linux et PalmOS. La partie d�veloppeur
est largement document�e afin d'encourager le portage sur d'autres OS.
C�t� installation l'interpr�teur peut �tre compil� pour plusieurs interfaces:
L'ex�cution peut se faire en mode texte ou en mode graphique. L'exemple ci-dessous ex�cute le programme System_infos.bas:
$ sbasic System_info.bas SmallBASIC version 0.8.2, use -h for help http://smallbasic.sourceforge.net VMT Initialization... File: System_info.bas Section: Main PASS1: Line 24; finished SB-MemMgr: Maximum use of memory: 30KB PASS2: Node 3/3 Creating byte-code... Variables 20 Labels 0 Proc/Func 0 Code size 707 System Information OS: Unix/Linux version 2.4.18-6mdk (quintela@bi.mandrakesoft.com) (gcc version 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)) #1 Fri Mar 15 02:59:08 CET 2002 204018 SB: 802 Display 99x58 Colors 16 Font: 1x1 Total free memory: 127728 KB Stack size: 127728 KB Largest free memory block: 127728 KB * DONE * SB-MemMgr: Maximum use of memory: 30KB $
$ sbasic -g System_info.bas SmallBASIC version 0.8.2, use -h for help http://smallbasic.sourceforge.net VMT Initialization... File: System_info.bas Section: Main PASS1: Line 24; finished SB-MemMgr: Maximum use of memory: 30KB PASS2: Node 3/3 Creating byte-code... Variables 20 Labels 0 Proc/Func 0 Code size 707 SB-MemMgr: Maximum use of memory: 30KB $
Le langage de SmallBASIC est assez simple et proche des fonctions standard que
l'on peut attendre d'un BASIC. M�me les fonctions graphiques ne sont pas
innovantes, on retrouve les classiques RECTANGLE et CIRCLE qui ont l'avantage
de s'ex�cuter indiff�remment sur n'importe lequel des OS suscit�s. Les variables ne sont pas
typ�es.
Par contre, SmallBASIC est compatible avec les anciens TINYBasic et QuickBasic
et il est tr�s bien int�gr� � PalmOS.
Ce logiciel est t�l�chargeable sur http://smallbasic.sourceforge.net
Le wxBasic se d�crit comme ayant les possibilit�s de Quick Basic associ�es � des sp�cificit�s Unix comme les tableaux associatifs de awk. C'est un interpr�teur de petite taille, il tient sur une disquette. La documentation qui l'accompagne est compl�te sous forme d'un manuel au format pdf de 138 pages. Le langage comporte une biblioth�que graphique qui permet d'�crire des programmes pour X Window ou Windows. Ce langage se rapproche fortement des langages objet comme le C++, tout au moins pour la construction de l'interface graphique. Par contre, les interfaces graphiques doivent �tre construites "� la main". Aucune interface de d�veloppement int�gr�e ne semble exister pour ce BASIC.
// My first wxBasic demo... option explicit // create the window dim frame=new wxFrame(0,-1,"wxBasic App",wxPoint(10,10),wxSize(300,200)) frame.Centre() // place a panel in the window dim panel = new wxPanel(frame, -1) // add a status bar dim sBar = frame.CreateStatusBar( 1 ) sBar.SetStatusText("wxBasic Frame Demo") // attach a menubar to the window dim mBar = new wxMenuBar() frame.SetMenuBar(mBar) // build the "File" dropdown menu dim mFile = new wxMenu() mBar.Append(mFile,"&File") // populate it mFile.Append(wxID_NEW, "&New", "Creates a new file") mFile.Append(wxID_OPEN, "&Open", "Loads an existing file from disk") mFile.Append(wxID_SAVE, "&Save", "Saves current file") mFile.Append(wxID_SAVEAS, "Save &As", "Saves current file with new name") mFile.AppendSeparator() mFile.Append(wxID_EXIT, "&Exit", "Exit Application") // build the "Edit" dropdown menu etc.....
site web: http://wxbasic.sourceforge.net
Aussi appel� GLBCC, pour GNU Liberty Basic Compiler Collection, c'est uniquement un compilateur ou plut�t une interface au compilateur C GNU GCC qui convertit le Basic en langage C un peu comme font certains compilateurs C++ qui transforment le C++ en C avant compilation. On l'aura compris d'apr�s le titre, ce compilateur est d�di� � un langage 100% compatible Liberty Basic. Le Liberty Basic est un des BASIC apparus dans les ann�es 90 sur les plates-formes Windows et qui a connu un relatif succ�s du fait de sa diffusion libre (d'o� son nom). Pour en savoir plus � son propos, le site lui est d�di� et vante de nombreuses qualit�s. Ce langage n'est pas libre, mais une version gratuite de Liberty BAsic pour Windows est t�l�chargeable sur le site.
Le compilateur GLBCC est disponible pour les environnement Windows et Linux et il est capable de produire des ex�cutables autonomes qui sont annonc�s comme aussi rapides que ceux programm�s avec n'importe quel autre langage de programmation. Les auteurs clament aussi assez fort que du code Liberty Basic compil� avec GLBCC est capable de ridiculiser VisualBasic en terme de vitesse.
L'installation est assez simple sous Linux et ne requiert que les classiques d�-compactage avec
"tar" et installation avec "make install".
En mode normal, le programme s'utilise en ligne de commande et un "glbcc hello.bas"
produira l'ex�cutable hello comme suit:
$ glbcc /usr/local/bin/lbpp -I/usr/local/lib/glbcc-lib/0.0.7/include -o out.c hello.bas gcc -g -I/usr/local/lib/glbcc-lib/0.0.7/include `gnome-config --cflags gnomeui` -o hello out.c /usr/local/lib/glbcc-lib/0.0.7/lib/lbcrt0.o -L/usr/local/lib/glbcc-lib/0.0.7/lib -lLB -lm `gnome-config --libs gnomeui` $ ls -l hello* -rwxr-xr-x 1 john john 339671 oct 13 21:55 hello -rw-r--r-- 1 john john 22 avr 14 17:41 hello.bas $ cat hello.bas print "Hello, world!" $ ./hello Hello, world!
S'il est utilis� sans param�tre, glbcc ouvrira une fen�tre de dialogue graphique et demandera � l'utilisateur le nom d'un fichier basic puis �ventuellement le nom de l'ex�cutable � produire. par d�faut, le nom du programme entr� servira en sortie, additionn� d'un .exe sous windows et de rien sous Linux:
Cot� langage, ce basic est complet et l'interface graphique est accessible au travers de la biblioth�que GTK. Chose amusante, glbcc est lui m�me �crit en Basic.
Yet another Basic for Unix and Windows
Bien qu'il se comporte comme un interpr�teur, yabasic n'en est pas un. C'est plut�t un compilateur: en lui donnant un code source � ex�cuter, il le compile, le transformant ainsi en code machine puis l'ex�cute imm�diatement. yabasic s'utilise en ligne de commande. Avec un nom de fichier comme argument, il ex�cute ce fichier comme d�crit ci-dessus. Sans argument, il entre en mode interpr�teur comme dans l'exemple ci-dessous:
$ yabasic Enter your program, type RETURN twice when done. for i=1 to 10 print i,"hello, world" next i 1hello, world 2hello, world 3hello, world 4hello, world 5hello, world 6hello, world 7hello, world 8hello, world 9hello, world 10hello, world $
Ce fonctionnement permet aussi d'utiliser YaBasic pour �crire des scripts Unix ou m�me des CGI en pla�ant en premi�re ligne du fichier le "#!/bin/yabasic" classique des shells Unix et en d�clarant le fichier ex�cutable.
Cot� langage, YaBasic est un BASIC standard (entendez par l�, proche de Quick Basic) avec des variables non typ�es. Il faut seulement faire la diff�rence entre cha�nes et nombres gr�ce � la pr�sence o� non du caract�re $ en fin de nom de variable. Ici point de programmation objet mais on y trouve quand m�me la possibilit� de faire ses propres biblioth�ques, des instructions qui donnent acc�s aux modes graphiques X11 et Windows selon le syst�me d'exploitation utilis�. A cela s'ajoutent quelques fonctions bien pratiques comme le split() que l'on retrouve dans Perl ou PHP, les boucles FOR, WHILE ou REPEAT UNTIL et le IF ELSE ENDIF, ces derniers �tant pr�sents dans le langage BASIC depuis les ann�es 80 quand est apparue la programmation structur�e dans Basic.
X11-BASIC est un interpr�teur de Basic Structur� ayant des capacit�s graphiques pour X11.
Il utilise les fonctionnalit�s du GFA Basic de l'Atari ST. Il s'agit en fait du portage de GFA
BASIC du syst�me GEM/TOS des Atari ST (fin des ann�es 80) vers l'environnement Unix. Il peut �tre
utilis� comme interpr�teur ou pour r�diger des scripts ou des CGI. Il existe un pseudo compilateur
qui permet de cr�er des ex�cutables autonomes (mode statique) ou qu'il faut accompagner de la
biblioth�que X11 basic qui p�se environ 200 Ko (mode dynamique).
C'est un pseudo compilateur car le fichier
r�sultant ne contient pas du code machine directement ex�cut� par le micro processeur mais le langage
BASIC sous une forme compress�e et accompagn� de l'interpr�teur. Ce pseudo compilateur est
lui m�me �crit en X11-Basic.
Le langage de ce basic est tr�s riche, structur� et avec des variables typ�es (entiers, flottants,
textes, tableaux, bool�ens). Il existe des instructions pour acc�der � la m�moire comme le malloc()
du C ou bien des instructions de multiplication de matrices applicables � des tableaux.
Les instructions graphiques sont rest�es les m�mes depuis le GFA Basic des Atari ST mais ont maintenant
un r�sultat similaire sous X. L'instruction MENU cr�e un menu dans une fen�tre graphique par exemple.
$ xbasic *************************************************************** * xbasic V. 1.07 * * by Markus Hoffmann 1997-2002 (c) * * * * version date: Wed Sep 25 10:26:29 CEST 2002 * * library V. 1.07 date: Wed Sep 25 10:26:29 CEST 2002 * ***************************************************************X11 Basic: l'accueil de l'interpr�teur
Site web: http://www-cip.physik.uni-bonn.de/~hoffmann/X11-Basic/
Voici enfin un BASIC qui fait bonne impression d�s le d�but, tant par ses possibilit�s, que la qualit� de sa documentation qui p�se tout de m�me 7.7 Mo. L'installation n�cessite Qt-3.* qu'il faut charger sur le site de Trolltech (http://www.troll.no) si vous n'avez pas install� une distribution de Linux tr�s r�cente. Il s'agit d'un environnement de d�veloppement vraiment complet qui malgr� sa jeunesse (version 0.8) int�gre d�j� toutes les fonctionnalit�s dont un d�veloppeur peut r�ver:
Les auteurs de HBasic insistent quand m�me en disant: "La version en cours de HBasic n'est pas encore assez stable pour �tre utilis�e par des d�veloppeurs BASIC. Il leur faudra attendre la publication de la premi�re version stable 1.0"..
GNOME Basic est un projet qui vise � �tre le rempla�ant compatible � 100%
des Visual Basic, VBA, VBScript, et autres langages associ�s.
A l'origine il se d�diait � rendre les macros VBA ex�cutables dans
gnumeric, mais � cause de d�rapage des objectifs il ex�cute quelques
formulaires, examine la plupart du code VB et ex�cute de simples ASPs.
Avec une meilleure int�gration de Bonobo, un environnement enti�rement
MS compatible devient r�alisable
Pour l'instant, Gnome Basic est juste une tentative embryonnaire
de fournir des fonctionnalit�s compatibles avec VB pour le
projet GNOME, en particulier pour les application de type bureautique
(VBA).
Le projet est toujours dans un �tat "pr�-alpha" et doit �tre
r�serv� aux d�veloppeurs du projet GNOME � ce stade.
Page d'accueil: http://www.gnome.org/gb/
KBasic est l'autre tentative de d�velopper un BASIC compatible � Visual Basic. Les d�veloppeurs esp�rent distribuer la premi�re version 1.0 stable � l'�t� 2003. Il n'existe pour l'instant qu'une version instable r�serv�e aux d�veloppements. A terme il semble que KBasic utilisera l'environnement de Kdevelop.
Voici un exemple de ce que donne actuellement la version t�l�chargeable du noyau dur du KBasic:$ kbasic1 --help Usage: kbasic1 [OPTION]... FILE --help display this help and exit -V, --version print version information and exit -c, --copyright print copyright information and exit $ kbasic1 -V KBasic version 0.8 Copyright (C) 2000, 2001, 2002 The KBasic Team This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. Visit us on http://www.kbasic.org/ $kbasic1 hello.bas -- scan -- LINE 00001 PRINT STRING "Hello, world!" EOL LINE 00002 END -- parse -- STRING in line 1 EOL in line 1 parsed PRINT parsed END -- interpret -- 0000: KBASIC KBASIC 0006: VER 1.000000 0011: OPTION R OFF 0013: JMP 36 0036: DIM_STAT "Hello, world!", 1 0055: JMP 18 0018: PUSHS 1 , " Hello, world! " 0023: PRINT Hello, world! 0034: END execution ended
Comme on peut le voir, kbasic fonctionne mais est loin d'�tre op�rationnel, les messages de debogage de l'interpr�teur lui m�me ainsi que le code assembleur g�n�r� sont in�vitables pour l'instant.
Site: http://www.kbasic.org
Ce tour d'horizon des diff�rents interpr�teurs et compilateurs BASIC nous apprend plusieurs choses.
Tout d'abord, une demi surprise, BASIC, ce langage tant d�cri� par les d�veloppeurs des autres langages,
n'est pas mort,
m�me sur les syt�mes Unix o� son utilisation reste pourtant toujours tr�s discr�te � cause de
concurrents s�rieux (perl, python, Tcl/Tk,php....) qui fonctionnent eux aussi en mode interpr�t�.
L'activit� que g�n�re ce langage dans le monde des d�veloppeurs libres est significative.
Le nombre de projets est important et tous ces projets sont tr�s actifs. A n'en pas douter la demande
est s�rement forte et ce fait ne peut que favoriser le d�veloppement du logiciel libre en facilitant
la migration de programmeurs BASIC vers les Unix libres.
Sur les syst�mes Windows, VisualBasic pr�vaut du fait de son int�gration dans le syst�me
d'exploitation de Microsoft, les asp et les suites bureautiques. Notons tout de m�me qu'une grande
proportion des BASIC que nous avons test�s fonctionnent sur les deux plates-formes voire d'autres.
Deuxi�mement, BASIC tra�ne toujours quelques casseroles. L'absence de standard de ce langage a conduit
� ces nombreuses versions qui ne sont pas du tout compatibles entre elles. La volont� de plusieurs
projets r�cents comme GNOMEBasic ou KBasic de rejoindre le standard de fait qu'est VisualBasic irait
dans le bon sens si VB �tait un standard libre, ce qu'il n'est �videmment pas. Il vaut mieux dans ce
cas parler de monopole...
Pour le d�veloppeur BASIC, le choix existe et quelques outils sortent nettement du lot. En tant que
syst�me de d�veloppement int�gr�, HBasic est certainement le plus prometteur. En attendant
la version stable, XBasic est actuellement le plus abouti. D'un autre cot�, smallbasic, yabasic
permettent facilement d'�crire des scripts ou des cgi � tous ceux qui viennent de migrer sous Unix et
qui h�sitent parmi toutes les solutions que ce syst�me propose. GLBCC permet aussi cela avec
l'avantage de cr�er des programmes compil�s avec l'excellent GCC. �tant donn� l'absence d'IDE et donc
d'un d�bogueur facile d'abord, on ne pourra que difficilement d�velopper et maintenir de gros programmes
avec cet outil. Reste wx-Basic qui est assez inclassable mais qui a des atouts, en particulier pour
l'�criture d'interfaces graphiques.
Un autre avantage de ces BASIC est la migration facile de programmes d'un syst�me d'exploitation
vers l'autre sans recompilation. Ils sont en effet, quasiment tous disponibles pour les environnements
Win32 et Unix.
Il reste donc au d�veloppeur BASIC la lourde t�che de faire le bon choix parmi tous ces outils en
fonction de l'utilisation envisag�e.