Scratch

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Scratch
Scratch Logo.svg
Scratchcat.svg
Paradigma programování řízené událostmi, imperativní
Vznikl v 2005
Autor Mitchel Resnick
Vývojář MIT Media Lab Lifelong Kindergarten Group
Poslední verze 2.1 (28.8.2015)
Typová kontrola dynamická
Hlavní implementace
Scratch
Ovlivněn jazyky Logo, Smalltalk
Ovlivnil jazyky Scratch Jr
OS internetový prohlížeč, Windows, Mac OS a Linux
Licence GPLv2 a Scratch Source Code License
Web scratch.mit.edu

Scratch je vizuální programovací jazyk[1], tzn. jazyk, který umožňuje vytvářet programy manipulací s grafickými programovými elementy a ne v textové podobě. Školáci, studenti, učitelé a rodiče ho mohou bezplatně používat jako multimediální autorský nástroj ke snadnému vytváření různých her a mít ho jako odrazový můstek do vyspělejšího světa počítačového programování. Je vhodný pro výuku i zábavu a byl použit v řadě různých projektů včetně simulací a vizualizací pokusů, k přípravě přednášek s animovanými prezentacemi, při tvorbě interaktivního umění, hudby a animovaných příběhů pro sociální vědy.[2] Prohlížení existujích projektů dostupných na webových stránkách Scratche, jejich pozměňování a testování provedených úprav (bez jejich ukládání) nevyžaduje žádnou registraci.

Scratch uživatelům dovoluje používat programování řízené událostmi s různými aktivními objekty označovanými v angličtině jako „sprites[1], v české verzi jako postavy. V jednoduchém editoru, který je součástí Scratche, je možné tyto postavy nakreslit - jako vektorovou nebo bitmapovou grafiku - anebo se mohou importovat z nějakého vnějšího zdroje, včetně webové kamery.

V současné verzi se Scratch nemusí instalovat, pracuje se s ním online způsobem v internetovém prohlížeči. Zájemci, kteří chtějí Scratch používat bez připojení k Internetu, si mohou stáhnout Scratch 2 offline editor ve verzi pro Windows, Mac OS nebo Linux. Jazyk Scratch je lokalizován do češtiny.

Původ názvu[editovat | editovat zdroj]

Název Scratch je odvozen z techniky označované jako „scratching“ a používané diskžokeji, kteři v minulosti rozšířené vinylové desky během přehrávání na gramofonu rukou smýkali vpřed a zpět a tím generovali různé zvuky (scratching lze překládat jako škrábání, skřípání, drhnutí). V informatice scratching znamená opakované využívání programů nebo jejich částí, které lze kombinovat, sdílet a přizpůsobovat jiným účelům. A právě takový „remix“ je význačným rysem jazyka Scratch, jehož uživatelé si mohou stahovat publikované projekty jiných účastníků, upravovat je podle svých představ a své výtvory opět zveřejňovat pro další zájemce.[3]

Historie[editovat | editovat zdroj]

Vývoj Scratche 1.0 se odehrál v období 2003-2007. V roce 2007 také vznikly webové stránky, na nichž mohli uživatelé ukládat a sdílet své projekty. Dlouho užívaná a oblíbená byla verze 1.4 z roku 2009. V květnu 2013 se objevila verze 2.0, obsahující četná rozšíření a použitelná v internetovém prohlížeči, tedy bez instalace na vlastním počítači.[1]

S původní ideou přišel a u zrodu stál Mitchel Resnick ze skupiny Lifelong Kindergarten (Celoživotní mateřská školka), působící v rámci MIT Media Lab, který spolu s kolegy vyvinul první desktopovou verzi. Finančně přispěla National Science Foundation (Národní vědecká nadace). Celý projekt byl zaměřen na mladé lidi (převážně od osmi let výš), které měl snadnou a zábavnou cestou přivést k základním znalostem programování.[4]

Rozšíření a využití pro výuku[editovat | editovat zdroj]

Podle zveřejňovaných statistik měl v roce 2015 Scratch v Česku asi 14 tisíc registrovaných uživatelů, převážně ve věku od 8 do 18 let. To je asi 14 uživatelů na 10 tisíc obyvatel a odpovídá to údajům z okolních států, kde se stejný ukazatel pohybuje od 7 (Německo) do 20 (Rakousko). Vyšší je v Polsku (30) a v severských státech (kolem 50). Nejrozsáhlejší je komunita v anglicky mluvících zemích - Velká Británie 150, USA a Austrálie 100.

Pokud jde o výuku programování, je Scratch vhodný pro základní školy, na nichž se takový předmět vyučuje. Údaje o jeho využití v českých školách nejsou k dispozici, ale nebude velké. Existující osnovy nepředepisují, jaký jazyk má má učitel pro výuku použít, výběr je široký a záleží na osobních preferencích vyučujícího. Asi nejčastěji se žáci setkávají s jazyky Baltík a Imagine Logo. Ve srovnání s nimi vychází Scratch lépe, k jeho přednostem patří zejména jeho cloudové řešení, odolnost proti syntaktickým chybám a fakt, že je zcela bezplatný[5].

Scratch není určen výlučně k výuce programování. Protože obsahuje mnoho vizuálních prvků, programátoři v něm mohou vytvářet různé animované příběhy. Učitelé ho mohou použít při tvorbě vizuálních přednášek, k ilustraci pokusů a jako nástroj vizualizace obtížných pojmů, třeba mitózy rostlinných buněk, koloběhu vody v přírodě, Galileova teploměru nebo Hookova zákona. V sociálních vědách mohou lektoři sestavovat kvízy, hry a tutoriály, které stimulují myšlení a interakce mezi studenty. Scratch umožnuje mladým lidem vytvářet „smysluplné osobní a zároveň vzdělávací projekty“, které mohou být pro studenty praktickým nástrojem k sebevyjádření[3].

Přednášející na Harvardově univerzitě, David J. Malan, používá Scratch ve svém úvodním kurzu informatiky namísto obvyklého úvodu k programovacím jazykům jako jsou Java nebo C. V univerzitní výuce jsou ovšem přednosti Scratche omezené, proto doktor Malan ve svém kurzu hned po prvním týdnu přechází na jazyk C.[6][7] Podle závěrů studie[8] je graficky založený jazyk jako Scratch vhodný k seznámení s programováním pro začátečníky na základní i střední škole. Ale současně se potvrdilo, že už žáci základní školy jsou schopni zvládnout i textový programovací jazyk.

Uživatelské rozhraní[editovat | editovat zdroj]

Výchozí stránka ve Scratchi 2.0

Obrazovku s grafickým uživatelským rozhraním ukazuje obrázek. Vlevo nahoře je „scéna“, kde lze pozorovat výsledky (například naprogramované animace, ve zmenšené nebo normální velikosti, možné je i celoobrazovkové zobrazení). Pod scénou jsou „v ohradě“ shromážděny všechny definované postavy. K určování pozice na scéně slouží souřadnice x a y, přičemž bod se souřadnicemi 0,0 leží ve středu scény.

Postavy a pozadí scény lze vytvářet různými způsoby. Uživatel si může postavu nakreslit pomocí „editoru kreslení“, který je součástí Scratche. Také si může vybrat nějakou postavu ze zabudované knihovny nebo použít postavu z jiného svého nebo cizího projektu, případně nějakou fotografii anebo jiný obrázek z počítačového souboru[9].

Pro postavu, která je v ohradě právě vybrána, lze v záložce Scénáře ve střední části obrazovky vybírat příkazové bloky, přetahovat je myší do pravé části obrazovky, a skládat je tam do „scénářů“ či programů, jimiž se daná postava má řídit. Bloky mají různé tvary a podobně jako dílky puzzle se k sobě dají sesadit jen takovým způsobem, který odpovídá správné skladbě (neboli syntaxi) programu. Protože existuje velké množství různých bloků, jsou rozděleny do deseti barevně odlišených kategorií s názvy Pohyb, Vzhled, Zvuk, Pero, Data, Události, Ovládání, Vnímání, Operátory a Bloky, tak jak ukazuje následující tabulka.

Kategorie Poznámka    Kategorie Poznámka
  Pohyb Pohyby a natáčení postav      Události Počáteční bloky určující spouštěcí událost pro navazující posloupnost bloků
  Vzhled Bloky ovlivňující vzhled postav, změny jejich velikosti,
komiksové bubliny s řečí nebo myšlenkami, změny pozadí
  Ovládání Podmíněný příkaz když-tak-jinak, cykly a zastavení programu
  Zvuk Přehrávání zvukových souborů a programovatelných
nástrojů a tónů
  Vnímání Postavy mohou reagovat na kontakt s okolím, které uživatel vytvořil
  Pero Postava může na scénu kreslit, jakoby držela pero s volitelnou tloušťkou, barvou a intenzitou   Operátory Aritmetické a logické operátory, základní matematické funkce, náhodná čísla
  Data Vytváření proměnných a přiřazování jejich hodnot   Bloky Uživatelské procedury (bloky) a řízení připojených externích zařízení (třeba robotů)
Primitivní scénář ve Scratchi 2.0,
sestavený ze tří bloků

Vedle záložky Scénáře jsou ještě další dvě. V záložce Kostýmy uživatel může měnit podobu postavy a tak docilovat různých efektů, včetně animace této postavy[1]. A v záložce Zvuky je možné k postavě připojovat zvuky a hudbu[9]. Podobně jako lze v ohradě vybrat určitou postavu, dá se tam vybrat také pozadí, a rovněž ho upravovat a připojovat k němu scénáře a zvuky.

Komunita uživatelů[editovat | editovat zdroj]

Scratch se používá v mnoha různých prostředích: ve školách[10], museích[11], knihovnách, komunitních centrech i v domácnostech. I malé děti dokáží tvořit projekty ve ScratchJr (Scratch Junior) anebo používat Scratch s pomocí rodičů nebo sourozenců, protože je to docela jednoduché, a vysokoškoláci používají Scratch v některých úvodních informatických předmětech (dokonce i na Harvardu, jak bylo zmíněno výše). Scratch byl lokalizován do mnoha jazyků, aby jeho využívání nebránila jazyková bariéra.

Projekty vytvořené ve Scratchi nejsou „černé skříňky“, ale objekty, z nichž je možné namixovat jiné projekty. Projekty se hned po dokončení mohou ukládat na webové stránky Scratche a kterýkoli návštěvník si může stáhnout jejich úplný zdrojový kód, prostudovat ho a využít ho zčásti nebo celý k namixování vlastních nových projektů[12][13]. Členové komunity také mohou vytvářet projektová studia (skupiny projektů), komentovat, hodnotit, favorizovat nebo „milovat (love)“ cizí projekty, sledovat (follow) jiné členy a prohlížet si jejich projekty a aktivity, a sdílet nápady. Projekty mají velmi široký záběr, od her a animací až po konverzační roboty z oblasti umělé inteligence. Přestože se grafické možnosti Scratche mohou na první pohled zdát velmi jednoduché, je ve skutečnosti možné vhodnou kombinací rastrového obrázku umístěného na pozadí, pohyblivých i statických postav před pozadím a současně vykreslovaných stop, navíc s podporou správy událostí a běhu více scénářů najednou (tzv. multithreadingu), naprogramovat i relativně složité grafické aplikace[14].

Všechny projekty na webu jsou sdíleny pod licencí Creative Commons a dají se spouštět ve webovém prohlížeči (používajícím Flash Player, takže nejsou dostupné na zařízeních se systémem iOS). Online komunita je samozřejmě multijazyčná, čeští školáci mohou mezi sebou komunikovat česky, ale může je to i motivovat ke zvládnutí angličtiny. Existuje také komunita pro učitele, s názvem ScratchEd[15].

Snap![editovat | editovat zdroj]

Jazyk Scratch zahrnuje většinu rysů současných programovacích jazyků a k seznámení s programováním je vzhledem ke své jednoduchosti a snadnému použití velmi vhodný. Současně však má některá omezení, která jsou často kritizována. Týká se to například možnosti vytvářet vlastní uživatelské bloky nebo práce se seznamy.

Pro zájemce, kteří chtějí zvládnout a využívat i komplikovanější programovací prvky, je k dispozici zdokonalená varianta Scratche s názvem Snap! 4.0.  Jazyk Snap! je rozšířením Scratche, které vzniklo na Kalifornské univerzitě v Berkeley a jehož autory jsou Jens Mönig a Brian Harvey.

Uživatelské prostředí Snapu vypadá stejně jako u Scratche a obsahuje prakticky všechny jeho prvky a možnosti, takže pro uživatele obeznámeného se Scratchem je přechod na Snap! zcela bezproblémový. Také se provozuje ve webovém prohlížeči, jen na rozdíl od Scratche se přitom nevyužívá Adobe Flash, nýbrž modernější HTML5 a JavaScript. Je rovněž lokalizovaný do češtiny.[16]

Definice rekurzivní funkce faktoriál

U současné verze Snap! 4.0 z roku 2014 došlo ke změně názvu, předchozí verze nesly označení BYOB, což je zkratka z Build Your Own Blocks, v překladu vytvářejte si vlastní bloky. A právě možnost tvorby nových uživatelských bloků (procedur), které je možné pojmenovat a taktéž jim při volání předávat hodnoty, je jednou z velmi důležitých vlastností projektu Snap![16] Vlastní bloky připouští sice i Scratch 2.0, ovšem jen v nejjednodušší možné podobě, pouze jako označení určité vícekrát použité skupiny jiných bloků. Ve Snapu je však možné vytvářet uživatelské bloky vypadající a chovající se stejně jako bloky standardní. Uživatelský blok může využívat zadané vstupní hodnoty a taktéž odevzdávat hodnotu výstupní, tak jako například standardní blok „odmocnina z 64“, který představuje hodnotu 8. Na obrázku vpravo je ukázka takové uživatelsky vytvořené funkce faktoriál, která navíc využívá tzv. rekurze, tedy volá sama sebe, což je v programování dosti častý obrat. Ve spodní části obrázku je nový blok použit se zadanou vstupní hodnotou 5. Vypadá stejně jako standardní blok odmocnina. A jak je z obrázku patrné, stejně jako ve Scratchi, i zde při ladění programu stačí na blok kliknout a v bublině se ukáže jeho hodnota.

Základním požadavkem při návrhu Snapu bylo, aby všechna data v něm představovala tzv. first-class objekty (objekty první kategorie). To znamená, že všechny objekty mají být zcela rovnoprávné, takže se s nimi dá i naprosto stejně zacházet. Jestliže je například možné v daném jazyce sestrojit seznam, jehož prvky jsou čísla nebo znakové řetězce (což je možné i ve Scratchi), musí jít sestrojit i seznam, jehož prvky jsou jiné seznamy (a to ve Scratchi nejde). Tato vlastnost jazyka Snap! uživatelům umožňuje vytvářet různé nástroje určené pro speciální účely, které by jinak vyžadovaly speciální doplňky či rozšíření.

Vlastní blok, jehož druhým parametrem je procedura.

Zajímavým důsledkem tohoto principu je to, že i procedury mohou být použity jako data. Kdyby například jazyk Snap! neobsahoval standardní blok „opakuj n krát“, programátor by si ho ve svém projektu mohl sám vytvořit tak, jak ukazuje obrázek vpravo[17]. Zde vytvářený blok „udělej“ má dva vstupní parametry, přičemž ten druhý je typu procedura. Při použití bloku nebude pro tento druhý parametr připraven obvyklý ovál, nýbrž vykrojení ve tvaru C. Do tohoto vykrojení je pak možné jako hodnotu vsunout nepojmenovanou proceduru - v tomto případě trojici standardních bloků. V pravé části obrázku je vidět světlehnědý standardní blok „opakuj“ a šedý uživatelský „udělej“ a oba vypadají i fungují naprosto stejně.

Uvedené dvě ukázky jen naznačují rozšířené možnosti Snapu, kterých ovšem je ve skutečnosti víc. Bloky mohou mít proměnlivý počet vstupních hodnot, mohou mít proceduru též jako výstupní hodnotu, jazyk má i tzv. first-class continuations, atd. V jazyce Snap! lze používat i objektově orientované programování[17]. Výjimku z pravidla „všechno je first-class“ představují pouze postavy; first-class postavy jsou plánovány až do verze Snap! 4.1.

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Scratch (programming language) na anglické Wikipedii.

  1. a b c d Marji, Majed(2014). Learn to Program with Scratch. San Francisco, California: No Starch Press, xvii, 1-9, 13-15. ISBN 9781593275433. 
  2. Scratch. Research on Scratch [online]. [cit. 2015-06-03]. Dostupné online.  
  3. a b Lamb, Annette (April 2011).  "Scratch: Computer Programming for 21st Century Learners". Teacher Librarian 38 (4): 64-68. 
  4. Your Five Year Old Can Learn To Code With An IPad App [online]. Forbes Magazine, [cit. 2015-04-23]. [1]. (anglicky) 
  5. KREJSA, Jan. Výuka základů programování v prostředí Scratch. České Budějovice : Jihočeská univerzita, 2014. 119 s. Dostupné online.  
  6. Young, Jeffrey R.."Fun, Not Fear, Is at the Heart of Scratch, a New Programming Language", July 20, 2007. 
  7. CS50 Syllabus [online]. [cit. 2015-05-17]. [2]. (anglicky) 
  8. DORLING, Mark; WHITE, Dave. Scratch: A Way to Logo and Python. In GRIFFITH, Belver C. Proceedings of the 46th ACM Technical Symposium on Computer Science Education. Kansas City, MO, USA : [s. n.], 2015. Dostupné online. DOI:10.1145/2676723.2677256
  9. a b Science Buddies: Scratch User Guide: Installing & Getting Started with Scratch [online]. [cit. 2015-05-09]. [3]. (anglicky) 
  10. Canadian schools starting to teach computer coding to kids [online]. CTV.ca, 2014-04-30, [cit. 2014-04-30]. [4]. (anglicky) 
  11. Scratch Day [online]. [cit. 2014-01-25]. [5]. (anglicky) 
  12. Monroy-Hernandez, Andres(2011)."Computers Can't Give Credit: How Automatic Attribution Falls Short in an Online Remixing Community", Proceedings of the 29th International Conference on Human Factors in Computing Systems (CHI '11). ACM, 3421–30. DOI:10.1145/1978942.1979452. 
  13. (2010)"Responses to remixing on a social media sharing website", ICWSM 2010 : Proceedings of the Fourth International Conference on Weblogs and Social Media, May 23–26, 2010. Washington, D.C.: AAAI Press. ISBN 9781577354451. OCLC 844857775. 
  14. TIŠNOVSKÝ, Pavel. Scratch: plnohodnotný programovací jazyk nebo jen dětské puzzle? [online]. Root.cz, 2010, [cit. 2015-09-22]. Dostupné online.  
  15. ScratchEd [online]. [cit. 2014-01-25]. [6]. (anglicky) 
  16. a b TIŠNOVSKÝ, Pavel. Snap! Důstojný nástupce programovacího jazyka Scratch [online]. Root.cz, 2015, [cit. 2015-09-22]. Dostupné online.  
  17. a b HARVEY, Brian; MÖNIG, Jens. Snap! Reference Manual Version 4.0 [online]. Berkeley.edu, 2014, [cit. 2015-09-22]. Dostupné online.  

Externí odkazy[editovat | editovat zdroj]

Webové stránky Scratch
Webové stránky Snap!