Skvělé články, skvělá stylistika. Díky.
Pěkný článek. Jo v Basicu šlo programovat i komerční věci. První můj prodaný kousek na evidenci zakazníku a faktur s ukládáním na kazetu. Zákazník mi poslal v případě potřeby vytištěný výpis programu + co potřebuje. Tužkou jsem napsal úpravy a poštou to poslal zpět. To byly časy. Zajímavé byly i pokusy s dissamblery kdy se rozebýraly hry hledali se registry s životy a nastavovala nesmrtelnost. Největším kladem programování te doby vidím hlavně v tom, že nás naučilo vyždímat stroj na maximum a hlavně s minimem prostředků.
Jo, takovéhle různé databáze a evidence byly v basicu naprosto v pohodě. Tedy pokud počet položek zůstával v desítkách nebo snad maximálně stovkách jednotek. Víc by toho asi interpret basicu ani paměť neutáhly. Přece jen spectráckých 48 kB (ani těch případných 128 kB) a procesor taktovaný na 3.5 MHz by asi víc nezvládly. Ale s disketovou jednotkou z toho nakonec bylo použitelné zařízení na nějakou tu jednodušší evidenci.Jo, assembler byl tenkrát velice mocný nástroj. To je dnes sice taky, ale časová náročnost programování v asm přeci jen překračuje použitelný přínos - nevím, jestli ještě dnes někdo třeba počítá, kolik cyklů zabere určitý sled instrukcí, aby se na obrazovku stihlo vše vykreslit ještě dříve, než to paprsek vypálí na monitor 😃 Snad jen specializovaní vývojáři na grafické enginy her.Tak nebo onak, jednoduchou hru pexeso jsem v moderním Visual Studiu naprogramoval v C# za den včetně s mrcasením se s grafikou kartiček a jednoduchými grafickými efekty (otáčení kartiček). V assembleru na ZX Spectru by mi to trvalo minimálně týden, počítám.
Ten kód je z dnešního pohledu tak trochu komický. Porovnává totiž rychlost numerických funkcí pro reálná čísla, která nejsou ani v IEEE formátu. Vůbec bych se nedivil, kdyby výsledky jednotlivých implementací byly rozdílné. Dřív byly ale testy tohoto typu ve značné oblibě, protože matematické koprocesory na daných platformách neexistovaly.Za povšimnutí stojí, že řádky 140, 150 a 196 by moderní překladač nahradil konstantami, takže jejich výpočetní čas by byl prakticky nulový.Dnes se pod pojmem rychlost jazyka rozumí spíš práce s unicode řetězci, kolekcemi a pamětí.
S tou optimalizací (nahrazení funkce konstantou) nevím nevím. To snad není možné ani v Sovětském svazuJak by moderní překladač mohl vědět, co taková funkce EXP() dělá? Nemůže přeci vědět jakou knihovnu mu tam přilinkuju.
Asi není úplně ideální, aby na diskuzní fórum o informatice psali politologové. Vzhledem k tomu, že se jedná přímo o funkce platformy a nejde o volání dll, je překladač stavu nahradit výsledky funkcí konstantami.Například v C++ se PI často definuje jako 4 * atan(1) a nejsou s tím problémy.
Zůstaňme tedy u C/C++Jaké funkce platformy?exp, atan, atd. jsou prostě normální funkce. Je jedno jak je definované pi. Překladač prostě netuší co exp, atan, sin nebo další funkce dělají a tak je nemůže optimalizovat. Prostě to musí přeložit jako funkční volání a linker pak doplní symbol z libm, glibc, atd. Ani linker nemůže vědět jestli výsledek exp(1) bude vždycky stejný. Klidně si tu funkci můžeš změnit tak, že každé liché volání ti bude vracet exponent podle argumentu a sudé volání ti bude vracet počet rybiček v akváriu. Kompilátor na tom nemá co optimalizovat.C++11 tuším definuje novou deklaraci constexpr, která by teoreticky něco takového mohla deklarovat a umožnit optimalizaci na úrovni linkeru, ale to je hodně čerstvá věc a nevěřím že se to někde používá a už vůbec ne u standardní knihovny.
Pod pojmem platforma mám na mysli Visual C++, nebo třeba GCC. Jako politologa se zaměřením na Sovětský svaz by vás mohlo zajímat, že funkce knihovny jsou intrinsic, takže i poměrně obstarožní kompilátory dokážou naprosto spolehlivě spočítat jejich hodnotu už v době překladu.
Díky za názor, ale nesouhlasím. Musíte si totiž uvědomit jednu zásadní zkušenost - tehdejší basicy byly interpretry, takže nic nenahrazovaly, do paměti se uložil pseudokód a ten se po spuštění interpretoval.Samozřejmě, můj test není vůbec sofistikovaný, pouze takové navršení všech možných funkcí, to máte pravdu, Ale co jsem se díval, ono to v minulosti fungovalo dost podobně, každý prostě stvořil nějaký program s opakujícím se výpočtem a velkou smyčkou a ten spouštěl.Pomalost toho výpočtu je VELICE ovlivněna kvalitou interpretru Basicu - už jsem jej spustil na více platformách a mohu to posoudit. Atari Basic měl vnitřní reprezentaci každého čísla jako float, takže i integerové inkrementační proměnné se posuzovaly jako desetinná čísla, proto byl velice pomalý. To je vidět při srovnání s TurboBasicem, který tohle nedělal.Dnes se sice rozumí rychlostí jazyka něco jiného, ale tehdejší interpretry neznaly ani unicode řetězce, ani kolekce, ani práci s pamětí. Jediné, co jsem tam mohl dát navíc, byla nějaká práce se standardními řetězci, jejich sčítání, LEFT$ atd, jenže problém je, že tohle ne na všech platformách existovalo, proto jsem to raději nezabudoval.
No je to přesně tak, jak píšete. Komicky samozřejmě nepůsobí váš test, ale dnešní pohled na to, co vnímáme jako programovací jazyk a dost možná i počítač jako takový. Jak jsem psal, testy té doby vypadaly obdobně.Dnes prostě od počítačů očekáváme úplně jiné věci, než před čtvrt stoletím a rychlost výpočtu logaritmu se stala nezajímavou.
Nevěřím že někdo v době osmibitů skutečně programoval v basicu. Já jsem to na C64 koncem osmdesátých let zkoušel, ale nic se dělat nedalo. Pochybuji že na Atari to bylo jiné.Jediná šance naprogramovat něco byl assembler, resp. strojový kód.
Úplně v pohodě - v ZS Spectrum basicu se daly psát i jednoduché hry - výpisy programů vycházely pravidelně třeba v ábíčku. Vzpomínám si třeba na sestřelování jablíček - bylo to jednoduché, ale té radosti, když to člověk z toho časáku přepsal a ono to fungovalo 😃 V basicu byly i jednodušší programy - např. kartotéky, jednoduché skládání hudby (dvoukanálový WHAM byl myslím z velké části právě v basicu). V basicu byl dokonce i úvodní ukázkový a výukový program k Didaktiku M (klin ZX Spectra). Ale je pravda, že pokud to člověk myslel opravdu vážně, tak se na 8bit platformě opravdu assembleru nevyhnul.Případně se kombinovala základní kostra v basicu + specializované rutiny v assembleru (grafika, zvuk).
Já jsem v době 8mi bitu naprogramoval v basicu spoustu věcí. Dokonce jsem byl schopen pomocí zakoupené cartridge zkompilovat a zabalit basicovský prog. do turba. A nakonec jsem i dokázal pomocí německé literatury naprogramovat jakýs takýs multitasking os, ve kterém jsem pustil třeba 4x malinký basicovský program separé. Dalo se dělat spousta věcí... Jen mě mrzí, že jsem si ty programy neuchoval do dnes.
Jak už tu zmínil pamětník, není to pravda. V Basicu se programovalo a dost. Samozřejmě, profíci používali stroják, my ostatní jsme používali aspoň podprogramy ve strojáku, ale ten basic se velmi hodil ve chvíli, kdy jste potřeboval rychle něco funkčního udělat a rychlost výpočtu nebyla stěžejní. Existovaly dokonce i komerční programy v basicu a dokonce i hry! (konkrétně - Hammurabi).Zrovna vaše C64 je bohužel smutný příklad skvělého počítače s mizerným basicem - tam se skutečně bez zástupu peeků a poků nedalo nic moc udělat, takže věřím, že než zkoušet Simons Basic, věnoval jste se rovnou strojáku. Ale jinde to bylo jiné.
Ono je otázka jestli takový basic program, který obsahuje DATA xxx,xxx,xxx,xxx,xxx a pak série poke xxxx,yy je ještě basic. A konkrétně na C64 se tomu vyhnout nedalo.Teda s vyjimkou programu typu zadej cislo a, cislo b a vysledek je A+B . Ale z toho každý hned dospěl. Taky jsem viděl jednoduché hry v BASICu, dokonce i se sprity, ale použitelné to moc nebylo.Simons Basic byl lepší co do syntaxe, ale použitelný pro software taky nebyl když člověk neměl ROM cartritdge. A pak proč nahrávat basic a pak program, proč plýtvat pamětí.
Samzořejmě, máte pravdu, že mnohé tehdejší basicovské programy byly vlastně jen zavaděčem a obslužnou rutinou pro to hlavní ve strojáku. Také se používaly kompilery. To ale stále nic nemění na tom, že se fakt v Basicu programovalo, respektive troufnu si tvrdit, že většina uživatelů, která vůbec programovala (místo hraní her), dělala v Basicu, a pouze ti nejlepší z nich ve strojáku. Problém byl v tom, že na osmibitech se ve strojáku i jakémkoliv jiném jazyku dělalo blbě. Nevím jak na C64, to zatím nemám nastudované, ale na Atari jste bez disketovky jen velmi obtížně dělal v čemkoliv, mám pocit, že čistě kazetový neexistoval ani assembler. Napsat v něm nějaký rozsáhlý projekt (bez disketové jednotky, kterou nikdo neměl) bylo proto velmi obtížné.Jo a co se těch her týče, spousta textovek Františka Fuky, Pomsta šíleného Ataristy atd, to, pokud se nepletu, bylo všechno v Basicu... Samozřejmě, že International Karate jste v tom neudělal🙂 Ono je to jako dnes - i dnes někteří používají Visual Basic, ačkoliv takové C# je (z mého pohledu) daleko lepším jazykem. Ovšem pro některé specifické úlohy (makra v Office) je ten Visual Basic docela dobře použitelný...Hezký den!
Já jsem programoval různé věci, většinou výpočty na strojárnu, a pak jsem počítal úlohy pro celou třídu... 😉
Já jsem si v Atari Basicu udělal databázový systém. Pravda, občas nějaká data poztrácel nebo zaměnil s jinými... :)
Jedna z prastarých věcí, kterou jsem si na Didaktiku Gama napsal v Basicu, byl simulátor maďarského hlavolamu "Hungarian Rings". A dokonce i program v Basicu šel trochu optimalizovat.Tohle je ta vykopávka: http://www.worldofspectrum.org/infoseekid.cgi...
Můj vůbec první program, kterým jsem se na gymplu chlubil, i když jsem ho nijak nešířil, byl Had v Atari Basicu. Samozřejmě velmi primitivní, ale myslím, že docela hratelný. (Dokonce by možná byl docela hratelný i dnes.)Už ho bohužel nemám.Dost jsem si hrál i s kreslením grafů nějakých matematických funkcí a výsledek docela ušel. Můj asi graficky nejhezčí prográmek kreslil kondiciogramy, což dnes považuji za pověru. Ale jako za softwarový produkt středoškoláka v něčem tak prostém, jako byl Atari Basic, bych se za to myslím ani dnes nestyděl.Daly se v tom psát použitelné programy. Jenom škoda toho magnetofonu... kdyby u nás tehdy byly dostupné disketovky, bylo by to o něčem jiném.Turbo Basic a Action byly jak z jiného světa.
Názor byl 1× upraven, naposled 20. 1. 2014 22:27
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.