Le Basic sous Linux

Le langage 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

Les interpréteurs BASIC disponibles sous Linux en 2022
Nom page web graphiques Type
Gambas http://gambas.sourceforge.net Oui (GTK) Visual Basic
X11-Basic http://x11-basic.sourceforge.net/ Oui GFA Basic
Decimal Basic http://en.sourceforge.jp/projects/decimalbasic/devel/
http://hp.vector.co.jp/authors/VA008683/english/index.htm
Oui standard ( ECMA-116)
Production Basic https://github.com/lbsmith/Production-Basic Non Business Basic
Brandy https://github.com/stardot/MatrixBrandy
http://brandy.matrixnetwork.co.uk/
Prestel (Minitelesque) + SDL Acorn BBC basic
Bywater Basic http://sourceforge.net/projects/bwbasic/
https://github.com/kenmartin-unix/Bwbasic
Non Standard (Dartmouth/MBASIC/GWBASIC...)
Bas http://www.moria.de/~michael/bas/ Non Standard (BASIC-80 pour CP/M)
Blassic https://github.com/NotFound/Blassic Oui Standard (Amstrad CPC/MSX)
Yabasic http://yabasic.de/ Oui Non standard
EndBASIC https://www.endbasic.dev/OuiQuickBasic (écrit en Rust)
NuBASIC http://www.nubasic.eu/
https://github.com/eantcal/nubasic
Oui type QBasic
QB64 https://github.com/QB64-Phoenix-Edition/QB64pe Oui QBasic/QuickBasic (écrit en QB64)
SDLBasichttps://www.sdlbasic.altervista.orgOui (SDL)Non
PC-BASIC https://robhagemans.github.io/pcbasic/ Oui compatible GW-BASIC (écrit en Python)
Vintage Basic http://www.vintage-basic.net/ Non Standard (écrit en Haskell)
Small Basic http://smallbasic.sourceforge.net/ Non Non standard
Chimpunk Basic http://www.nicholson.com/rhn/basic/ Oui (limité) Standard
Basic-256 http://kidbasic.sourceforge.net/ Oui Standard
tcbasic https://github.com/tcort/tcbasic Non Tiny Basic
MOLE Basic http://www.xs4all.nl/~merty/mole/ Non Standard
(pas de mode interactif, pas de DEF FN)
BDBBasic http://bdbbasic.wiki.sourceforge.net/ Non Base de données (PostgreSQL/Berkeley)
CBMBasic http://cbmbasic.sourceforge.net/ Non Commodore 64
Wx-Basic https://www.wxbasic.net/downloads
https://github.com/virtualanup/wxbasic
Oui (Open GL) QBasic
XBasic http://xbasic.sourceforge.net
http://www.maxreason.com/software/xbasic/xbasic.html
Oui QuickBasic (écrit en XBasic)
HBasic http://hbasic.sourceforge.net Oui (KDE) Visual Basic

Remarques sur les interpréteurs

Interpréteurs obsolètes

Les deux derniers interpréteurs de la liste, XBasic et HBasic sont inutilisables avec une version moderne de Linux.

  • L'interpréteur XBasic n'est exécutable que sur Linux Intel 32-bits ou 64-bits avec multilib. L'environnement de développement semble fonctionner mais il ne peut plus exécuter les programmes. Les sources de XBasic étant écrites en XBasic il n'est pas possible de corriger ce problème en recompilant l'interpréteur.

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

    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

    • 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

    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

    Les compilateurs BASIC disponibles sous Linux en 2022
    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 Kithttp://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 même pas la compilation sous Linux.

    É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 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"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:

    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.

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

    Commentaires

    Posts les plus consultés de ce blog

    Graphiques Tektronix4014 en BASIC

    Installation du Common Desktop Environment sur Linux