Ano, je to nekoncepční s*it, ale mnoho, mnoho a mnoho programátorů na něm začínalo – a štvalo je omezení tohoto jazyku.
Dnes mi připadá velmi zajímavé přečíst si takový článek, zavzpomínat na „staré“ časy a rozhodně je to dobré pro srovnámí možností tehdejší a dnešní výpočetní techniky.
PS: Zvyk je železná košile: při pročítání těch BASICových instrukcí jsem automaticky přeřadil na CESTINU, tedy bez háčků a čárek, byť takto už pár let nepíšu :)
Kdysi na konci 80. let jsem vedl kroužek programování v pionýráku. Byly tam Didaktiky Gama. Pln „koncepčního“ nadšení jsem je začal učit Forth. To jsem dopadl. Tak jsem zkusil alespoň Pascal „HiSoft“ i tak jsem dopadl špatně. Nakonec jsme skončili u BASICU.
Basic je totiž nejrychlejší programovací jazyk, jak dostat rychle výsledek ( když nebyly tabulkové procesory ) .Potřebuji-li si něco rychle a jednorázově spočítat, tak bezkonkurenčně nejrychleji na to udělám program v Basicu.
Když jsem něco potřeboval rychle a pro jedno, nebo pár použití, vždy jsem použil Basic. Jinak jsem programy na Spectru dělal většinou v HiSoft Pascalu.
Přesně tak. Asi se nás většina shodne na tom, že „Spaghetti code“ je špatný. Ale lze vůbec u programu na 20 řádků mluvit o „Spaghetti code“? Jako programovatelná kalkulačka je BASIC výborný. Tedy do doby, než člověk začne pošilhávat po „knihovnách funkcí“, kdy mu začnou globální proměnné podrážet nohy.
Což je ostatně jedna věc, kterou BASIC na ZX Spectru neuměl, a která se dá považovat za zásadní věc a celý BASIC tím poslat na věčnost. Konkrétněji je to volání podprogramů s parametry, základní to kámen rekurze. Například klasický faktoriál:
fact(a): a <= 1 ? a : (a * fact(a-1))
Tohle ZX Spectrum BASIC skutečně neuměl a nedal se k tomu žádným způsobem znásilnit. Proto jsem, coby odchovanec ZX Spectrum BASICU, měl v Pascalu i C trochu problémy s tím, že jsem všechno psal jako iterace. Teprve na VŠ jsem pochopil, k čemu ta rekurze může být dobrá.
Dá se znásilnit.
DEF FN f(n)= VAL ((„1“ AND n<2)+(„n*FN f(n-1)“ AND n >= 2))
viz http://busy.speccy.cz/tvorba/rekurzia.htm
Tak i po 18 letech člověk nachází novinky. Rekurzi jediného výrazu jsem znal, teď už znám i způsob jak zvládnout složitější výraz. Sice to je pořád jen rekuzivní výraz a ne rekurzivní podprogram, ale řada věcí by s tím již řešit šla. Akorát to tedy nevypadá moc hezky a asi bych zůstal u iteračních verzí… Ladit takovouhle rekurzi by se mi nechtělo :-) Každopádně beru zpět své tvrzení, že znásilnit se BASIC nedal.
Je samozřejmě pravda, že BASIC (ten klasický, ne třeba Beta BASIC) na jednu stranu nutil programátory dělat „ústupky“, například používat globální proměnné a řízení běhu programu pomocí GOTO, ale jen velmi málo jazyků bylo možné spolu se základním operačním systémem nacpat například do 4 kB ROM (ZX80) nebo 8 kB (spousta dalších osmibitů).
Napadá mě jedině FORTH, ale ten se (bohužel) nerozšířil tak jako BASIC, i když zrovna v CSSR měl poměrně velkou podporu. No a vzhledem k tomu, že o FORTHu už se tady psalo, tak se doplnil BASICem :-), určitě za tím nehledej agitačku na VB nebo něco podobného.
Ještě bych doplnil myšlenku o zničení programovacího stylu – tak to promin, ale někdo, kdo se nedokáže „přepínat“ mezi různými styly, si nemůže říkat programátor (i když dneska mají mladší raději slovo vývojář :-).
I při programování v současných mainstreamových jazycích (tím myslím strukturované programování trošku říznuté jednou z větví OOP) je nutné pracovat s různými minijazyky a problémově orientovanými jazyky, které mají zcela odlišnou filozofii a programátoři by měli po relativně krátkém čase zvládnout i tyto jazyky a styly.
(nehledě na to, že právě díky omezenostem „osmibitových“ BASICů se programátoři celkem rychle přesouvali směrem k assembleru a například po přechodu na PC k Pascalu, což ovšem mnohdy bylo z bláta do louže :-)
Podle mě víš o programování kulový. Programovací jazyk vždy byl, je a bude jen nástrojem. Při přechodu z BASICu na vyšší jazyky měli někteří ze začátku problémy s přivyknutím na strukturované programování, ale opravdu neznám jediný program v jazyku podporující strukturované programování, přesahující rozsahem nějak výrazněji „hello, world“, který by se hemžil GOTO a byl bez lokálních proměnných. Kromě toho, z BASICu se nejčastěji přecházelo na Assembler a pro ten byl BASIC naopak velmi dobrým předstupněm. A až mi předvedeš nějakou machrovinku, jakou dokázali ti lidé tenkrát vymáčknout ze svých 8bitů, tak teprve bude tvůj názor aspoň trochu relevantní.
Znám spoustu výtvorů, které se dnes dokonce prodávají za peníze a jsou vydávány za práci profesionálů, jejichž autoři o BASICu sice jen četli v historické literatuře, ale ten pravověrný BASICář z doby před 20 lety by to napsal v BASICu elegantněji a lépe, než co zplodili oni v Javě nebo C++ – naprosto zprasený návrh hierarchie tříd a dědických vztahů, indikující, že analytické a abstraktní myšlení je těmto lidem úplně cizí věcí, z toho plynoucí nezbytnost dále to celé prasit a činit ještě neefektivnějším, nepřehlednějším a děravějším. Dneska se holt do programování cpe každé nemehlo, které by před 20 lety nemilosrdně bylo vyřazeno v praktickém životě neschopností konkurovat ostatním a ve školním pomocí matematiky, která se velmi správně považovala za základní předpoklad pro schopnost programovat a analytické uvažování.
ale houby, to je stejne jako ptat se, proc je v muzeu parni stroj …
mimochodem, je celkem zajimave, jakym zpusobem se vlastnosti BASICu obchazely (komentare, fejkovani lokalnich promennych pomoci recyklace nekolika malo globalnich promennzch, dusledne komentovani zacatku podprogramu, pouzivani promennych v prikazu GOSUB jako nahrada za neexistujici procedury, fejkovani struktur pomoci prikazu DATA a RESTORE atd.)
cite: „Nechapu, proc se na rootu pise nekonecny serial o takovem nekoncepcnim shitu, jako je BASIC. Krome toho, ze to je jazyk, ktery rade programatoru nakurvil programovaci styl na cely zbytek zivota, neni nicim zajimavy.“
…
No mozna proto, ze to bylo a podle me asi porad je nejlepsi reseni splnujici pozadavky na nej kladene a bezici na tehdejsim hardwaru.
1) Nahrazoval OS, bash. Takze to musel byt interpret.
2) Slo by udelat asi jen nejaky monitor, text. editor a par zakladnich prikazu na nahravani souboru a spousteni programu, ale mezi tehdejsi zakladni pozadavky na pocitac bylo ze na tom budes moci (konecne) programovat! A to vsichni, vcetne uplnych zacatecniku, takze podle me FORTH odpadava. A pokazde nahravat 5 minut nejaky programovaci jazyk z pasky by se nikomu nechtelo, zvlast kdyz konkurence ho ma implementovany v ROM.
3) IF THEN ELSE, lokalni promene, podprogramy a dalsi „vymozenosti“ tam nejsou proste proto, ze tyhle veci maji svoji rezii a podle me nejdou udelat v interpretu tak, aby nebyly pomalejsi nebo nezabiraly vic pameti. A to si uz rozmyslis jestli budes mit lokalni promene a pomaly program, nebo si promene budes hlidat sam a mit vic pameti a rychlejsi program..
4) Kdo to myslel vazne tak stejne programoval primo v asembleru, ale ten podle tebe musi byt stejne nekoncepcni. :)
Eh.. a odpoved proc se vubec pise o Basicu? No asi proto, ze to nekoho zajima. :) Pro me osobne (kdo to jako maly kluk zazil) je to jeden z nejzajimavejsich clanku na rootu za posledni dobu. Rad jsem si zavzpominal a pokud vim (kdyz jsem se nenapadne vetrel na prednasku) tak se o tomhle tematu uci dodnes. Napr. na FITu http://www.fit.vutbr.cz/study/course-l.php.cs?id=6295 (I kdyz prednasejici jen prezentoval nevyhody a vetsina studentu stejne nevedela o co slo, pokud zrovna nehrala poker ve flashi :) )
Nechapu… ano, skutečně nechápeš.
1) V roce 1964 kdy BASIC vznikl měl koncepci zatraceně dobrou, umožňoval neprogramátorům používat počítače v interaktivním režimu, navíc hromadně, protože to byl první jazyk navržený speciálně pro systém sdílení času. Podobal se pochopitelně FORTRANu, který v té době a ještě pár desetiletí potom počítačům vládl, a umožňoval tak snadný přechod na něj.
2) V sedmdesátých letech patřil k povinné výbavě minipočítačů (i některých mainframů), a používali ho často i profesionálové, zejména proto, jak už tu napsali jiní, že je to jazyk ve kterém se programy tvoří nejsnadněji a nejrychleji, aspoň ty jednoduché. Takže pro zpracování pár stovek nebo tisíc údajů nemá smysl týden něco datlit a odlaďovat v nějakém „skutečném“ programovacím jazyce, když totéž zvládnu za jedno odpoledne v BASICu. Dnes za dvě odpoledne v nějakém spreadsheetu.
3) Právě kvůli té jednoduchosti a přístupnosti laikům byl zvolen jako hlavní jazyk nově vzniklých mikropočítačů (které byly určené „normálním*“ lidem) a spolu s nimi ovládal svět po celé desetiletí jejich slávy, dokonce i originální IBM-PC ho měly v ROM, odkud se spouštěl automaticky, pokud nebyla v mechanice bootovací disketa. Jednu takovou 386ku tady také mám.
4) Root čte spousta lidí kteří s BASICem začínali a dodnes na něj vzpomínají, a také dost takových kteří si aspoň postesknou že tyhle časy bohužel nezažili, a ti mladší se aspoň poučí jak to bylo před lety, kdy se frekvence procesorů měřily ma megahertzy (někdy ani to ne) a velikosti pamětí na kilobajty, neboť „Staré-li seznáš, pro nové sílíš“, jak se tady u nás píše na jedné staré vilce, aspoň jim dojde že problémy se kterými se dnes střetávají dávno před nimi vyřešili jiní, a často lépe.
5) Pokud jde o kurvení stylu, spíš bych nadával na objektové programování a některé „moderní“ jazyky, které sice jako novinky přinášejí funkce, které měl BASIC před skoro padesáti lety, ale z programátorů vychovávají líné lemply, neschopné si ohlídat ani kolik paměti jejich aplikace žere, natož aby je napadlo že přeházením pár vnořených smyček můžou ušetřit stamiliony zbytečných oběhů. Že to v době gigahertzových vícejádrových procesorů a gigabajtových pamětí není třeba? Ale je, a já jsem se to naučil právě v BASICU!
6) Vezmi si příklad z Billa Gatese, ten se „svým“ BASICem protlačil Micro-Soft co počítačového průmyslu, dalo by se říct že to bylo jeho první dílo, a naopak jeho poslední dílo byl GW-Basic, na jehož vývoji se podílel v osmdesátých letech, čímž skončila jeho desetiletá kariéra programátora. Pak následoval Quick Basic a jeho krippleware verze QBasic, potom Visual Basic, C# a .NET. které toho bohužel z BASICu obsahují o dost víc, než by jim bylo ku prospěchu.
7) A navrch aspoň jeden příklad z historie, letoun Voyager, který v roce 1986 jako první obletěl Zeměkouli bez mezipřistání (na jednu nádrž), počítal jeho tvůrce Burt Rutan ve vlastnoručně napsaném programu v BASICu na Apple II.
* Kdo normální by tehdy chtěl mít doma počítač ;-)
P.S. kdyby to jednou někdo četl, tak jsem narazil na zajímavý článek o tom kurvení stylu: programatorske-schopnosti-absolventov-klesaju-problemom-je-java
nj. taky bych osobne Javu jako prvni programovaci jazyk nevolil, ale svadet nedostatecne znalosti studentu na Javu IMHO nejde, je to veci osnov te ktere skoly (a pokud se dnes IT typicky uci v kombinaci napriklad s managementem, tak se neni cemu divit ne?).
Vzdyt Java/BASIC/C/assembler/LISP/… jsou jen nastroje, na kterych se da rozumne stavet az po projiti kurzu o datovych strukturach, grafovych aj. algoritmech, automatech, gramatikach atd. To se doufam na IT skolach jeste uci :-)
Jde o to, co to je IT škola. „IT“ má ve studijním programu dnes každá soukromá VŠ, aby přitáhla zájemce. Ale samozřejmě Vámi naznačené věci se tam neučí a pokud se o nich někdo na nějaké přednášce zmíní, rozhodně je nezkouší. Absolventi pak propadnou přesvědčení, že jsou z nich IT experti, aniž by se computer science vůbec dotkli. To pak samozřejmě deformuje celé odvětví. Navíc – při množství absolventů „IT“ oborů ani není možné, aby se tam ty věci učily – tolik lidí, kolik jich absolvuje, na to prostě tu hlavu v žádném případě nemá a praxe to jen potvrzuje.
Otazkou potom ovšem je, co se tam těch pět let učí :-) Tvorba grafů v Excelu a dělání prezentací v PowerPointu? ;-)
Asi už jsem trošku starý, ale základy algoritmizace, výuku datových struktur (aby student například pochopil, že když bude cpát do asociativního pole prvky se stejným hashem, tak z toho udělá lineární seznam :-), gramatik, automatů a trošku té složitosti (aspoˇn tušit že něco se složitostí O(n3) už může být fuj, raději brát třeba alogritmus s O(n log n)) si myslím patří do „základního IT vzdělání“ nebo to už taky neplatí?
Před delším časem jsem snad v nějakém blogu četl zajímavý zážitek, jak autor nahlédl do skript na výpočetní techniku kamarádovi, co studoval ekonomiku. Jakou byste si tipl odpověď na otázku „Co je to mikroprocesor?“
Správná byla tahle: „Mikroprocesor je hybná síla počítače.“ 8-O
Já jsem (skoro) poznal jednoho človíčka na VS, co po svých studentech na písemné zkoušce chtěl, aby mu napsali, ve kterém menu se nachází různé příkazy Wordu a jak se přesně ty příkazy v tom menu jmenují.
To jsem ovšem považoval za úlet a buzeraci někoho, kdo IT neznal do té míry aby se tím mohl živit nebo to učit na IT-pozitivní škole (tady šlo o farmaceutickou fakultu a IT předmět tam byl jen do počtu).
O tom, že se v tom Wordu učili formátovat bez stylů ani nemluvím.
UGH! Doufám že tenhle „odborník“ také udal ve které verzi MSO to požaduje!
Já jsem se s Wordem nikdy nesžil, na rozdíl od zlaté T602, takže když jsem kdysi potřeboval něco jako VYSIWIG editor, tak jsem si to radši napsal a zformátoval v Notepadu v čistém HTML (aspoň jsem se ho pořádně naučil), a pak vytiskl přímo z IE.
Zajímavé pak byly pokusy o načtení mých výtvorů do Wordu, který systém vnořených tabulek totálně nepobral a nedokázal z nich ani vycucnout holý text, což se s problémy podařilo Excelu :-D