Bude JavaScript dnešním BASICem?

Nástup domácích počítačů v 80. letech doprovázel BASIC. Tento jazyk, zatracovaný a proklínaný generacemi učitelů a teoretiků, měl na rozšíření počítačů do domácností lví podíl a setkal se s ním snad každý, kdo se v té době ke klávesnici posadil. Ať se nám to líbí nebo ne, byl tehdy symbolem prvního kontaktu s programováním.

BASIC má za sebou téměř padesát let existence – první návrh vznikl už v roce 1963. Vycházel z jazyků FORTRAN a ALGOL a záměrem jeho tvůrců bylo nabídnout jednoduchý vysokoúrovňový programovací jazyk. Měl být použitelný pro různé druhy aplikací, měl být interaktivní, jednoduchý, ale přitom s poměrně silnými možnostmi pro pokročilé uživatele, a měl odstínit člověka od hardware a operačního systému (nezapomínejme, že byla doba velkých sálových počítačů). Všechno tohle BASIC splňoval.

Samotný interpret jednoduchého dialektu BASICu se vešel doslova do pár kilobajtů, proto byl jazykem první volby, po kterém sáhli tvůrci osobních počítačů, když hledali vhodný jazyk pro své stroje, postavené na prvních osmibitových mikroprocesorech. BASIC byl naprogramován pro stroj Altair 8800 v roce 1975 (mimochodem není bez zajímavosti, že Altair Basic napsali dva mladíci, Gates a Allen, a vydali ho pod svou značkou Micro-Soft; další příběh je už historie). BASIC byl v prvních počítačích TRS, byl v Commodore PET, byl v Apple II, Sinclair ho použil ve svých strojích řady ZX, byl v počítačích Atari, Acorn jej použil v počítači BBC… Dalo by se říct, že pokud jste si koupili domácí počítač v té době, měli jste téměř jistotu, že v něm bude BASIC (pomíjím „klon“ ZX81 s názvem Jupiter ACE – ten měl zabudovaný jazyk FORTH). A také jste měli jistotu, že váš BASIC bude nekompatibilní s jakýmkoli jiným BASICem na jakékoli jiné značce počítačů. Zkrátka co BASIC, to unikát, i když základní rysy zůstávaly stejné.   

BASIC byl sice jazyk vyšší úrovně, ale měl GOTO, a GOTO je, jak vám vysvětlí každý programátorský teoretik, ztělesněné zlo. GOTO totiž svádí k programátorskému přístupu, zvanému „sem prostě fláknu GOTO a bude to!“ Takový dobře prorostlý program plný skoků kamsi, který vytvořil nadšený začátečník, je odstrašující příklad, u něhož se snad nelze odvolat ani na princip „no a co, hlavně že to funguje!“

Jazyk BASIC tak v osmdesátých letech asistoval u prvních krůčků většiny programátorů. Minimálně LOAD, RUN a POKE poznali snad všichni. I ti, kterým počítač koupili rodiče, protože „to bylo lepší než kdyby se kluk chytnul party“ a měli k němu jen kazety plné her, čichnuli k programování, a pokud k tomu měli chuť a vlohy, stačilo napsat PRINT 1+1 – a stroj odpověděl tak, jak mladý budoucí programátor čekal. Začít programovat bylo v té době tak snadné… Je tedy pravda, že spousta lidí brzy poznala, že si s LOAD a RUN vystačí, že nepotřebují programovat. Ale ti, co si chtěli programování zkusit, měli velmi jednoduchý způsob, jak na to.

BASIC je špatný

Ano, je špatný v mnoha ohledech. Jeho verze ze 70. let nejsou rozhodně příkladem jazyka, který by se měli učit budoucí programátoři a v němž by měli získávat své návyky. Pamatuji se na intenzivní boje zastánců Pascalu s pragmatiky, co se oháněli BASICem. A i když verze vznikající od poloviny 80. let už připomínaly moderní jazyky (měly funkce, procedury, cykly WHILE a UNTIL, složitější větvení, nemusely mít číslované řádky, měly lokální proměnné, zkrátka všechno to, co je dnes samozřejmostí a co podporuje správně strukturované programování – za mnohé jmenuji alespoň BetaBASIC ), stigma GOTO se s nimi táhlo dál.

Na PC byl BASIC zpočátku také jazykem číslo 1 (a stopy po něm najdete dodnes ve voláních BIOSu), s DOSem se dodával až do jeho posledních verzí, ale byl na pokraji zájmu, protože nastoupily překladače Pascalu a C. BASIC se tak pomalu dostával do pozadí a ztrácel se, až se téměř vytratil. Microsoft stále, věrný své tradici, BASIC nabízí – strukturovaný, objektový a vůbec poměrně přijatelný. Stejně tak existují komerční verze překladačů BASICu – True BASIC, RealBasic, uživatelům Linuxu bude povědomý např. Gambas či FreeBasic. BASIC tedy žije dál, i když na okraji zájmu, a už rozhodně není to první, co člověk uvidí na obrazovce.


Zdroj: Wikimedia Commons

Vážně…?

Spolu s BASICem odešlo do ústraní i programování. Tedy abych to upřesnil – ne že by se neprogramovalo, ne že by programovat nešlo, ale programovací jazyk není už to první, co na počítači uvidíte. Ani to druhé. Jsou skryty kdesi v útrobách a „chtít si zkusit programovat“ dnes vyžaduje mnohem větší úsilí. Nejlépe jsou na tom zase uživatelé Linuxu, kterým stačí spustit konzoli a tam už nějaký ten Python, Perl či alespoň shell najdou…

Proč o tom píšu: Před nedávnem jsme se bavili se svým známým Tomášem, taky spectristou, o tom, že by chtěl svému, tuším osmiletému, synovi ukázat programování a zkusit, jestli ho to chytne. Ne ho zatěžovat teorií, jen zkusit, jestli by ho vůbec bavilo ovládat přímo počítač namísto postavy ve hře. „Jako byl za nás BASIC,“ povídal. „Víš, to bylo geniálně jednoduché. Sednul sis k tomu, během odpoledne sis napsal program na počítání objemu a povrchu kvádru, nadšeně jsi to ukázal rodičům, a pak se vidělo. Buď sis řekl Hm a nahrál hru, nebo jsi šel spát s tím, že zítra tam ještě doděláš výpočet objemu koule. A na tom se poznalo, jestli tě to chytlo, jestli máš programátorského ducha, jestli to je pro tebe výzva, nebo jestli to jde mimo tebe.“ A tím se dostal k tomu, že hledal v počítači BASIC, ale nenašel ho. „Nevíš, jestli tam je něco podobného, něco, v čem by si mohl napsat jednoduchý výpočet a druhý den nakreslit domeček z čar a třetí den zahrát melodii z BEEPů?“

No, upřímně, nevím o ničem. Rozumím co hledá: Hledá jednoduchý jazyk, který by byl interaktivní, snadno pochopitelný, s jednoduchou syntaxí a s jasnými chybovými hláškami. Zamítli jsme C („Missing semicolon on line 123“), zamítli jsme Pascal („Na Hello world potřebuješ půl stránky kódu“), Perl („jediný jazyk, kde zašifrovaný zdroják vypadá stejně jako nezašifrovaný“), zamítli jsme i „výukové“ jazyky Karel („A když se naučí Karla, kde to reálně použije?“) a Logo („pokus, jak pod průhlednou záminkou malování s želvou naučit děti LISP“). Snad Python…

S BASICem odešel snadný nástroj pro začátečníky, co „je všude“

Při té příležitosti jsem si uvědomil, že na webu máme jazyk, co je ve velmi podobné pozici jako tehdy BASIC. Je všude, je poměrně snadno pochopitelný – nebo si to mírně pokročilí alespoň myslí – má několik dialektů, někteří teoretici ho nesnáší, je hned „jednu úroveň pod stránkou“ (a dostat se k němu je stejné jako udělat BREAK a LIST)… Ne, není interaktivní, ale je alespoň snadno po ruce – v prohlížeči na dvě kliknutí myši. Pokud má být prohlížeč novým operačním systémem, novou aplikační platformou, pak je jeho BASICem JavaScript.

A já si při pohledu na něj říkám: Buďme rádi, mohlo to být horší. Nezačínáme s čísly řádků a není tam GOTO. 

Ale věřím, že Tomáš svůj „jazyk pro děti“ brzo najde; že je zkrátka potřeba, a proto vzniká. Ale nebude to v počítači, v operačním systému, ale spíš na webu. Třeba Processing – jednoduchý jazyk pro vizualizaci. Dokáže to kreslit, psát, reagovat na klávesy i pohyby myši. Syntaxe je jednoduchá, vychází z C a Javy, a přitom nezatížená spoustou balastu. A může to být napsané i v JavaScriptu. Nebo to může být samotný JavaScript s funkcemi pro Canvas, aby se malovalo. Nebo klidně i ten BASIC. A kruh se uzavře.

Bonusová otázka: Myslíte si, že ty vášně, které se vedou kolem operačních systémů, kdy se jednotlivé skupiny navzájem označují slovy vyjadřujícími hluboké pohrdání, časem změní ve vášně, s nimiž se budou rubat zastánci Firefoxu, Chrome, Opery, Safari a MSIE?

PS (dopsáno v 7:30): Díky všem za tipy na jazyky pro začátečníky a děti, co píšete do diskuse. Pokud znáte další, podělte se! Díky.

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 192

Přehled komentářů

kem Taky jsem hledal
Tisnovsky Re: Taky jsem hledal
atarist Re: Taky jsem hledal
Bambus Pascal
martin maly Re: Pascal
Baltik Re: Pascal
Jelzin Re: Pascal
Elektron112 Re: Pascal
Dana Re: Pascal
Tomixon Re: Pascal
Gormie Dnes už jsme trochu jinde
Scratch Re: Dnes už jsme trochu jinde
Tisnovsky Re: Dnes už jsme trochu jinde
blizzboz Re: Bude JavaScript dnešním BASICem?
MIloš Basic byl návrat k počátkům.
Honza nevim nevim
Pavel S Re: nevim nevim
ondra.novacisko.cz Re: nevim nevim
Satai Re: nevim nevim
Dan542 Re: nevim nevim
eL Re: nevim nevim
Petr Bohužel
Tomáš Herceg Re: Bohužel
Program Re: Bohužel
Mepho Re: Bohužel
Papouch basic je porad velmi rozsireny
krtek BlueJ
petin Re: BlueJ
Program Perl, BASIC a GOTO
Kamil Re: Perl, BASIC a GOTO
Satai Re: Perl, BASIC a GOTO
Kamil Re: Perl, BASIC a GOTO
Pavel S Re: Perl, BASIC a GOTO
Kamil Re: Perl, BASIC a GOTO
bar SmallBasic
edmund Doporučuji small basic
edmund Re: Doporučuji small basic
balki Re: Doporučuji small basic
kem Re: Doporučuji small basic
Ladislav Toral Basic
Vikturek Re: Bude JavaScript dnešním BASICem?
Biktop Re: Bude JavaScript dnešním BASICem?
Pavel S Kojo
Satai Re: Kojo
Pavel S Re: Kojo
Satai Re: Kojo
Pavel Re: Kojo
Tisnovsky Re: Kojo
Aleš Roubíček Re: Kojo
Tisnovsky Re: Kojo
Radovan Re: Kojo
Karel Smalltalk - Squeak
Pavel S Re: Smalltalk - Squeak
Biktop Re: Smalltalk - Squeak
Pavel S Re: Smalltalk - Squeak
Biktop Re: Smalltalk - Squeak
Pavel S Re: Smalltalk - Squeak
Josef Richter Re: Smalltalk - Squeak
mpro Re: Smalltalk - Squeak
Tisnovsky Re: Smalltalk - Squeak
Aleš Roubíček Re: Smalltalk - Squeak
Pavel Re: Smalltalk - Squeak
Aleš Roubíček Re: Smalltalk - Squeak
Pavel S Re: Smalltalk - Squeak
Yarda1 Třeba GWBASIC IMHO pořád funguje.
Tisnovsky Re: Třeba GWBASIC IMHO pořád funguje.
Cejvik PowerShell
Pavel S Arduino
Biktop Re: Arduino
Pavel S Re: Arduino
Biktop Re: Arduino
Pavel S Re: Arduino
Ruby Ruby
Biktop Re: Ruby
Ruby Re: Ruby
blizzboz Re: Ruby
Biktop Re: Ruby
blizzboz Re: Ruby
akillah.trillah Re: Ruby
blizzboz Re: Ruby
Jiří Knesl Re: Ruby
blizzboz Re: Ruby
Pavel Křivánek Re: Ruby
blizzboz Re: Ruby
Pavel Křivánek Re: Ruby
Jiří Knesl Re: Ruby
akillah.trillah Re: Ruby
podlesh Re: Ruby
broukoid Re: Ruby
Biktop Re: Ruby
blizzboz Re: Ruby
logik Re: Ruby
Honza Re: Ruby
JaGa Freebasic
Pavel S Scratch
Tom22 Re: Scratch
Mintaka Re: Scratch
Pavel Re: Scratch doporucuji
Mr. Cidermaster HyperCard
swosh jquery
swosh Re: jquery
Svoro A co tak VB Script (teda ak mate win)
pas Flash
Frettie Commons a autorství
Martin Malý Re: Commons a autorství
Frettie Re: Commons a autorství
Pavel Křivánek Karel
Josef Richter Ruby má hezkou syntaxi
Biktop Re: Ruby má hezkou syntaxi
balki Re: Ruby má hezkou syntaxi
Josef Richter Re: Ruby má hezkou syntaxi
Biktop Re: Ruby má hezkou syntaxi
Josef Richter Re: Ruby má hezkou syntaxi
Honza Re: Ruby má hezkou syntaxi
Josef Richter Re: Ruby má hezkou syntaxi
Honza Re: Ruby má hezkou syntaxi
Josef Richter Re: Ruby má hezkou syntaxi
akillah.trillah Re: Ruby má hezkou syntaxi
keff Re: Ruby má hezkou syntaxi
Josef Richter Re: Ruby má hezkou syntaxi
Murdej Jak nahradit GOTO ...
Murdej Re: Jak nahradit GOTO ...
Martin Malý Re: Jak nahradit GOTO ...
Biktop Re: Jak nahradit GOTO ...
broukoid Re: Jak nahradit GOTO ...
Martin Malý Re: Jak nahradit GOTO ...
Tisnovsky Re: Jak nahradit GOTO ...
Cygnus Re: Jak nahradit GOTO ...
melkor Re: Jak nahradit GOTO ...
Radovan Re: Jak nahradit GOTO ...
BLEK. Re: Jak nahradit GOTO ...
broukoid Re: Jak nahradit GOTO ...
BLEK. Re: Jak nahradit GOTO ...
Martin Malý Re: Jak nahradit GOTO ...
bauglir Re: Jak nahradit GOTO ...
Radovan Re: Jak nahradit GOTO ...
Martin Malý Re: Jak nahradit GOTO ...
Radovan Re: Jak nahradit GOTO ...
Miloš Re: Jak nahradit GOTO ...
Cygnus Re: Jak nahradit GOTO ...
Satai Re: Jak nahradit GOTO ...
BLEK. Re: Jak nahradit GOTO ...
Satai Re: Jak nahradit GOTO ...
BLEK. Re: Jak nahradit GOTO ...
Hellboj Re: Jak nahradit GOTO ...
BLEK. Re: Jak nahradit GOTO ...
s Re: Jak nahradit GOTO ...
Satai Re: Jak nahradit GOTO ...
přezdívka Re: Jak nahradit GOTO ...
john Alice
Jirka No a co ten Python?
Honza Re: No a co ten Python?
Diabolus Re: Bude JavaScript dnešním BASICem?
MichalM scratch
Petr F Lego
jurasn Proč se učit v něčem, co dál nepoužiju?
HerrFranz S javascriptem jsem zacinal
HerrFranz Re: S javascriptem jsem zacinal
hm perl
Martin Malý Re: perl
hm Re: perl
BLEK. Re: perl
BLEK. Re: perl
RK JavaFX
mata Karel, zelvicka a spol
Mem_ Game Maker a spol.
Mem_ Re: Game Maker a spol.
Habo Pascal a Logo
koroptev nevim
Miloš Scratch
koroptev goto
BLEK. Re: goto
Koroptev Re: goto
peregrin DrdSim
tangero Něco s příklady a vzorovými úlohami
Bohumír Soukup Re: Něco s příklady a vzorovými úlohami
tangero Re: Něco s příklady a vzorovými úlohami
Bohumír Soukup Re: Něco s příklady a vzorovými úlohami
tangero Re: Něco s příklady a vzorovými úlohami
Satai Re: Něco s příklady a vzorovými úlohami
Bohumír Soukup Re: Něco s příklady a vzorovými úlohami
Petr Staníček Re: Něco s příklady a vzorovými úlohami
tangero Re: Něco s příklady a vzorovými úlohami
Dan542 Re: Něco s příklady a vzorovými úlohami
Randy ActionScript
samik neco pro me vnoucata :)
mpro Re: neco pro me vnoucata :)
bauglir Taky se přidám :)
bauglir Re: Taky se přidám :)
Jakub Hozak Hackety Hack
tuttle První jazyk: Python
Milan Kubík Skvělé!
Zdroj: https://www.zdrojak.cz/?p=3352