Le Basic sous Linux
Le langage BASIC sous Linux
Bref historique
Le langage BASIC (acronyme de Beginner's All purpose Symbolic Instruction Code), a été inventé en 1964 par John Kemeny et Thomas Kurtz à Darthmouth College pour enseigner les bases de la programmation (voir l'article dans TIME Magazine pour les 50 ans du BASIC). On peut trouver le Manuel de ce premier BASIC sous forme de fichier PDF sur le site Bitsavers.org. Ce langage était beaucoup plus simple que Fortran ou Algol 60. Conçu pour être facilement appris, il permettait de mettre au point un programme très rapidement. De plus, il pouvait être utilisé de façon interactive sur les ordinateurs temps partagé (c. à d. multitâche et multiutilisateurs) ou les mini-ordinateurs qui sont apparus au cours des années 1960 et qui se sont répandus dans les universités dans les années 1970. Les premiers jeux (en mode texte) et programmes de démonstration sont apparus à cette époque.
L'apparition des premiers micro-ordinateurs au milieu des années 70, en particulier l'Altair pour lequel Bill Gates et Paul Allen écrirent un des premiers interpréteurs BASIC (dont le Manuel est disponible) a conduit au développement très rapide de ce langage au cours des années 1980. Un des gros avantages du BASIC était que les interpréteurs consommaient très peu de mémoire (typiquement entre 4 et 16 Kilooctets), ce qui était d'une importance cruciale à l'époque (un micro-ordinateur 8 bits ne pouvait addresser que 64 Ko de mémoire vive). De nombreux jeux originellement écrits pour les ordinateurs temps partagé ont été adaptés pour les micro-ordinateurs. On peut trouver les listings dans les livres de David H. Ahl Basic Games, More Basic Games,Big Computer Games. Les programmes peuvent aussi être obtenus sous forme de fichier ZIP sur le site http://www.classicbasicgames.org/.
Le BASIC Microsoft s&pos;est imposé comme le standard de fait pour le BASIC des micro-ordinateurs, mais il existait de nombreuses variantes recensées dans Le Dictionnaire du Basic de D. A. Lien (Ed. PSI, 1984). Un exemple est le Basic utilisé sur les ordinateurs Wang. Le Basic a été normalisé par l'ANSI, avec les normes Minimal BASIC (X3.60-1978) et Full BASIC (X3.113-1987). Il existe également deux normes ECMA-55 Minimal BASIC (fichier PDF) et ECMA-116 Full Basic (Fichier PDF) assez proches des normes ANSI. Des programmes pour tester la conformité des interpréteurs à la norme Minimal BASIC ont été publiés par le NIST. Ils sont lisibles en ligne: NBS Special publication 500-70/2 avec leur documentation NBS Special publication 500-70/1.
Des BASIC "améliorés" sont ensuite apparus, tels que le GFA-Basic sur les Atari ST, introduisant en particulier des instructions de programmation structurée, supprimant les numéros de lignes etc... Cependant, ces BASIC "améliorés", qui ne suivent pas forcément les normes ANSI, finissent par perdre l'avantage de la facilité d'apprentissage qui a fait la popularité du Basic. Dans ces conditions, il devient plus avantageux d'utiliser un langage de programmation standardisé comme C, Ada, ou Fortran 90. Un autre inconvénient de ces BASIC "améliorés" est qu'ils sont incompatibles avec les anciens BASIC et ne permettent donc pas de réutiliser d'anciens programmes.
Sur les systèmes Unix, le Basic n'a jamais atteint la popularité qu'il a connu sur les micro-ordinateurs, bien qu'un interpréteur Basic, bas, ait été disponible dans la version 5 d'UNIX. De ce fait, la plupart des distributions Linux n'installent pas par défaut d'interpréteur BASIC. Cela ne signifie pas qu'il n'existe aucun interpréteur pour Linux. Sur cette page, je liste les principaux interpréteurs Basic disponibles.
Liste d'interpréteurs
Remarques sur les interpréteurs
Interpréteurs obsolètes
Le dernier interpréteur de la liste, HBasic est inutilisable avec une version moderne de Linux.
- L'interpréteur HBasic est abandonné depuis 2007. Il demande les bibliothèques KDE 3.x et Qt 3.0 pour être compilé. Il est peut être possible de le compiler sur Linux avec TDE qui a sa propre version de Qt 3.0.
- L'interpréteur MOLE Basic n'a plus de page Web, mais les sources sont toujours disponibles sur Internet Archive. Ce programme est surtout un exemple d'utilisation des outils Unix Lex et Yacc pour construire un interpréteur. Cependant, il souffre de bugs sérieux tels que l'impossibilité d'emboîter des boucles FOR/NEXT.
- Visual Basic: Gambas
- GFA Basic: X11 Basic
- QBasic/Quickbasic: Nubasic (écrit en C) ou QB64 (écrit en QB64)
- ANSI Full Basic/True Basic: Decimal Basic
Limitations de Wx-Basic
L'interpréteur Wx-Basic utilise Wxwidgets pour le graphisme, ce qui le rend disponible aussi pour MacOSX et Windows. La version Linux précompilée utilise wx-GTK. Il ne semble pas exister de version wx-X11 ou wx-Motif précompilée et les sources récentes de Wx-Basic semblent indisponibles.
Limitations de XBasic
Depuis septembre 2024, une version 64 bits de XBasic est disponible (xbasic-6.4.5-linux64-src.tar.gz) sur sourceforge.net. Elle peut être installée sur Linux Ubuntu 22.04 et fonctionne de façon satisfaisante. Cependant, la version 32-bits (xbasic-6.3.26-B1Linux-tar-gz) ne semble pas fonctionner sur Slackware 15.0 32-bits.
Interpréteurs compatibles ANSI Minimal Basic
L'interpréteur Bywater Basic est conforme au standard ANSI Minimal Basic (ECMA-55), et accepte une partie des instructions définies dans le standard ANSI Full Basic (ou ECMA-116). Son instruction OPTION VERSION permet de sélectionner le type de langage Basic utilisé parmi Bywater, DARTMOUTH, GE-265, IBM 360/370, CBASIC, ECMA-55/116, TRS-80, BASIC-80, GW-BASIC. Les interpréteurs bas et blassic acceptent eux aussi un basic assez proche du standard ANSI Minimal Basic. Blassic reconnaît en outre les instructions graphiques du Locomotive BASIC des Amstrad CPC. Pour pallier l'absence des intructions graphiques de Bywater Basic ou bas on peut ouvrir une fenêtre XTerm en mode émulation de terminal Tektronix 4014 avec xterm -t et se servir des instructions décrites ici.
L'interpréteur CBMBasic accepte le basic du Commodore 64, qui est semblable au standard ANSI minimal Basic, sauf pour les instructions d'entrées/sorties. Il n'est pas garanti que les instructions du CBMBasic permettent d'utiliser les fichiers sur un système d'exploitation moderne.
L'interpréteur Brandy est compatibles avec le BASIC utilisé par les micro-ordinateurs Acorn BBC (populaires au Royaume-Uni grâce à une émission de la British Broadcasting Company qui utilisait ces machines pour enseigner la programmation).
Intepréteurs adaptés pour les Basic améliorés
Autres interpréteurs, traducteurs, compilateurs
Un article de Linux Focus de Janvier 2003 discutait outre XBasic/SmallBASIC/wxBasic/ YaBASIC/X11-Basic/HBasic vus plus haut, deux autres interpréteurs GNOME Basic et KBasic. Gnome Basic n'est plus développé depuis 2002 et sa page web a disparu du site gnome.org. KBasic est devenu Basic for Qt qui est gratuit seulement sur Linux et seulement pour le développement de programmes sous licence GPLv3. Les exécutables sur le site n'ayant pas été mis à jour depuis dix ans, ils sont probablement inutilisables.
Compilateurs
Nom | page web |
Free Basic | https://www.freebasic.net/ |
ECMA-55 Minimal BASIC compiler | https://sourceforge.net/projects/buraphakit/ |
Agora Basic | http://antti-juhani.kaijanaho.fi/agora-basic/ |
Amsterdam Compiler Kit | http://tack.sourceforge.net/ |
Remarques
ECMA55 est capable de compiler des programmes en ANSI Minimal Basic (ECMA55). Pour Agora Basic, la dernière version date de 2006. Le compilateur Amsterdam Compiler Kit supporte plusieurs langages, dont un basic minimal. Il peut produire des exécutables Linux ELF pour Intel 80386 et Motorola 68020.
Traducteurs Basic vers C
Le programme BaCon (Basic Converter) permet de traduire en C des programmes en Basic. C'est le traducteur le plus complet disponible, reconnaissant un langage de type QBasic.
Le programme b2c par Makoto Ohura traduit un sous-ensemble du Basic en C (en particulier, les fonctions trigonométriques, le logarithme, l'exponentielle la fonction racine carrée ne sont pas disponibles). Sa documentation est en japonais.
Enfin, il existe un traducteur CBasic (un basic compilé pour CP/M-80) vers C appelé cbc. Selon son auteur, ce traducteur a fonctionné correctement sur Unix System V Revision 3. Ses fichiers Makefile défectueux ne permettent pas la compilation sous Linux. Après une compilation manuelle, ce programme est capable de générer du code C à partir d'un listing en CBASIC. Par contre, la compilation de la bibliothèque C permettant l'exécution des programmes en C échoue en raison de l'utilisation des fonctions obsolètes dans <varargs.h>.
Éditeurs
L'éditeur Kate de l'environnement KDE possède des fonctions de coloration syntaxique pour le Basic. L'éditeur vim, en mode texte permet également la coloration syntaxique dans une fenêtre xterm ou console. Avec Nedit il est possible de générer un fichier .pats qui reconnaît les mots-clés du basic.Utilitaires
Récupération de programmes GW-BASIC (IBM-PC) au format binaire
gwbasic-2.2
Le programme gwbasic de Christian Ratliff permet de lire des programmes GW-BASIC sauvés en format binaire et de les lister. Une version améliorée est disponible ici. Pour utiliser le programme, taper gwbasic. Au prompt Ok taper load "prog.bas" où prog.bas est le nom d'un programme GW-BASIC sauvé au format binaire. La commande list permet d'afficher le listing du programme.gwbascii
Le programme gwbascii par Arne de Brujin reconnait l'ensemble des mots-clés du langage et permet même de lister les fichiers protégés. Pour l'installer, il suffit de télécharger le fichier gwbascii et faire:
Récupération de programmes HP-BASIC au format binaire
Leif Jon Harcke a écrit trois detokenizers pour convertir au format ASCII les fichiers binaires créés par les interpréteurs BASIC des ordinateurs Hewlett Packard Series 80, HP-85, HP-87 et l'Integral PC. Les fichiers créés par l'Integral PC peuvent être lus par les utilitaires écrits par Peter Johnson.
Basic pour micro-ordinateurs 8bits
Basic Applesoft (Apple II)
Vince Weaver a écrit un ensemble de logiciels permettant de manipuler des images de disques Apple II DOS 3.3. Cette suite de logiciels comprend en particulier un programme permettant de convertir au format ASCII les fichiers binaires Basic Applesoft.
Commodore 64 et VIC-20
L'utilitaire petcat permet de lister des programmes en basic Commodore sauvés au format binaire. Le fichier source est disponible sur commodore.ca.
Basic MSX
MSX était un standard japonais des années 80 pour les microordinateurs 8bit à base de processeur Zilog Z80. L'utilitaire zbasic permet de lister des programmes en Basic MSX (8bit). Il ne reconnait toutefois pas l'intégralité des mots-clés du Basic MSX. On trouve ici un programme plus efficace.
BBC Basic
Le programme bascat permet de convertir les programmes en BBC basic sauvés dans le format binaire en format texte.
Microsoft BASIC pour CP/M
Le système d'exploitation CP/M-80 était utilisé sur les microordinateurs à processeurs Intel 8080/8085 et Zilog Z80 au début des années 80. Un Basic Microsoft était disponible sur ces ordinateurs. Un programme permettant de lister les fichiers binaires sauvés par cet interpréteur est disponible ici.Basic Level II du TRS-80 Model I
Le TRS-80 Model I était un microordinateur du début des années 1980. Un programme permettant de lister les fichiers binaires créés par l'interpréteur du Basic Level II de cet ordinateur est disponible ici.Programmes
Il existe de nombreux exemples de programmes en BASIC à usage scientifique.
On peut se reporter au livre Advanced
scientific computing in BASIC: with applications in chemistry,
biology, and pharmacology par Sándor Vajda (Elsevier, 1989)
ou à Basic
Programs for Scientists and Engineers par Alan R. Miller (Sybex,
1981) ou
encore Numerical
Recipes in Basic par J. C. Sprott (Cambridge University Press,
1991).
La première table ci dessous donne une liste de codes sources en BASIC téléchargeables. La seconde table donne une liste de fichiers PDF contenant des listings de programme en BASIC. .
Sujet | URL | Source |
Analyse Numérique | http://math.fullerton.edu/mathews/software/BASIC.zip | John H. Matthews Numerical Methods for Computer Science, Engineering, and Mathematics (Prentice-Hall, 1987) |
Analyse Numérique | http://pagesperso-orange.fr/jean-pierre.moreau/basic.html | Page Web de J.-P. Moreau |
fonctions hypergéométriques confluentes | ftp://ftp.aip.org/cip/cip_sourcecode/izarra_mj_95/ | Computers in Physics |
Astronomie | http://www.skyandtelescope.com | Sky & Telescope |
Statistique | http://web.mit.edu/multics-history/source/Multics/ldd/system_library_unbundled/source/ | Achive Multics (MIT et Groupe Bull) |
Dynamique Non-Linéaire | http://sprott.physics.wisc.edu/fractals/bookdisk/ | J. C. Sprott, Strange Attractors: Creating Patterns in Chaos (M&T Books, 1993) |
Arithmétique (PGCD, crible d'Erathostène...) | http://userpages.umbc.edu/~rcampbel/NumbThy/Class/Programming/QBASIC/ | Robert Campbell |
Physique, Chimie, Astronomie, etc.. | http://pdp-11.trailing-edge.com/rsts11/ | PDP-11 Archive de Tim Shoppa |
Pressions partielles | ADA311531:Computation of Partial Vapor Pressures of Aqueous Volatile Organic Compound Solutions. | |
| ||
Equations d'état | http://www.che.udel.edu/thermo/basicprograms.htm | Chemical and Engineering Thermodynamics by S.I. Sandler.(3rd ed.) |
Equlibre | A Short Program for Teaching Chemical Equilibrium | JM Campanario, R Ballesteros Journal of Computers in Mathematics and Science Teaching, v10 n2 p87-94 Win 1990-91 |
Spectrochimie | ALLCAL: an interactive BASIC program for spectrochemical calculations | C. T. Apel, Los Alamos Scientific Lab., N.Mex. (USA) |
spectrophotométrie | Computer programs in BASIC language for atomic absorption flame spectroscopy. Part 1. Operating instructions. Computer programs in BASIC language for atomic absorption flame spectroscopy. Part 2. Documentation. |
Commentaires
Enregistrer un commentaire
Les commentaires seront rejetés.