Scratch

A Wikipédiából, a szabad enciklopédiából
Scratch
Scratch Logo.svg

Jellemző kiterjesztés
  • sb
  • sb2
  • sprite
  • sprite2
Megjelent 12344
Tervező Mitchel Resnick
Fejlesztő Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, és Brian Silverman
Utolsó kiadás 2.0 (2015. július 15.)[1]
Operációs rendszer Windows, Mac OS X
Licenc GNU General Public License
Weboldal
Scratch Design Interface.png

A Scratch egy objektumorientált, interpretált, dinamikus és vizuális programozási nyelv, amelyet elsősorban a programozással ismerkedő gyerekek számára fejlesztenek.

Ötvözete többek között a Squeak EToys, a CricketBlocks és a Logo környezeteknek. A programkód – amely a programkészítés során felhasznált szereplők viselkedését írja le – színekkel kategorizált kirakóelemekből építhető össze. Ezek parancsok, változók, állapotkomponensek, logikai kifejezések, elágazás- és ciklusszervező utasítások, és csak szintaktikailag helyes módon illeszkednek egymáshoz. A programozás eseményvezérelt, és sokszor többszálú.

A Scratch ingyenesen letölthető, és egyre több iskolában használják világszerte (például magyarul is tud). Jelenleg Windows, Mac OS X és Raspbian (Raspberry pi) operációs rendszerekre telepíthető.

A Scratch-et a Lifelong Kindergarten csoport fejleszti az MIT Media Lab keretein belül. —Mottójuk:  “Az óvodásokra jellemző világmegismerési-tanulási folyamatot  minden korosztályra ki kell terjeszteni.” — A csoport az óvodások alkotójátékát irigyelte meg, amely során a gyerekek saját célokat fogalmaznak meg, a felmerülő problémahelyzeteket pedig kísérletezéssel oldják meg. Valamely cél elérése általában újabb ötletek megfogalmazásához vezet, így a megoldandó problémák, és a megszerzett tapasztalatok is egyre magasabb szintűek lehetnek. Egy kezdőknek tervezett felületnek az önálló kísérletezést kell minden lehetséges módon támogatnia. A Scratch nemcsak gyerekeknek, hanem bárkinek jól használható környezet lehet.

Objektumorientáltság[szerkesztés]

Parancsszavak
Mintaprogram

A Scratch-ben való programozás objektumorientált. Úgy véljük, hogy az objektumelvű programozás sikeres lehet kisgyerekek körében is. Bizonyítandó, hogy képesek objektumokban gondolkozni, elég számítógépes játékokat tekintenünk – például a Super Mariót – ahol az eredményes játék feltétele a játék szereplőinek megkülönböztetése, tulajdonságaik és a közöttük fennálló lehetséges kapcsolatok megértése. Akik tudnak Mariózni – márpedig a kisgyerekekre ez igaz –, azok objektumorientáltan is tudnak gondolkodni.Számunkra ez a legjobb eszköz, amivel interaktív grafikus program[2]okat tudunk készíteni. Nyilvánvalóan más szoftverekkel is készíthető volna kirakójáték, képvetítő, országkereső és társasjáték, de azok a környezetek biztosan bonyolultabbak a Scratch-nél. A kirakóelemek nyelve egyetlen kattintással átállítható, így a programkódot készítő, és az azt megtekintő személyeknek nem kell érteniük egymás nyelvén.

A Scratch-ben minden parancs könnyen elérhető, nem kell súgót vagy honlapokat böngészni ahhoz, hogy a kiadható parancsokat és azok helyes használatát megtaláljuk. A kezelőfelület könnyen áttekinthető: a három fő részből álló (parancskészlet, programozási tér, játéktér) szerszámosláda-szerű ablak mellett csak egy továbbit, a festőablakot kell használni a programkészítés során. Az algoritmus és az eredmény egyszerre látható, így a kettő közti kapcsolat követhető és világos. Mint minden „valamire való” nyelvben, a Scratch-ben is lehet szekvenciát, ciklust és elágazást készíteni. Ha áttekintjük az egyes vezérlőutasítások népszerűségét a Scratch-elő gyerekek körében, a következő kép rajzolódik ki:

  • Habár a legnépszerűbb szerkezet a szekvencia, nagyon kevés programban szorítkoznak a szekvencia kizárólagos használatára.
  • A legnépszerűbb vezérlőparancs a végtelen ciklus, amely mind animáció-, mind játékkészítésnél hasznos.
  • Szintén közkedvelt (eseményvezérelt környezetről lévén szó) a mindig ha parancs, amely egy végtelen ciklus, és egy ha parancs ötvözet.
  • Előbbi parancs szinte kiszorítja a „klasszikus” ha szerkezetet.
  • A csak adott számszor lefutó ismétlés nem gyakori.
  • Nagyon ritkán használják az ismételd eddig ciklust, amelynek szinte csak elméleti jelentősége van (a környezet ugyanis ezzel a paranccsal együtt biztosíthatja az ún. strukturált programozás alapszerkezeteit).

Típusok szerepköre[szerkesztés]

  • A szövegtípus ritka, csak konstans paraméterként jelenik meg. Ebben a vizuális- mozgásos környezetben a szövegműveletek nem motiváltak, így azok nincsenek.
  • A logikai típushoz már a megszokott műveletek is hozzátartoznak: és, vagy, nem. Ezek természetesen egymásba is ágyazhatók.
  • A számtípus lehet egész és valós értékű is, szükség esetén a környezet kerekít. Szám a legtöbb állapotkomponens (x hely, méret stb.), ezenkívül például grafikus hatások mértékét is számmal fejezik ki. A számtípushoz az összesismert matematikai függvényt hozzácsatolták (például arcus cosinus), ésváltozót is számtípussal lehet létrehozni.

Változó[szerkesztés]

A létrehozott változókhoz egy-egy opcionálisan megjeleníthető kijelző tartozik a játéktérben. A kijelzőn szerepel a változó neve, de ha egyértelmű, hogy a változó mit számlál, a név elrejthető (nagy kijelző). Arra is lehetőség van, hogy egy változó értékét kívülről, tehát a felhasználói oldalról is változtatni lehessen: ekkor egy beállítható tartományú csúszkát lehet megjeleníteni a kijelző alsó felén.

Nem lehet szintaktikai hibát véteni: ahová például csak logikai állítás való (mondjuk egy elágazás megszervezésekor), oda csak logikai értékek, ahová szám, oda csak számértékek illeszthetők (a kirakóelemek formái is segítenek a megkülönböztetésben). Minthogy hibázni nem lehet, a visszacsatolás azonnali (nem csak később derül ki a probléma, mikorra az algoritmus már tovább bővült), és a tévesztés nem jár kudarccal, mert nincsenek hibaüzenetek.

A grafikus programkód ízlésesen jeleníti meg a parancsokat: mutatja az egymásba ágyazásokat, színekkel különbözteti meg az eltérő kategóriákba (mozgás, vezérlés stb.) eső utasításokat. A fogd és vidd technikának köszönhetően a szöveges gépelésnél hatékonyabban változtatható meg a kód: könnyű parancsblokkokat mozgatni, paramétereket átírni vagy lecserélni, feltételeket változtatni. A módosítások akár dinamikusan, programfutás közben is elvégezhetők.

Eseményvezérelt programozás[szerkesztés]

A környezettel való ismerkedés elején a parancsok egyesével is kipróbálhatók. Úgy látom, hogy rögtön ezután a parancsokat gomblenyomásokhoz érdemes rendelni. Egyrészt a gombokkal való irányítás természetes ötlet,másrészt előnyös, ha már a legelső programok is interaktívak. A Scratch-ben az eljárások elsősorban perifériás eseményekhez kötött feladatok. A billentyűzet gombjainak lenyomásán túl valamely szereplőre való kattintást is lehet az ún. eseményjelző sapkákkal figyelni.

Programokban előfordulhatnak olyan „belső események”, amelyek valamikor bekövetkeznek, de nem köthetők perifériához (a billentyűzethez vagy az egérhez). Kétféle megoldást vázolhatunk fel – és ez már módszertani meggondolás –, aszerint hogy a belső esemény egyszer, vagy többször következhet-e be. Csak egyszer fog például az élet változó nullázódni. A megmutatott kódrészletben a várj eddig parancs úgy viselkedik, mint egy sorompó: a változó 3-ra állítása után csak akkor engedi tovább a vezérlést, ha az élet felveszi a nulla értéket (többszálú programozásról lévén szó, a várakozás ideje alatt zajlik tulajdonképpen a játék). Rendszeres esemény lehet például két szereplő ütközése. Meggondolandó, hogy az ütközést annak a szereplőnek érdemes vizsgálnia, amelyik arra reagálni kíván. Ha például egy szellem újra meg újra felbukkanó gyertyákat gyűjt, akkor (habár mi a szellemet irányítjuk) a gyertyának érdemes vizsgálnia találkozást, minthogy neki lesz feladata egy új helyre ugrani. Itt a már ismert mindig ha parancs jöhet kapóra.

Szereplőközpontú programozás[szerkesztés]

Már többször szóba került, hogy a programozás során szereplőket vezérlünk. A programban használt szereplők a jobb alsó részen gyülekeznek, és mindegyikükhöz feladatok (eljárások), jelmezek és hangok tartoznak. Jelmezek például webböngészőből, fájlkezelőkből közvetlenül áthúzhatók a jelmezlistába, de hagyományos módon is megnyithatók képfájlok (bmp, jpg, png, gif stb.). Hangokra ez hasonlóképpen igaz (a Scratch kezeli például a wav és az mp3 formátumokat).

Érdekes eredményre jutunk, ha egy szereplő önmagának küld üzenetet: ilyenkor „klasszikus” eljárás-meghívást hozunk létre. A példa egy olyan katicát mutat, amelyet a nyílgombokkal lehet irányítani, és amely számára a piros szín halálos. Az egyes irányokba való elmozdításokban csak a szög beállítása eltérő, utána mind a lépés, mind a színellenőrzés közös rész. Most is üzenetküldést használhatunk. Paraméter nélküli eljárást készítettünk. Paraméteres eljárások készítését a környezet nem teszi lehetővé, de játékkészítésnél azok viszonylag ritkán volnának szükségesek, és globális változókkal egyébként is kiküszöbölhetők.

Mi tanulható meg a Scratch-ben?[szerkesztés]

Amit illik elfelejteni tanárként (és ami a gyerekeknek úgyse jutna eszükbe): adatfeldolgozás és számítási feladatok. Személyes tapasztalatom:amikor rátaláltam a Scratch-re, rövid próbálkozások után hasonló feladatokat próbáltam megvalósítani. Időbe tellett rájönnöm, hogy habár a környezet szemléletességét kihasználhatnám, mégsem ilyen célokra tervezték. A Scratch nem váltja ki a Pascalt (amely az adatfeldolgozáshoz és a számítási feladatokhoz használható), és a Pascal sem válthatja ki a Scratch-et (nagyon nehéz olyan programot kitalálni, amely mindkettőben jól elkészíthető).

A környezet célközönségének az általános iskolák felső tagozatát tekintjük, és meglátásunkat a Scratch-elők életkor szerinti eloszlását szemléltető diagram is alátámasztja: legtöbben a 10-14 évesek között használják a Scratch-et.

Külső hivatkozások[szerkesztés]

  1. Scratch 2.0 will be released on May 9, 2013. május 9. (Hozzáférés: 2015. december 24.)
  2. Számítógépes grafika