Basic onder Linux

Wat is Linux
Linux is een multi-tasking _en_ multi-user besturingssysteem voor onder meer de PC. 

POSIX - Unix
Het voldoet aan de POSIX standaards van de IEEE (een organisatie voor standaards in de wereld van de elektronica) en is daarmee grotendeels compatibel met het Unix besturingssysteem. Unix is begin jaren 70 ontstaan en wordt vooral op grotere computer-systemen met meerdere gebruikers toegepast. Omdat het al zo lang bestaat is het gepokt en gemazeld. Het staat dan ook als heel stabiel bekend.

Linus
Het Linux project is in 1991 gestart door Linus Torvalds, toen een Finse student in Helsinki.

Hij is niet begonnen met al bestaande Unix code (deze was i.h.a. niet vrijgegeven) maar heeft het van de grond af aan nieuw opgezet. De source code gaf hij vrij via Internet. Samen-werking van vele programmeurs over het internet maakte het tot wat het nu is: een stabiel en betrouwbaar OS voor de PC dat sinds vorig jaar ook voor de grote softwarehuizen interessant is geworden.

De GPL
De source code van Linux is vrij beschikbaar onder de GNU General Public License (GPL) van de medio jaren 1980 opgerichte Free Software Foundation (FSF). Deze GPL garandeert onder meer dat code die eenmaal door de auteur is vrijgegeven altijd voor een ieder vrij beschikbaar blijft. Een commercieel bedrijf, zoals bij voorbeeld Microsoft, kan er niet mee aan de haal gaan en het verder voor zich zelf houden. Er mag overigens best geld worden gevraagd voor het programma, mits de source code maar vrij blijft. Zo kunnen natuurlijk ook de kosten van verspreiding (b.v. CDROM) en de kosten van ondersteuning (door gespecialiseerde bedrijven) in rekening worden gebracht.

GNU software
Voorwaarde voor een zinvolle verspreiding van de source code is natuurlijk wel dat de instrumenten om van deze source code werkende programma's te maken ook vrij beschikbaar zijn. De FSF stelt deze ter beschikking in de vorm van zijn GNU software. De betekenis van GNU is een van die woordgrapjes die je wel meer onder Unix ziet: GNU's Not UNIX. De GNU software is grotendeels aan Unix ontleend, maar ze zijn ook door verschillende bedrijven overgebracht naar andere besturingssystemen zoals Windows, DOS en OS/2. Zonder de GNU software had Linux nooit ontwikkeld kunnen worden.

Distributies
De vrije aard van Linux maakt dat het niet door een bedrijf wordt uitgebracht, zoals Windows door Microsoft en OS/2 door IBM. In feite bestaat Linux alleen maar uit de kernel. Zelfs de GUI hoort niet bij het eigenlijke Linux maar wordt door verschillende groepen en ook commercile bedrijven ontwikkeld. Heel veel andere essentile software is door verschillende programmeurs, groepen van programmeurs en bedrijven gemaakt. Vrijwel alles is via het internet verkrijg-baar, maar het zou een gigantische taak om uit al deze brokken een nuttig, goed werkend systeem samen te stellen. Dat is nu wat door verschillende organisaties en bedrijven wordt gedaan. Zo zijn er allerlei distributies van Linux verschenen, die een compleet werkend systeem bieden. Als meest bekende noem ik RedHat, SuSE, Debian, Caldera en Slackware. 

Met name SuSE (Europees) en RedHat (Amerikaans) zijn voor de gewone consument interessant zijn omdat ze het installatie- en configuratieproces verregaand vereenvoudigd hebben. Ook Debian is wat dat betreft op de goede weg. Caldera is meer op het bedrijfsleven gericht. Een officile SuSE of RedHat distributie op CDROM met een paar maanden ondersteuning kost niet meer dan ca f 100,-.

Basic programmeren onder Linux
Als programmeurs zoals u aan een nieuw besturingssysteem beginnen willen ze er natuurlijk ook in kunnen programmeren, en het liefst in hun meest geliefde taal. Voor u is dat, neem ik aan, basic. 

Er zijn veel hogere en minder hoge programmeertalen beschikbaar voor Linux. Er is een GNU assembler, en er zijn GNU compilers voor C, Pascal en Fortran. De GNU software is in alle Linux distributies wel beschikbaar. Voor Pascal is er verder nog de in Europa ontwikkelde FPC (Free Pascal Compiler) en voor assembler NASM, de Netwide Assembler). Beide zijn in de SuSE distributie in ieder geval opgenomen. Verder zijn er debuggers en ontwikkelomgevingen voor deze talen beschikbaar. Al deze assemblers, compilers en hulpmiddelen worden uitgebracht onder de GPL. Voor programmeurs in een van deze talen is het leven met Linux dus niet moeilijk en kost niet veel.

Ook voor Basic programmeurs is er best wel het een en ander beschikbaar, maar voor kwaliteit wordt in dit geval een prijs betaald. Nu ja, dat waren we onder DOS en Windows toch al gewoon, dus voor overstappers verandert er wat dat betreft niet veel. 

Het is overigens niet zo dat alles geld kost. Bij Basic kunnen we onderscheiden tussen interpreters en compilers. De interpreters zijn allemaal gratis. Voor de compilers moet worden betaald. De prijs loopt uiteen van circa f 50,- tot circa f 1000,-. 

Compilers
Er zijn compilers van de Amerikaanse firma's TrueBasic, OmniBasic en Basmark, en er is Qb2c van Mario Stipcevic uit Kroatie. De compilers van Basmark compileren naar machinecode. Die van TrueBasic compileren naar een tussencode die bij het draaien in machinecode wordt omgezet. TrueBasic programma's werken daardoor noodzakelijkerwijs trager dan naar naar machinecode gecompileerde programma's, maar ze zijn wel weer sneller dan zuivere interpreters. De compilers van OmniBasic en Qb2c passen een interessant concept toe: ze vertalen de basic code naar C, en laten het dan aan de C compiler over om daarvan machinecode te maken. Dat heeft het grote voordeel dat alle optimalisatie ook aan de C compiler kan worden overgelaten. Het is bekend dat de GNU C compiler zeer efficint is en compacte snelle code aanmaakt. Bovendien biedt dit concept de mogelijkheid de Basic code op eenvoudige wijze met C code aan te vullen. Zelfs assembler is mogelijk.

Twee van de compilers zijn er op gericht om MSDOS QuickBasic code onder Linux te kunnen vertalen: QuickBasic van Basmark, en Qb2c van Mario Stipcevic. QuickBasic is daarin tamelijk compleet, maar mist wel de grafische commando's. Qb2c is veel minder compleet. Het mist een aantal commando's en functies die toch niet zouden mogen ontbreken zoals GET en PUT voor files, STRING$ en INSTR. Anderzijds heeft het wel grafische commando's (voor X- windows), zelfs meer dan MSDOS QuickBasic. Er is een aanmerkelijk prijsverschil: Mario Stipcevic vraagt $25,- voor Qb2c, terwijl QuickBasic van Basmark $195,- kost.

TrueBasic is een produkt van de oorspronkelijke bedenkers van de taal Basic: Thomas E. Kurtz en John G. Kemeny. De taal is in hoge mate compatibel met ANSI Basic en is zeer uitgebreid, ook grafisch. Voor Linux is op het ogenblik alleen nog maar een demo versie beschikbaar, maar productieversies komen binnenkort uit. Een daarvan zal gratis zijn, maar ik vermoed dat zijn functionaliteit beperkt is. Misschien is het niet meer dan een interpreter. De andere versies hebben met de prijs toenemende functionaliteit en toebehoren: $39.95, $195,- en $495,-. Ze zijn allemaal ook goed toegerust voor GUI programmering. TrueBasic is ook beschikbaar voor onder meer Windows, OS/2 en MacOS.

De beide andere compilers, OmniBasic, en Xbasic van Basmark, hebben een eigen Basic dialect dat voor de gebruikelijke commando's en functies overigens  redelijk standaard is. 

OmniBasic heeft twee versies waarvan de duurste ook geschikt is voor GUI programmering. Daarbij kan ondermeer het gratis Xforms pakket, waarmee grafische "forms" kunnen worden ingevuld, worden gebruikt. OmniBasic is ook beschikbaar voor Windows, MSDOS en OS/2. Onder die besturingssystemen maakt het gebruik van ontwikkelomgevingen die de Unix ontwikkelomgeving emuleren. De ontwikkelomgeving voor Windows is Mingw32, en die voor DOS is Djgpp. Prijzen van Omnibasic zijn $29,- en $89,-.

Xbasic van Basmark biedt een complete GUI ontwikkelomgeving voor een bedrag van $195,-, tevens beschikbaar voor Windows.

Evaluatieversies van alle compilers kunnen van hun internet site worden gedownload. Die van Qb2c is volledig functioneel, maar een iets oudere versie. Alle andere hebben min of meer belangrijke beperkingen, zoals een maximum aantal programmaregels, de onmogelijkheid om executables te maken, of het ontbreken van hulpmiddelen. De evaluatieversie van QuickBasic heeft wel de belangrijkste beperking: na een bepaalde tijd werkt hij eenvoudig niet meer. Van XBasic is alleen voor Windows een evaluatieversie beschikbaar.

Interpreters
Voor Linux heb ik vijf Basic interpreters kunnen vinden:

* BwBasic (Bywater Basic),
* Yabasic (Yet Another Basic),
* Stbasic (Structured Basic),
* Chipmunk Basic, en
* Zen.

Al deze interpreters zijn van het internet te downloaden.

BwBasic, YaBasic en StBasic worden uitgebracht onder de GPL. Hun source code is dan ook vrijelijk beschikbaar. U kunt dus uw eigenBasic interpreteer verder ontwikkelen, en er mogelijk zelfs een echte compiler van maken! Wel moet u dan natuurlijk de taal waarin ze geschreven zijn beheersen. Voor BwBasic is dat C, voor StBasic Pascal en C, en voor Yabasic Flex, Bison en C. Tja..., t'is wel een uitdaging! Chipmunk Basic en Zen zijn freeware zonder dat de source code beschikbaar is. 

Op StBasic na zijn al deze interpreters voor meerdere besturings-systemen beschikbaar, waaronder Windows (Chipmunk Basic en Yabasic), DOS (BwBasic) en MacOS (Chipmunk Basic). Dat is plezierig bij het overbrengen van eigen programma's van het ene besturingssysteem naar het andere. 

Behalve Zen werken ze allemaal zowel interactief als in batch. Zen werkt alleen in batch. Yabasic en Zen programma's kunnen zelfstandig executable worden gemaakt mits ze op hun eerste regel een verwijzing naar de interpreteer bevatten, net zoals een shell script. Chipmunk basic eist in interactieve modus regelnummers. StBasic programma's kunnen niet van de command line worden gestart.

Yabasic is de meest ouderwetse Basic in die zin dat het geen gestructureerde elementen als  op zich zelf staande subroutines en functies kent. Daartegenover staat dat het de enige is die zowel onder Linux als onder Windows ook werkende grafische commando's biedt. 

Ook StBasic biedt grafische commando's, maar het maakt daarbij gebruik van een externe grafische library, en het werkt alleen maar in 256-kleuren modi. Dat is toch wel wat beperkt.

Zen biedt de meest gestructureerde basic. Het werkt echter niet onder RedHat Linux. Waarom is mij niet bekend. Onder SuSE werkt het wel.

De BGG biedt alles op schijf
Alle interpreters en evaluatieversies van compilers voor Linux, DOS en Windows worden door de BGG op schijf aangeboden. Aan Omnibasic voor Linux is het XForms pakket toegevoegd, en Omnibasic voor Windows en voor DOS gaan vergezeld van de ervoor benodigde ontwikkelomgevingen Mingw32 resp. Djgpp. Djgpp is daarbij flink ingedikt. Het totale pakket met inbegrip van uitgebreide documentatie heeft gezipt een omvang van zo'n 15Mb. Dat is teruggebracht naar circa 3  4Mb op 3 schijven, voldoende om met Omnibasic te kunnen werken. Wilt u meer dan zult u dat zelf van de Djgpp site moeten downloaden.

Voor wat betreft Linux zijn we ervan uitgegaan dat de benodigde ontwikkelomgeving is genstalleerd.  Dat is nodig voor met name Omnibasic en Qb2c. De standaard installatie van de Linux distributies omvat normaliter niet de ontwikkelomgeving. Die zult u dus apart moeten installeren. Het gaat dan om:

* de GNU C compiler en bijbehorende files
* libraries voor de C compiler
* include files voor de kernel
* de GNU binutils, met assembler en linker
* het GNU make programma
* X11 development package met libraries, include files etc.

Niet nodig maar wel nuttig:

* de GNU debugger gdb en zijn X frontend
* SVGA library
* de ncurses library

Heeft u vragen over bovenstaand artikel en u beschikt over e-mail dan kunt u Hans Lunsing een mailtje sturen. <jlunsing@doge.nl> of <j.lunsing@hccnet.nl>


