Le langage BASIC sous Linux

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. 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 le 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'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

Les interpréteurs BASIC disponibles sous Linux en 2011
Nom page web graphiques Type
X11-Basic http://x11-basic.sourceforge.net/ Oui GFA Basic
Wx-Basic http://wxbasic.sourceforge.net/ Oui (Open GL) QBasic
XBasic http://xbasic.sourceforge.net
http://www.maxreason.com/software/xbasic/xbasic.html
Oui QuickBasic
QB64 http://www.qb64.net/ Oui QBasic/QuickBasic
HBasic http://hbasic.sourceforge.net Oui (KDE) Visual Basic
Gambas http://gambas.sourceforge.net Oui (GTK) Visual Basic
Chimpunk Basic http://www.nicholson.com/rhn/basic/ Oui (limité) Standard
Basic-256 http://kidbasic.sourceforge.net/ Oui Standard
Vintage Basic http://www.vintage-basic.net/ Non Standard (écrit en Haskell)
Decimal Basic http://en.sourceforge.jp/projects/decimalbasic/devel/
http://hp.vector.co.jp/authors/VA008683/english/index.htm
Oui standard ( ECMA-116)
Bywater Basic http://sourceforge.net/projects/bwbasic/ Non Standard
MOLE Basic http://www.xs4all.nl/~merty/mole/ Non Standard
(pas de mode interactif, pas de DEF FN)
Small Basic http://smallbasic.sourceforge.net/ Non Non standard
Brandy http://jaguar.orpheusweb.co.uk/branpage.html
http://www.bbcbasic.co.uk/bbcbasic.html
Non Acorn BBC basic
Bas http://www.moria.de/~michael/bas/ Non Standard BASIC
Blassic http://blassic.net/ Oui Standard BASIC
BDBBasic http://bdbbasic.wiki.sourceforge.net/ Non Base de données
CBMBasic http://cbmbasic.sourceforge.net/ Non Commodore 64
Yabasic http://yabasic.basicprogramming.org/ Oui Non standard

Remarques sur les interpréteurs

L'interpréteur Bywater Basic est conforme au standard ANSI Minimal Basic, et accepte une partie des instructions définies dans le standard ANSI Full Basic. Les interpréteurs bas et blassic acceptent eux aussi un basic assez proche du standard ANSI. Dans les trois cas, le langage ressemble au GW-BASIC des IBM-PC des années 80 ou au Locomotive BASIC des Amstrad CPC (sans les instructions graphiques pour Bywater Basic et bas). Il existe un moyen de pallier l'absence des intructions graphiques en utilisant une fenêtre XTerm qui est expliqué 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.

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).

Autres interpréteurs, traducteurs, compilateurs

Un article de Linux Focus de Janvier 2003 discute les interpréteurs XBasic, SmallBASIC, wxBasic, YaBASIC, X11-Basic, HBasic, GNOME Basic et KBasic. Gnome Basic n'est plus développé depuis 2002. KBasic est gratuit seulement sur Linux et seulement pour le développement de programmes "Open-Source".

Compilateurs

Les compilateurs BASIC disponibles sous Linux en 2012
Nom page web
GNU/Liberty Basic http://lbpp.sourceforge.net/
Agora Basic http://antti-juhani.kaijanaho.fi/agora-basic/
Amsterdam Compiler Kithttp://tack.sourceforge.net/

Remarques

Le développement du compilateur GNU/Liberty Basic a cessé en 2002. 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 du langage machine pour les processeurs 8086 et 80386.

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). La 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. Les fichiers Makefile ne permettent même pas la compilation sous Linux.

UNM Basic

A cette liste, il faut ajouter l'interpréteur UNMBasic mis au point à l'Université du Nouveau-Mexique dans les années 80 pour les ordinateurs utilisant BSD Unix. Cet interpréteur est compatible avec le VS/BASIC utilisé sur les IBM System/370. Un aspect intéressant du VS/BASIC est qu'il possède des instructions pour le calcul matriciel. Bien que Linux appartienne plutôt à la famille System V, il est possible de modifier les sources d'UNMBasic pour qu'il se compile sous Linux avec GCC et byacc. Le fichier .tar.gz est . L'interpréteur présente cependant un bug sérieux. Si on écrit par exemple:

10 LET A=50 20 PRINT A 30 END L'exécution du programme affichera zéro. Plus généralement, l'interpréteur ne traite pas correctement les constantes numériques, bien qu'il convertisse correctement les chaînes de caractères en valeur numérique avec l'instruction num.

É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.

Utilitaires

Récupération de programmes GW-BASIC (IBM-PC) au format binaire

gwbasic-2.2

Le programme gwbasic, par Christian Ratliff permet de lire des programmes GW-BASIC sauvés en format binaire et de les lister. Le patch suivant lui permet de reconnaître une gamme plus large de mots clés. Pour installer ce programme: tar zxvf gwbasic-2.2.tar.gz mv gwb_patch gwbasic-2.2 cd gwbasic-2.2 patch -c < gwb_patch make Pour utiliser le programme, taper gwbasic. Au prompt Ok taper load "prog.bas"prog.bas est le nom d'un programme GW-BASIC sauvé au format binaire. La commande list permet d'afficher le listing du programme. Une version corrigée est disponible ici.

gwbascii

Le programme gwbascii par Arne de Brujin fonctionne de manière plus satisfaisante que gwbasic. Il reconnait l'ensemble des mots-clés du langage sans avoir besoin d'être patché et permet de lister même les fichiers protégés. Pour l'installer, il suffit de télécharger le fichier gwbascii et faire:

cc -O2 gwbascii.c -o gwbascii

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.

TI99/4A Basic simple/étendu

Le programme ti99 permet de convertir les programmes en basic TI99/4A étendu (ou simple) sauvés dans 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.

North Star BASIC et Nevada BASIC

Les ordinateurs North Star Horizon et Advantage font partie des premiers microordinateurs à processeur 8 bits, apparus au milieu des années 1970. Le BASIC utilisé sur ces microordinateurs s'inspire de celui des miniordinateurs HP-3000. En particulier, les instructions de traitement de chaînes de caractères sont très différentes de celles des Basic Microsoft/TRS-80/Apple/Commodore. Le Nevada BASIC, distribué par Ellis Computing pour les microordinateurs CP/M présente des similarités avec le North Star BASIC, tant dans le traitement des chaînes de caractères que dans le format des fichiers BASIC. On trouve dans l'archive ZIP deux petits programmes pour lister les fichiers produits par North Star et Nevada BASIC et une description plus détaillée des formats de fichiers.

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. .
Fichiers téléchargeables
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
Statistiquehttp://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

Listings (fichiers PDF) de programmes mathématiques ou statistiques en BASIC
Algorithme de Horner et recherche de zérosERIC: ED218126
Intégrales définies (méthode des trapèzes et Romberg) ERIC: ED218110
PI: Aiguille de Buffon, séries ERIC: ED239836
Fonction Q de Marcum/Distribution de Rice http://handle.dtic.mil/100.2/AD874817
Fonctions spéciales (Bessel, Gamma) transformées de Fourier ADA327754: Showcase of Subroutines in True Basic.
Optimisation (Fletcher-Reeves, Golden Section) http://handle.dtic.mil/100.2/ADA095012
Statistical Process Control The design of a microcomputer based true basic statistical process control packagehttp://rave.ohiolink.edu/etdc/view?acc_num=ohiou1182435780
Loi Normale ADA158111: Five Statistical Programs in BASIC for Desktop Computers
Orbites elliptiques, transferts d'orbitesERIC: ED174465
Navigation en coordonnées sphériques ADA170615:Some Tactical Algorithms for Spherical Geometry
Spectre de puissanceBASIC program for power spectrum estimation. Revision
Régression multi-variables A Multivariable Regression Algorithm
Régression non-linéaire ADA126840: Non-Linear Regression Analysis: A General Program for Data Modeling Using Personal Microcomputers
régression non linéaire A PHARMACOKINETIC ANALYSIS PROGRAM (MULTI) FOR MICROCOMPUTER Journal of Pharmacobio-Dynamics Vol.4 , No.11(1981) pp.879-885
Statistiques Non-parametric statistical software for the TRS-80 microcomputer
Lissage de fonctions A basic program for smoothing by quadratic splines
Optimisation An Algorithm for the Solution of a Traveling Salesman Problem to Minimize the Average Time to Demand Satisfaction.
listings de programmes en BASIC pour la chimie
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étrieComputer 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.
[Retour à la page principale]