
Mnogima je poznat Scratch, dječje programsko okruženje u kojem se učenje obično svodi na kreiranje kreativnih projekata po principu „od jednostavnog do složenog“. Istovremeno, „klasični pristup“ učenju programiranja (varijable → grane → petlje → funkcije → strukture → objekti → …) u Scratchu je težak.
Međutim, promjena redoslijeda učenja koncepata (nazovimo ih konceptima) strukturiranog, objektno i događajno orijentiranog programiranja, skrivajući ih iza šarenih sprijtova i interaktivnih animacija, ne znači da koncepte ne treba isticati. Pogotovo ako cilj nije toliko razvoj kreativnih sposobnosti koliko učenje programiranja. Pokušao sam da odrazim ovu ideju u svom .
Prva stvar s kojom se početnik susreće su sprajtovi. Iako u Scratchu ne postoji objektno orijentirano programiranje per se, spriteovi se mogu smatrati objektima. U ovoj fazi, učenik vidi da program može imati mnogo objekata čije ponašanje kontroliraju skripte koje su izvan njih. Sprajtovi primaju komande ili prenose informacije o svom stanju na zahtjev, odnosno programiranje se svodi na upravljanje objektima.
Druga stvar koja odmah pogađa mladog programera u Scratch-u je koncept višenitnog rada. Svaki sprite može imati nekoliko skripti koje se pokreću istovremeno. Više duhova također može pokrenuti svoje programe istovremeno jedan s drugim. Štaviše, pokazalo se da je teže organizirati sekvencijalno izvršenje.


Već na prvoj lekciji ne možemo izbjeći upoznavanje s ciklusima. U suprotnom, mačka zaista neće pobjeći. U ovoj fazi, poznanstvo se mora ostaviti intuitivno i površno. Ograničavamo ga na petlje "repeat always" i "repeat... times", koje je lakše razumjeti. Uslovna petlja se proučava u lekciji posebno posvećenoj petlji. Ova lekcija pretpostavlja poznavanje Bulovih izraza i varijabli.
Budući da je Scratch okruženje vođeno događajima, blokove uvjetnih izraza je lakše naučiti prije varijabli. Uslov mogu biti određeni događaji.

Po mom mišljenju, ovaj redoslijed je bolji, jer za svaku lekciju uvodimo minimum pojmova. I to ne apstraktne, ali odmah vidimo njihove praktične prednosti.
Ako prvo proučavate varijable, onda je teško pokazati njihovu svrhu i koristi, jer uvjetni operator, unos podataka i generiranje slučajnih brojeva ranije nisu proučavani.
U Scratchu, ne računajući liste, programer se susreće sa tri tipa podataka: brojevima, stringovima i Booleovim. U ovom slučaju, tip je vezan za vrijednost, a ne varijablu. Nema potrebe da konvertujete nizove u brojeve i nazad. Nizovi se ne navode.
Blok koji vraća logičku vrijednost i ima karakterističan ugaoni oblik može se umetnuti u zaobljena polja. Obratno nije tačno: tamo gde se pretpostavlja Boolean izraz, ne može se umetnuti regularna varijabla.

Scratch je implementiran tako da ne dođe do kritičnih grešaka tokom izvršavanja. Očigledno je to razlog zašto, ako pokušate koristiti string u aritmetičkoj operaciji, on se zamjenjuje nulom (pogledajte prvi snimak ekrana).
Programer bi trebao znati da su mogućnosti programskih jezika proširene bibliotekama. Radom u Scratchu učenik može povezati dodatke koji dovode do pojave novih komandi u okruženju.

Funkcije u Scratchu su implementirane u sekciji "Ostali blokovi", gdje s jedne strane kreirate vlastiti blok koji se može umetnuti u druge skripte. S druge strane, moramo prikupiti funkcionalnost ovog bloka, odnosno šta će on raditi.

Ne postoji povratna vrijednost iz Scratch funkcije.
Stoga učenje koncepta programiranja u okruženju vođenom događajima ostavlja trag. U suštini, prvo proučavamo složenije i apstraktnije koncepte i tek kada dublje uđemo u proces prelazimo na elemente strukturiranog programiranja. Da li je ovo plus ili minus za prvo poznanstvo je sporno.
izvor: www.habr.com
