BASIC

programovací jazyk

BASIC či basic [bejzik][1] je rodina programovacích jazyků vysoké úrovně sloužících jako jednoduchý nástroj pro výuku programování. Jazyk byl navržen v roce 1964 na americké Dartmouthské univerzitě a pro snazší srozumitelnost byla použita klíčová slova jazyka vycházející z běžné angličtiny. Název BASIC je zkratkou anglických slov Beginner's All-purpose Symbolic Instruction Code, česky „univerzální kód symbolických instrukcí pro začátečníky“.

V 80. letech našel BASIC široké uplatnění na domácích mikropočítačích. Ve svých prvních verzích nepodporoval volání funkcí (ke skokům v programu sloužil příkaz goto, tato koncepce se později ukázala jako nevyhovující) a jednotlivé řádky kódu musely být číslovány. Pozdější verze už poskytovaly plnohodnotný strukturovaný návrh a některé současné verze dokonce umožňují objektově orientované programování (Visual Basic, Gambas).

Historie

editovat

Před polovinou 60. let 20. století byly počítače velmi drahé sálové stroje, které obvykle vyžadovaly vlastní dedikované místnosti a klimatizaci. Byly využívány velkými společnostmi k plnění vědeckých a komerčních úloh. Uživatelé odevzdávali své úlohy na děrných štítcích nebo podobných mediích počítačovým operátorům a výsledky vypočtené počítačem sbírali později. Jednoduché dávkové zpracování však umožňovalo vykonávat pouze jednu úlohu v daný čas. Další úlohy pak následovaly. Během 90. let 20. století se staly dostupnějšími rychlejší a levnější počítače, stále se však jednalo o sálové počítače. Tyto počítače přišly s novou technikou umožňující sdílení času, takže procesor a operační paměť mohlo využívat více uživatelů nebo procesů. V takovém systému operační systém přiděluje jednotlivým procesům procesorový čas a přepíná mezi nimi. Každý proces se chová tak, aby využil počítač na plno, ačkoliv čas pro vykonání jeho operace stoupá. Časové sdílení bylo použito se záměrem spuštění několika dávkových procesů současně.

Časové sdílení umožňovalo používat počítače několika nezávislým uživatelům, kteří pracovali s terminálem, který byl vybaven klávesnicí a teletype tiskárnou, později i monitorem. Počítače byly dostatečně rychlé, aby dokázaly rychle reagovat na požadavky všech uživatelů. Oblastí intenzivního výzkumu v 60. a 70. letech 20. století se stala potřeba pro optimalizaci interaktivního časového sdílení pomocí interpretů příkazové řádky a programovacích jazyků.

Původní jazyk BASIC byl navržen v roce 1964 pány John Kemeny a Thomas KurtzDartmouthské univerzityHanoveru v americkém státě New Hampshire a implementován týmem Dartmouthských studentů pod jejich vedením. Zkratka "BASIC" pochází z nepublikované práce Thomase Kurtze. BASIC byl navržen tak, aby bylo umožněno studentům psát programy pro sálové počítače pro systém Dartmouth Time-Sharing. Byl určen speciálně pro méně technické uživatele, kteří neměli nebo nechtěli mít nějaké související matematické znalosti. Schopnost používat počítač pro podporu výuky a výzkumu byla v té době docela nová.

Jazyk byl založen na FORTRAN II s některými vlivy ALGOL 60 a dodatky, aby byl vhodný pro systémy se sdílením času. Zpočátku se BASIC soustředil na podporu jednoduché matematické práce s podporou aritmetiky matic. Původně byl jazyk implementován jako dávkový. Funkce reprezentované textovými řetězci byly doimplementovány v roce 1965.

Návrháři jazyka se rozhodli uvolnit kompilátor k dispozici zdarma, takže jazyk se mohl hodně rozšířit. (V roce 1960 se software stal zpoplatněnou komoditou, do té doby byl poskytován zdarma jako služba s velmi drahými počítači, obvykle k dispozici pouze k pronájmu.) BASIC byl také k dispozici vysokým školám v oblasti Hannoveru. Bylo vyvinuto značné množství úsilí pro podporu tohoto jazyka. V následujících letech se objevily další dialekty BASICu; Keménův a Kurtzův původní BASIC dialekt se stal známý jako Dartmouth BASIC. Je prodáván pod komerčním názvem TrueBASIC.

Rozšíření na minipočítače

editovat

Znalost relativně jednoduchého jazyka BASIC se rychle rozšířila po celém počítačovém světě. BASIC byl implementován mnoha výrobci. BASIC se stal poměrně populární v nových minipočítačích, jako jsou DEC, PDP série a DGN. BASIC byl také hlavním jazykem pro HP čas-sdílející systémy v pozdních 60. a raných 70. letech 20. století, kde byl jazyk implementován jako interpret. Také byl v této době portován do operačního systému Pick, kde kompilátor renderuje do pseudoinstrukčního kódu, který je možné dále interpretovat virtuálním strojem.

Během tohoto období bylo napsáno několik jednoduchých počítačových her v BASICu, nejvíce pozoruhodná byla Mike Mayfieldův Star Trek. Řada z nich byla shromážděna zaměstnanci David H. Ahl a publikovány v novinkách, které shromažďoval. David H. Ahl později shromáždil řadu z nich do knižní formy „101 BASIC Computer Games“, která byla poprvé publikována v roce 1973. Během stejného období se Ahl podílel na vytvoření malého počítače pro použití ve vzdělávání, rané formy osobního počítače.

Ukázka kódu

editovat

Typický program Hello world vypadá v BASICu takto:

10 PRINT "Hello, world!"
20 END

Následují dva příklady, které demonstrují na stejné úloze rozdílnost nestrukturovaného a strukturovaného programování.

Původní, nestrukturovaný BASIC (konkrétně Applesoft BASIC):

 10 INPUT "Zadejte svoje jmeno: "; U$
 20 PRINT "Ahoj "; U$
 25 REM
 30 INPUT "Kolik hvezdicek chcete: "; N
 35 S$ = ""
 40 FOR I = 1 TO N
 50 S$ = S$ + "*"
 55 NEXT I
 60 PRINT S$
 65 REM
 70 INPUT "Chcete vic hvezdicek? "; A$
 80 IF LEN(A$) = 0 THEN GOTO 70
 90 A$ = LEFT$(A$, 1)
100 IF (A$ = "A") OR (A$ = "a") THEN GOTO 30
110 PRINT "Nashledanou ";
120 FOR I = 1 TO 200
130 PRINT U$; " ";
140 NEXT I
150 PRINT

„Moderní“ strukturovaný BASIC (konkrétně QBasic):

INPUT "Zadejte svoje jmeno"; UserName$
PRINT "Ahoj "; UserName$
DO
   INPUT "Kolik hvezdicek chcete"; NumStars
   Stars$ = ""
   Stars$ = REPEAT$("*", NumStars)   ' <- ANSI BASIC
   --nebo--
   Stars$ = STRING$(NumStars, "*")   ' <- MS   BASIC
   PRINT Stars$
   DO
      INPUT "Chcete vic hvezdicek";  Answer$
   LOOP UNTIL Answer$ <> ""
   Answer$ = LEFT$(Answer$, 1)
LOOP WHILE UCASE$(Answer$) = "A"
PRINT "Nashledanou ";
FOR I = 1 TO 200
   PRINT UserName$; " ";
NEXT I
PRINT

Dialekty jazyka BASIC

editovat

Interpretované

editovat
  • QBasic byl standardně dodáván se systémem MS-DOS verze 5 a vyšší (včetně Windows 95) a jednalo se o omezenou verzi komerčního produktu QuickBASIC 4.5. Navzdory tomu, že neobsahoval kompilátor a měl některá další omezení, byl jednou z nejoblíbenějších verzí a dodnes se okolo něj sdružuje komunita uživatelů.
  • Gambas vychází z jazyka Visual Basic, jedná se však o open source projekt (pod GPL), přinášející výhody Visual Basicu uživatelům systému GNU/Linux. Ačkoli není na úrovni zdrojových kódů se zmíněným Visual Basicem kompatibilní, jeho syntaxe je velmi podobná. Gambas pracuje s grafickým rozhraním Qt. Jeho autorem je Benoît Minisini, který jej vyvíjí už od roku 1999.
  • Basic4GL je Basic pro Windows zaměřený na OpenGL. Je free, ale ne open source. Navzdory tomu, že jde o interpret, umí vytvářet samostatné exe soubory sestávající z „virtual machine“ a vlastního programu. K nim je možné připojit i další soubory, které program načítá a vše zkomprimovat pomocí UPX. V současnosti (10/2005, v2.3.3) v něm lze používat mnoho funkcí OpenGL. Má vlastní podporu 2D spritů a síťový engine. Pro textury a sprity umí načíst více různých formátů. K nevýhodám zatím patří zvuková stránka (přehrává jen jeden soubor *.wav současně) a omezení práce se soubory. Jeho autorem je Tom Mulgrew, který jej vyvíjí od roku 2003.

Kompilované

editovat
  • FreeBASIC je open source kompilátor, distribuovaný pod GPL. Je navržen tak, aby zachovával zpětnou kompatibilitu s programem QuickBASIC, možnosti jazyka však ještě více rozšiřuje. Dostupné jsou i knihovny pro GTK, Allegro nebo OpenGL. V současné době je FreeBASIC dostupný pro systémy Linux, DOS a Microsoft Windows.
  • QuickBASIC byl komerčním produktem společnosti Microsoft, jehož první verze se objevila v létě roku 1985. Přinášel lepší programové struktury, zrušil nutnost číslování řádků a byl dodáván s na svou dobu špičkovým vývojovým prostředím. Poslední verzí byl QuickBASIC 4.5, vydaný v roce 1988.

Další verze

editovat

Verzí BASICu za léta jeho existence vznikla celá řada. Některé z nich jsou:

AmigaBASIC, Applesoft BASIC, Atari BASIC, Blitz BASIC, Business Basic, Sinclair BASIC, Commodore BASIC, DarkBASIC, Dartmouth BASIC, GW-BASIC, KBasic, Microsoft BASIC, PowerBASIC, PureBasic, RapidQ, REALbasic, SmallBASIC, Tiny BASIC, True BASIC, Turbo BASIC, wxBasic, Yabasic, Omikron BASIC.

Jazyky z BASICu odvozené:

VBScript

Některé rozdíly mezi dialekty BASICu

editovat
  • různé dialekty BASICu používají pro nastavení polohy tisku na obrazovku příkazové různé příkazové konstrukce, např. PRINT AT x,y, PRINT @ n nebo LOCATE x,y,[2]
  • Atari BASIC neumožňuje specifikovat text dotazu v příkazu INPUT,[3]
  • BASIC počítačů Commodore 64, Commodore VIC 20, osmibitových počítačů Atari, počítačů Apple II a BASIC kalkulaček TI99 nezná příkaz CLS, místo něho je nutné použít konstrukci PRINT "CLR" (Commodore, Atari), příkaz HOME (Apple) a CALL CLEAR (TI99),[3] u počítačů Atari je také možné použít symbolický příkaz s ASCII kódem 125 (symbol se nenachází ve standardním ASCII),
  • BASIC počítačů Commodore 64, Commodore VIC 20, osmibitových počítačů Atari, počítačů Apple II a BASIC kalkulaček TI99 nezná funkci INKEY$, místo ní je nutné použít příkaz GET (Commodore, Apple), příkaz INPUT[pozn. 1] (Atari) a CALL KEY (TI99),[3]
  • BASIC počítačů Timex Sinclar 2068, osmibitových počítačů Atari a BASIC kalkulaček TI99 nezná funkci MID$, místo funkce MID$(A$(y,x)) je nutné použít konstrukci A$(x TO y) u počítačů Timex Sinclair 2068, A$(x, y) u osmibitových počítačů Atari a funkci SEG$(A$, x, y) u kalkulaček TI99.[3]

Poznámky

editovat
  1. Aby příkaz INPUT fungoval jako ekvivalent funkce INKEY$, musí být nejprve velikost použité proměnné nadimenzovaná příkazem DIM na velikost jedna.

Reference

editovat
  1. Internetová jazyková příručka [online]. Praha: Ústav pro jazyk český AV ČR, v. v. i, 2008–2024 [cit. 2020-01-11]. Heslo basic. 
  2. HARTNELL, Tim. Giant Book of Computer Games. New York: Ballantine Books, 1983, 1984. 389 s. Dostupné online. ISBN 0-345-31609-6. Kapitola Introduction, s. 1–4. (anglicky) [nedostupný zdroj]
  3. a b c d HARTNELL, Tim. Giant Book of Computer Games. New York: Ballantine Books, 1983, 1984. 389 s. Dostupné online. ISBN 0-345-31609-6. Kapitola BASIC Conversion Chart, s. 387–388. (anglicky) [nedostupný zdroj]

Související články

editovat

Externí odkazy

editovat
  NODES
games 3
games 3
HOME 1
Idea 1
idea 1
Intern 1
mac 2
OOP 2
os 55
text 5
visual 8