Onehdá jsem narazil na zajimávý projekt na MITu. Jmenuje se to scratch a je to programovací jazyk určený pro děti.
Pro zastánce přísloví kdo si hraje nezlobí je to v každém případě dobrá zpráva, protože se při tom ještě návíc může naučit programovat.
Po spuštění na Vás vykoukne IDE některýmy rysy až nápadně podobné Squeak-Smalltalku.
V pravé části je hrací plocha a knihovna objektů. V levé části je knihovna stavebních kamenů a uprostřed je místo kam se drag’n’drop způsobem skláda program. Každý objekt lze programovat samostatně. Jednotlivé objekty lze ovládat pomocí událostí (například stisknutí klávesy nebo spuštění simulace pomocí zelené vlaječky v pravo nahoře).
Jednotlivé objekty se můžou pohybovat, rotovat, měnit velikost. A k tomu vsemu lze samozrejme pridat i nejaky ten zvuk. Jako každý běžný programovací jazyk obsahuje i tento podmínky a cykly.
Vytvořené hry a animace lze velmi snadno uploadovat na internet, kde je lze spustit jako java applet přes webového klienta.
Jediné co můžu tomuhle programovacímu jazyku vytknout je, že není k dispozici verze pro linux.
homepage: http://scratch.mit.edu/
de facto to je náš klasický "Karel" se kterým jsem se seznamoval na základce na consulech.
Karel for ever!
Ta podobnost se Squeak Smalltalkem není čistě náhodná a smalltalkovskou image ze Scratch lze pod Linuxem běžně spustit ;-) Pár platformně závislých věcí tam potom ale nefunguje.
Jen doplním, že na podobném principu je nejen Karel, ale taky
Baltík http://www.edunet.cz/baltik/
Petr http://www.gemtree.cz/
Ve kterém vznikla třeba 3D hra Bechtor http://bechtor.wz.cz/
—
A za povšimnutí stojí i
Imagine http://imagine.input.sk/cz/
A starý známý Robocode se na výuku taky docela hodí.
—
A další…
Programovani se neda naucit. S tim se clovek musi narodit. Je to asi jako kdyby se clovek chtel naucit byt spisovatelem.
Ondra: no jde o to, co je chapano jako programovani. Bash zvladne i cvicena opice, Python/Ruby je take zcela jednoduche; jazyky jako C, C++, Java, C# a podobné sice již nejsou tolik intuitivní, ale pořád jsou logické a tedy pochopitelné. Jisteze s assemblerem to je neco ponekud jineho, ale jednak ten nepatri do tak uplne bezneho programovani, a potom, nemyslim si, ze by se taky nedal naucit. Myslim si, ze programovani je zkratka a dobre o (casto zcela jednoduche) logice a trpelivosti, nic vic k nemu treba neni (snad krom pocitace ;)).
> Bash zvladne i cvicena opice
IMHO naprostý nesmysl. Jazyk, ve kterém je třeba dávat pozor na mezery za/před závorkami a na jiných místech, i když obecně na odsazování naprosto nezávisí, je podle mne zralý akorát tak k okamžité smrti. Jen je škoda, že ještě nenastala. Nemluvě o zpracování chyb a dalších nezbytných věcech. Jako shell dobrý (možná proto, že jsem ještě nezkusil zsh?), ale jako programovací jazyk vážně ne.
dávat pozor na mezery za/před závorkami se časem naučí i cvičená opice, to co se nenaučí je samostatná tvorba. tedy bude vědět jak, ale nebude vědět co. to je základ programování. ne nějaká druhořadá syntaxe.
Hadam, ze nevies o com pises. Keby si aktivne pouzil viac ako jeden – dva jazyky vedel by si, ze kazdy jazyk ma svoje + a -.
O syntaxi se nema cenu bavit. Pokud ma nekdo problemy se syntaxi jazyka, at proboha ani nezkousi programovat. Teprve pokud znate jazyk "jak sve boty" zacine byt schopni v nem "programovat".
A to vetsina lidi bohuzel nezvlada. Skutecne programovani totiz neni o skladani prikazu do radek a radek do metod/procedur. Ano, takhle se da napsat skript. Mala jednoucelova aplikace. Ale tady to asi tak konci. Drive nebo pozdeji z toho bude hrozny slepeny balast. Kdo to nepoznal casem na svem starsim kodu, nemuze pochopit.
Skutecne programovani vyzaduje jak analyticke, tak synteticke schopnosti.
Nejdriv je nutne poradne pochopit co chceme delat, rozdrobit si to na male, snadno pochopitelne casti. Nejde zatim o objekty jako takove, spise zachyceni logickych celku a je spojujicich procesu.
Potom se musi clovek podivat na to co ma, tedy co mu jeho vyvojove nastroje, knihovny a os dovoli (a nekdy to dokonce musi byt multiplatformni, heh ;-))). a vymyslet, jak to nejlepe spojit dohromady. Tady uz se zacinaji rodit objekty jako takove. V podstate to znamena prevest znalost problemu do formy, ktera je vyjadritelna dostupnymi prostredky.
Posledni faze je kodovani (ne programovani, jak ji mylne leckteri nazyvaji). Je to proste vyjadreni vysledku druhe faze programovacim jazykem.Jelikoz jakakoli nedostupna knihovna byla rovnez soucasti druhe faze, jde o prosty prevod popisu do kodu. Ano, to vyzaduje znalosti jazyka i optimalnich postupu, ty ale presto bez vyse zmineneho nejsou zhola k nicemu.
A navic, skutecneho programatora dela teprve to, ze jeho kod je citelny, prehledny, rozsiritelny atd. Neni to proto, ze by se o to nejak extra snazil, dobre napsany kod je proste takovy. Samozrejme volba jazyka toto hodne ovlivnuje (dynamicke plne objektove jazyky praci hodne usnadnuji, jazyky jako c++/java IMHO spis hazeji klacky pod nohy).
Otestujte si sveho programatora (nebo sebe).
Pokud mate projekt alespon stredniho rozsahu/slozitosti, rekneme alespon webovy obchod nebo neco podobneho, chtejte po nem pridat nejake dalsi polozky ke zbozi, nove kriterium pro hledani a pod.
Pokud to bude mit hotove do cca 15-30 minut, je to pravdepodobne SKUTECNY PROGRAMATOR, ktery umi navrhnout spravovatelnou/rozsiritelnou aplikaci. Pokud mu to bude trvat dele nez dejme tomu pul dne, je dany projekt pravdepodobne bastl zraly na prepis. V dobre udelanem kodu/systemu se zmena jedne casti dotkne maximalne casti primo spojenych, nebo se take nemusi projevit vubec (ie pokud zmenime implementaci ale nezmenime rozhrani).
[5] mam pocit, ze jste trochu prozradil, ze nevite o cem je rec – tedy o programovani. Velka cast vaseho prispevku je o programovacich jazycich a slozitosti v nich neco napsat.
Ondra: ale kdeze. Mozna neni kazdy predurceny k tomu stat se skvelym programatorem nebo spisovatelem, ale kdokoli ma IQ tak 120+ rozlozene alespon trochu rovnomerne mezi ruzne oblasti a bude se snazit, muze psat solidni programy i solidni povidky. Nenavrhne novy revolucni framework ani nenapise velky americky roman nebo dalsi Gernsbackovo kontinuum, ale ruku na srdce… kolik takovych je potreba? <br />
Jako vse je to hlavne o snaze. Lepsi nez genius, ktery se nerozviji, bude po par letech prumerne schopny clovek, ktery na sobe bude poctive pracovat. U spisovatelu se tomu rika "vypsat se" a klidne tomu tak muzeme rikat i u programatoru. <br />
(A navic je tu jeste jedna zalezitost, kde ziskavaji programatori moznost dalsiho rustu temer z nuly – programovani je zalezitost teamova az stadni. Tvrde "programatorske" vlastnosti ztraceji na fatalni dulezitosi. A naopak se obvykle v teamu najde nejaky sikovny mentor, ktery pomaha mladsim prekonat prvni zadrhele a vede je ke svetlym zitrkum.)
Vyzkoušeno.
Zvládají to i děti v první a druhé třídě základní školy.
Některé to baví některé méně, stejně jako se vším. Někteří už po 30 minutách dovedli vytvořit zajímavé věci.
// S programováním se podlě mě má tak, že téměř každý je schopen se naučit programovat, ale přesně dle Gausova rozložení, někomu to půjde bídně a někdo v tom bude vynikat.
RE: Ondra, 29.5.2007 22:14
Nemyslím si, že programování se nedá naučit. Je to dovednost jako každá jiná. A stále víc, asi polu s rozšiřováním vyšších programovacích jazyků, se z programování stává běžná práce. Gloriola programátorů, jako nadlidí, ztrácí svou zář a asi je to dobře.
[11] problem je, kdyz zavolaji takovehleho cloveka k praci na kterou nestaci. nebo kdyz ho jeho ditko preroste. slozitost aplikace s pridavanymi funkcemi roste velice rychle (cim vyssi uroven abstrakce tim mene kodu. ale cim vyssi uroven abstrakce, tim schopnejsi clovek je potreba k napsani).
clovek ktery umi pouzivat databazove ovladaci prvky v klidu udela 1 tabulku. klidne k tomu prilepi i deset dalsich, a mozna i 2-3 nejakym zpusobem propoji.
ale jakmile bude pozadavek treba (je to u prdele, podela i tuhle picovinu) zmenit u vsech tabulek barevne schema, proste ten kod zacne lepit vsude, misto toho aby vymyslel nejake systemizovane reseni. to nikdy nemusel delat a tedy neumi. za chvili bude vedet jak to udelat blbe. a pak jeste parkrat. nez prijde na to jak to udelat poradne (pokud to nekde obsvihne z netu tak aby to fungovalo, ani to poradne nepochopi, takze to bude bastlit hala bala bez hlubsich znalosti toho co dela a proc to teda nekdy nefunguje).
clovek ktery programuje ale neni programator potrebuje neustale za zadkem PROGRAMATORA, aby ho kontroloval a nenapadne ho smeroval k dalsimu velkemu kroku – prijit na neco sam ma 100x vetsi hodnotu nez si to nechat vysvetlit. Pokud "mentor" chybi, nas takyprogramator se bude chvili placat v cut&paste pekle, aby nakonec prohlasil, ze uz je to neudrzovatelne. Navic se v tom krome nej nikdo nevyzna.
[12] "programovani" se da naucit, problem je, ze je to moc dlouha cesta a vetsina lidi si ani neuvedomuje kolik je toho treba absorbovat. to ze deti v prvni tride dokazou rikat kosticce ze ma udelat dva kroky dopredu a pak zatocit je jiste fascninujici, a zcela nepochybne je to jeden ze zakladu programovani.
ale kolik problemu je takhle jednoduchych ? kazdy, pokud si ho umite rozlozit. zadny, pokud s tim nemate zkusenosti. a stejne jako u nejakych cinnosti je treba ziskat grif, programator musi postupnym resenim slozitejsich problemu "zvedat stale vetsi balvany, nez je nauci, aby se zvedaly samy" (metaprogramming, hint hint ;-))). je to dlouha cesta ktera nikde nekonci, a na ktere muze byt uspesny pouze ten pro koho je smyslem cesta samotna. tan kdo chce jen resit prakticke problemy se nauci pouze tolik aby problem vyresil, ne tolik, aby ho vyresil elegantne.
ad ak47) pravda.
a cesta je to krasna i kdyz mnohokrat posranym navrch :-/
Ten program je na nejlepší cestě být patentován Microsoftem :-D (viz BlueJ)
Tak abych rekl pravdu pokud je to urceno pro deti, tak bych to taky mohl zvladnout :)
[12]<br>
Jsou lidé, kteří za boha nepochopí ani podmínku if a jsou lidé, kteří si to vyvodí logicky bez jakéhokoli vysvětlování. Nemyslím si, že je každý schopný naučit se programovat, ale je pravda, že více jak 50% lidí je schopná po nějaké výuce splácat polofunkční kalkulačku, která však bude 10x větší než od talentů, ale to není programování.
Je to velice težká otázka zda se dá naučit programovat či nikoliv. Berte můj názor jako od člověka, který programovat neumí i když se ho několik let učil.
Co je vlastně programování, sled znaků a příkazů, které při správném "použití" provedou určitou činnost. Není myslím obtížné se naučit sled příkazů, podmínek… horší je naučit se v programování myslet tedy používat algoritmy a to je myslím kámen úrazu mě se to nikdy nepodařilo, i když vím co znamená if,for, and a další aritmetické operace tak je mě to stejně na houby…
Můj učitel na SSVT mě říkal programovat se naučí každý, ale myslet v programování na to musí mít člověk trochu nadání. Já co jsem si prošel školami SSVT, CVUT, BIVS… začínal jsem s assembleram pak pascal, c,c++ nikdy jsme se však programovat nenaučil a asi už nenaučím i když bych chtěl :-)
A omlouvám se jestli to co jsem napsal je kravina je to pouze můj názor
A skutečně programátory obdivuji :-)
no nevim, kdyz jsem zacinal ja, taketo vyfikundace nebyly a programovat jsem se naucil…