Neznám natolik rozporuplný jazyk, jakým je v očima programátorů nahlíženo právě na BASIC. Mnozí programátoři ho předem zatracují a zjednodušují. Jiní ho považují za výtečný jazyk, v němž v mžiku udělají mnoho. Další pak většinou z neznalosti nechává chladnými.
Ať tak, či onak, pravdou zůstává, že historie jazyka BASIC je velmi bohatá a jeho kořeny sahají hluboko do minulosti. Konkrétně do roku 1963, v kterém dvojice John Kemeny a Thomas Kurtz navrhli původní verzi jazyka BASIC, kterou vzápětí pod jejich vedením implementoval tým studentů z Dartmouthu na sálovém počítači GE-256.
Cíle návrhu jazyka, které si autoři v počátku stanovili a jimiž se nejrůznější modifikace jazyka vyznačují dodnes, byly především jednoduchost s ohledem na začínající uživatele, obecnost a mnohoúčelovost, interaktivita, rozšiřitelnost vzhledem k potřebám pokročilých uživatelů, naprosté odstínění uživatelů od operačního systému a hardwaru, rychlá odezva pro malé programy a srozumitelné reportování chyb. Jazyk byl částečně založen na jazyku FORTRAN II a ALGOL 6O.
Původní BASIC získal označení podle místa vzniku jako Darmouth BASIC. BASIC nejen že v překladu znamená „základní“, ale jedná se o akronym Beginner’s All-purpose Symbolic Instruction Code, což by se dalo volně přeložit jako „univerzální jazyk symbolických instrukcí pro začátečníky“.
Kompilátor Dartmouth BASICu byl odpočátku poskytován zdarma, a tak se jazyku brzy dostalo širokého rozšíření. S nástupem minipočítačů nasadila BASIC společnost Digital Equipment Corporation do série minipočítačů PDP (Programmed Data Processor) a společnost Data General do minipočítače Data General Nova. V těchto minipočítačích byl jazyk implementován jako interpretr, namísto kompilátoru.
S nástupem mikropočítače Altair 8800 společnosti Micro Instrumentation and Telemetry Systems (MITS) v roce 1975 se BASIC ukázal velmi vhodným jazykem pro méně výkonné počítače. Jeden z prvních BASICů, který se na mikropočítači Altair 8800 objevil, byl Tiny BASIC, původně navržený Li-Chen Wangem. V témže roce pak zakladatelé nově vznikající společnosti Microsoft, Bill Gates a Paul Allen, vytvořili Altair Basic. O něco později pak z Altair BASICu vzešel Microsoft BASIC, který se v miliónech kopií stal velmi úspěšným. Microsoft BASIC se dokonce stal standardním jazykem počítače Apple II.
U mnoha počítačů tehdejší doby se BASIC umísťoval přímo do paměti ROM, a tak počítače startovaly přímo do BASICu. „Pamětníci“ dob ne až tak vzdálených si jistě s určitou nostalgií vzpomenou na mikropočítače ZX Spectrum, Atari, Comodore, Sharp, PMD 85, IQ 151 a další, které taktéž měly BASIC umístěný přímo v paměti ROM.
V osmdesátých letech vytvořil Microsoft pro operační systémy MS-DOS, PC-DOS několik verzí BASICU, které zahrnují GW-BASIC, BASICA a Quick BASIC. Společnost BORLAND pak v roce 1985 vytvořila Turbo BASIC, z které se časem vyvinul známější PowerBASIC.
Za další mezník v historii jazyka BASIC lze považovat léta 1987-1988, na jejichž pomezí vznikal velmi populární Visual Basic. Za současného trvání Visual Basicu vznikl Visual Basic for Application, který své použití nalezl v kancelářském balíku Microsoft Office. V roce 2001 byl světu představen Visual Basic .NET, který je považován za další významnou verzi tohoto úspěšného jazyka.
V souvislosti s Linuxem se dnes můžeme s jazykem BASIC aktivně setkat v kancelářském balíku OpenOffice.org nebo multiplatformním open-source kompilátoru FreeBASIC. A dále pak ve velmi úspěšném a pokročilém jazyku GAMBAS, kterému jsme se již podrobněji věnovali v únorovém čísle LinuxEXPRESu z roku 2005.
GAMBAS (Gambas Also Mean BASic) neboli do češtiny volně přeloženo „GAMBAS také znamená BASIC“, je jazykem a vývojovým prostředím, které z velké části vytváří Francouz Benoît Minisini.
Představit objektivně na několika málo řádcích syntaxi a základy jazyka BASIC v tak širokém spektru jeho verzí a modifikací je bohužel téměř nemožné, a tak si pouze řekněme, že zápis kódu je velmi jednoduchý a srozumitelný, jak ostatně bude vidět z uváděných příkladů. Z počátku se jednotlivé řádky jazyka číslovaly. Později se číslování vytratilo. Z řádkového a procedurálního jazyka pak BASIC došel i k objektovému přístupu.
Dle slov autora je GAMBAS svobodný vývojový nástroj založený na interpretru jazyka Basic s objektovým rozšířením tak, jak je tomu u Visual Basicu. S Gambasem můžete rychle navrhnout GUI své aplikace, využívat MySQL, nebo PostgreSQL databáze, řídit KDE aplikace s DCOP (Desktop COmmunication Protokol) a mnoho dalšího.
Zápis kódu v jazyce Basic si dnes demonstrujeme na dvou příkladech. První příklad reprezentuje zápis v klasickém řádkovém BASICu a na obrazovku vypíše již tradiční pozdrav Hello World! Druhý příklad ukazuje na výpočtu faktoriálu program zapsaný ve Visual Basicu.
Hello World!:
10 PRINT "Hello World!"
Faktoriál:
Factorial function
Public Function Factorial(ByVal Factor As Byte) As Variant
If Factor = 0 Then
Factorial = 1
Else
Factorial = Factor * Factorial(Factor - 1)
End If
Exit Function
End Function
Private Sub Form_Load()
MsgBox Factorial(3)
End Sub
Odkazy k BASICu:
FreeBASIC
Gambas
Příklady kódu Visual Basicu a Visual Basicu .NET
Článek vyšel původně v časopisu LinuxEXPRES. Autor článku Lukáš Faltýnek.
Článek je uveřejněn s GNU FDL licencí (anglicky).
Compile Error:
Expected End Function
Zase chyba :-)))
…těším se na další pěkný článek od Kláry. Tentokrát tam může zahrnout i Borise a Hurriho, kteří se na odhalení chyby podíleli…
mv: lufa ti určitě vysvětlí, že to chyba vlastně není, ale super optimalizace
mv: Díky, chyba v kódu upravena.
boris: ee, mv skládám díky ;-).
Hmmmmm, much better!
Fakt dobré kometáře… nespletli jste si stráku? chytráci
mám na tebe prosbu, jelikož jsem antitalent ne PC a podob., potřeboval bych od tebe pomoc s jazykem Basic.
V jedny hře je úkol:
en v tomto jazyce tak muze vzniknout podobne neprehledny „spagetti“ kod, jako je ten nasledujici – presto jsou v nem ukryty jednoznacne souradnice cache:
01 GOTO 50
02 B$=“program “
03 C$=A$+B$
04 PRINT C$
05 RANDOMIZE TIMER
06 R%=1
08 R%=R%+INT(RND*10)
10 REM
12 GOTO 860
14 A$=“random “
16 B$=“number “
18 C$=A$+B$
20 PRINT C$
22 GOTO 27
24 REM
26 REM
27 PRINT R%
28 GOTO 212
30 REM
50 A$=“This “
60 GOTO 02
210 REM
212 A$=“and terminates “
214 B$=“:-) !“
216 C$=A$+B$
218 PRINT C$
220 END
850 REM
860 A$=“only “
870 B$=“prints “
880 C$=A$+B$
890 PRINT C$
900 GOTO 14
a ja to nezvladnu. Tímto tě prosím o pomoc a neboj se, že z mé strany jde o nepoctivou hru.
předem díky
ty,ty,ty
Ty, ty, ty: Týýý jo super. Můžeš prosím hodit odkaz i na stránku na geocaching.com. Díky. Večer si ten Basic kód přečtu a dám vědět.
ty,ty,ty:
Mám to!
49°10’38.894″N, 14°22’51.996″E
Jé, já se spletl. Je to tady:
50°4’27.115″N, 17°9’30.561″E
hurri: Díky, teď už mohu jen ověřovat :-).
Tak a mám to:
N 50° 02.860 E 14° 27.212