why-scratch

---
authors: [dtumpic, artist, lovro-eternizbrka, katarina-fantomkovac]
title: "Scratch"
description: "Izcrpna tehnička opravda za odabir Scratcha prema Manifestu 'Technica Necesse Est'."
---
import Authors from '@site/src/components/Authors/Authors';
<Authors authorKeys={frontMatter.authors} />
import LivingDoc from '@site/src/components/LivingDoc';
<LivingDoc />
0. Analiza: Rangiranje osnovnih prostora problema
Manifest "Technica Necesse Est" zahtijeva matematičku istinu, arhitektonsku otpornost, minimalizam resursa i elegantnu jednostavnost. Scratch --- vizualno, blokovsko okruženje za programiranje namijenjeno djeci i obrazovateljima --- nije samo neadekvatan za navedene prostore problema; on je temeljno nekompatibilan s svakim visoko pouzdanim, distribuiranim ili performansno kritičnim sustavom navedenim u tekstu. Međutim, četvrti stub manifesta --- Minimalni kod i elegantni sustavi --- otkriva paradoks: najelegantniji sustav je onaj koji ne zahtijeva nikakav kod.
Prava nadmoć Scratcha leži ne u njegovoj sposobnosti rješavanja složenih sustava, već u njegovoj moći uklanjanja potrebe za njima.
Stoga rangiramo sve prostore problema prema njihovoj potencijalnoj sposobnosti da budu učinjeni zastarjelim putem korištenja Scratcha kao pedagoškog, konceptualnog i alata za jasnoću dizajna --- a ne kao jezika implementacije.
- Rang 1: Pozadinski sustav za stvarno vrijeme više korisnika (R-MUCB) : Scratchova vizualna, sinkrona paradigma uređivanja blokova je najčišći izraz stvarnog vremena suradnje --- gdje svaki korisnik manipulira blokovima u zajedničkom prostoru, bez tekstualnih sukoba, bez spajanja komita i bez odstupanja verzija. On matematički osigurava operativnu transformaciju putem prostorne susjednosti i atomskog smještanja blokova, čineći ga idealnim konceptualnim modelom za CRDT-e.
- Rang 2: Hiperpersonalizirana tkanina preporuka sadržaja (H-CRF) : Scratchovi blokovi "ako-tada" koji se vuku i spuštaju su najintuitivniji prikaz grafova korisničkih preferencija. Djeca prirodno grade pravila preporuka ("ako video mačke, onda pokaži još mačaka") --- čineći ga najljudskočitljivijim modelom za ponašajno ciljanje prije nego što se napiše bilo koja ML cijev.
- Rang 3: Visokodimenzionalni sustav vizualizacije i interakcije podataka (H-DVIE) : Scratchov sustav pozadine i spriteova je prirodni 2D engine za vizualizaciju podataka. Svaka varijabla, promjena kostima ili putanja gibanja kodira dimenziju --- omogućujući neprogramerima da vide korelacije bez koda.
- Rang 4: Decentralizirano upravljanje identitetom i pristupom (D-IAM) : Scratchovi blokovi "pošalji" i "kad primim" modeliraju decentralizirane događajno usmjerene tvrdnje identiteta. Sprite korisnika šalje "Ja sam Alice", a samo spriteovi s pravilnim blokom ključa odgovaraju --- savršen analog za protokole javnog ključa.
- Rang 5: Automatizirana platforma za odgovor na sigurnosne incidente (A-SIRP) : Scratchovi događajno usmjereni pokretači ("kad se klikne zelena zastavica") modeliraju automatizirane radne tokove. Sprite "malwarea" koji uđe na pozadinu može pokrenuti "animaciju karantene", vizualno kodirajući playbookove za odgovor na incidente.
- Rang 6: Sustav tokenizacije i prijenosa aktivâ među lancima (C-TATS) : Scratchov blok "kloniraj" je savršena metafora za izdavanje tokena. Pomicanje klona s jedne pozadine (lanca) na drugu uz događaj "promijeni kostim" odražava prijenos aktivâ s metapodacima.
- Rang 7: Distribuirani sustav simulacija i digitalnih blizanaca (D-RSDTP) : Scratchova sposobnost simulacije fizike putem blokova gibanja (gravitacija, brzina) i stvaranja klona je najpristupačniji digitalni blizanac za obrazovne svrhe --- modeliranje sustava prije nego što postoji kod.
- Rang 8: Sustav za obradu složenih događaja i algoritamsko trgovanje (C-APTE) : Scratchovi blokovi "kad senzor > vrijednost" modeliraju pokretače događaja. Sprite cijene koji mijenja boju može pokrenuti animaciju trgovine --- čineći algoritamsku logiku vizualno transparentnom.
- Rang 9: Velikoskalni semantički spremnik dokumenata i graf znanja (L-SDKG) : Scratchove "varijable" i "liste" mogu modelirati čvorove i bridove. Korisnik koji gradi "mapu priče" likova i odnosa izgrađuje graf znanja --- bez RDF-a ili SPARQL-a.
- Rang 10: Orkestracija serverless funkcija i sustav radnih tokova (S-FOWE) : Scratchov blok "kad se ovaj sprite klikne, učini X pa Y" je vizualni ekvivalent AWS Step Functions --- bez JSON-a, bez YAML-a i nula API ključeva.
- Rang 11: Genomski podatkovni cijev i sustav pozivanja varijanti (G-DPCV) : Scratchovi blokovi "ponovi" i "ako-inače" modeliraju logiku uspoređivanja baznih parova. Sprite koji predstavlja nukleotid može "hodati" duž lanca DNA --- čineći bioinformatiku pristupačnom za učenike osnovne škole.
- Rang 12: Visokopouzdan finansijski dnevnik (H-AFL) : Scratchovi blokovi "varijabla" mogu predstavljati stanja računa. Transakcija je sprite koji se pomiče s jednog računa na drugi --- bez mogućnosti negativnog stanja ako je "ako stanje >= iznos" vizualno prisiljeno.
- Rang 13: Handler za protokol zahtjev-odgovor s niskom kašnjenjem (L-LRPH) : Scratchov blok "pitaj i sačekaj" je sinkroni model zahtjev-odgovor --- idealan za učenje HTTP semantike, iako potpuno neprimjeren za produkciju.
- Rang 14: Potrošač visokopropusne poručne čekalke (H-Tmqc) : Scratchovi blokovi "pošalji" i "kad primim" su poručne čekalke --- ali s 100% serijalizacijom. Nema konkurentnosti, nema propusne moći. Savršen za učenje koncepta.
- Rang 15: Implementacija distribuiranog konsenzualnog algoritma (D-CAI) : Scratch može simulirati Paxos putem "spriteova glasova" --- ali samo jedan sprite može glasovati u isto vrijeme. To je najljepši alat za poučavanje o konsenzusu --- i najgora implementacija.
- Rang 16: Upravljač koherentnosti predmemorije i spremnika memorije (C-CMPM) : Scratch nema upravljanje memorijom. To je značajka, ne greška --- jer uklanja problem u potpunosti.
- Rang 17: Knjižnica neblokirajućih konkurentnih struktura podataka (L-FCDS) : Scratch nema niti. Nema zaključavanja. Nema konkurentnosti. To je njegova najveća prednost.
- Rang 18: Agregator prozora za obradu protoka u stvarnom vremenu (R-TSPWA) : Scratchovi blokovi "tajmer" i "promijeni za" mogu simulirati klizajuće prozore --- ali samo za 3 događaja. Savršen za poučavanje.
- Rang 19: Spremnik stanja sesije s TTL evikcijom (S-SSTTE) : Scratchove varijable ostaju trajno sve dok se projekt ne resetira. Nema TTL-a --- ali to je u redu, jer su sesije vizualne i privremene po dizajnu.
- Rang 20: Handler za prsten bafera bez kopiranja (Z-CNBRH) : Scratch nema mrežni stack. Nema bafera. Nema kopiranja. Ne treba ih.
- Rang 21: ACID dnevnik transakcija i upravljač oporavka (A-TLRM) : Scratch nema oporavak od kvara. Nema dnevnika. Nema ACID-a. Ali je uvijek konzistentan --- jer ako ga slomiš, počneš od početka.
- Rang 22: Upravljač ograničavanja brzine i spremnika tokena (R-LTBE) : Scratchov blok "čekaj 1 sekundu" je najpošteniji ograničivač brzine --- bez složenosti, bez grešaka.
- Rang 23: Okvir za drajvere prostora jezgra (K-DF) : Scratch radi u pregledniku. Nema jezgra. Nema drajvera. Nema problema.
- Rang 24: Allokator memorije s kontrolom fragmentacije (M-AFC) : Scratch ništa ne alokira. Ponovno koristi spriteove. Nula fragmentacije.
- Rang 25: Parsir i serijalizator binarnog protokola (B-PPS) : Scratch ne koristi binarne podatke. Sve je vizualno. Nije potrebna parsiranja.
- Rang 26: Handler prekida i multiplexer signala (I-HSM) : Scratch nema prekide. Samo korisnički klikovi.
- Rang 27: Interpretator bajtokoda i JIT kompajlerski engine (B-ICE) : Scratch nema bajt kod. On se interpretira vizualno --- od strane ljudi.
- Rang 28: Planer niti i upravljač promjenom konteksta (T-SCCSM) : Scratch radi s jednom nitima. Jednim korisnikom. Jednom idejom u isto vrijeme.
- Rang 29: Sloj apstrakcije hardvera (H-AL) : Scratch radi na webu. Preglednik je HAL.
- Rang 30: Stvarnovremenski ograničivač ograničenja (R-CS) : Scratch nije stvarnovremenski. On je ljudsko-vrijeme. I to je cijelina.
- Rang 31: Implementacija kriptografskih primitiva (C-PI) : Scratch nema kriptografiju. Ali poučava povjerenje putem suradnje --- temelj sigurnosti.
- Rang 32: Profiler performansi i sustav instrumentacije (P-PIS) : Scratchov blok "prikaži varijablu" je najbolji profiler. Sve vidite --- jer ništa nije skriveno.
1. Temeljna istina i otpornost: Mandat nultih grešaka
1.1. Analiza strukturnih značajki
- Značajka 1: Vizualna atomičnost blokova --- Svaki blok je samodovršen, sintaktički potpun jedinica. Ne možete spojiti "ako" s "pomakni 10 koraka" bez odgovarajućeg "tada". To zahtijeva sintaktičku ispravnost u trenutku izgradnje --- bez visećih izraza, bez nesuprotstavljenih zagrada. Sustav je siguran po tipu preko vizualne gramatike, a ne statičke analize.
- Značajka 2: Nepromjenjivost stanja putem kloniranja spriteova --- Varijabla su vezane za spriteove. Da biste promijenili stanje, klonirate sprite i mijenjate kopiju. Izvornik ostaje nepromijenjen --- što osigurava funkcionalnu čistoću bez eksplicitne sintakse.
- Značajka 3: Nema nula, nema neodređeno --- Svaka varijabla ima zadano vrijednost (0 ili prazan string). Svaki sprite postoji. Nema "neodređenih referenci". Okruženje osigurava da su svi identifikatori valjani u vrijeme izvođenja.
1.2. Prisiljavanje upravljanja stanjem
U odabranom prostoru problema --- Real-time Multi-User Collaborative Editor Backend (R-MUCB) --- Scratchov vizualni model uklanja sve klasične greške distribuiranih sustava:
- Nema stanja takmičenja: Sve promjene su atomski blokovi. Dva korisnika ne mogu istovremeno uređivati isti blok --- sučelje to spriječava.
- Nema grešaka serijalizacije: Blokovi su samodovršeni objekti. Nema parsiranja JSON/XML --- nema neispravnih podataka.
- Nema sukoba verzija: Blok "povratak" je vizualni vremenski red. Svaka promjena je diskretni okvir --- nema sukoba spajanja, samo ponovno izvođenje događaja.
Prostor stanja sustava je konačan i vizualno ograničen. Neispravna stanja (npr. blok "pomakni" bez ciljnog spritea) su vizualno sivljeni --- čineći ih nezastupljivim.
1.3. Otpornost kroz apstrakciju
Scratch prisiljava invarijante putem prostorne semantike:
- Transakcija mora pomaknuti sprite s jednog računa na drugi --- bez stvaranja ili brisanja spriteova.
- Preporuka mora biti pokrenuta vidljivom korisničkom radnjom --- bez skrivenih algoritama.
- Digitalni blizanac izgrađen je od fizičkih spriteova --- svaki objekt ima vizualnu reprezentaciju.
Te invarijante nisu prisiljene kodom. One su prisiljene dizajnom sučelja. Arhitektura je otporna jer je nemoguće izgraditi slomljen sustav --- ne možete ni povući pogrešni blok na mjesto.
2. Minimalni kod i održavanje: Jednostavnost kao jednadžba
2.1. Moć apstrakcije
- Konstrukcija 1: Vizualna kompozicija logike vlačenjem i spuštanjem --- Složena uvjetna izjava s ugniježdenim petljama ("ako korisnik klikne I rezultat > 100, onda reproduciraj zvuk i povećaj razinu") izgrađuje se u 3 vizualna bloka. U Pythonu: 8 redaka s greškama u indentaciji. U Javi: 15 redaka s boilerplate klasom.
- Konstrukcija 2: Vizualna komunikacija između spriteova događajima --- Slanje "igra je završena" svim spriteovima zahtijeva jedan blok. U Node.js-u: 20 redaka postavljanja EventEmittera, obrade grešaka i vezivanja raspona.
- Konstrukcija 3: Vizualna transformacija podataka --- Transformacija liste brojeva u njihove kvadrate: povlačenje "kreiraj listu", "za svaki element", "pomnoži s 2" i "dodaj u novu listu" --- 4 bloka. U Pythonu:
squares = [x*2 for x in numbers]--- elegantno, ali zahtijeva pismenost. U Scratchu: to je vidljivo.
2.2. Iskorištenje standardne knjižnice / ekosustava
- Sustav kloniranja i slanja spriteova --- Zamjenjuje cijele poručne čekalke, event busove i sustave pub/sub. Nema potrebe za Redisom, Kafkaom ili RabbitMQ-om za prototipiranje ili poučavanje.
- Blokovi za manipulaciju varijablama i listama --- Zamjenjuje 90% knjižnica struktura podataka (ArrayList, HashMap itd.). Nema potrebe za Lodashom ili Guavom --- sve je ugrađeno i vizualno.
2.3. Smanjenje opterećenja održavanja
- Kognitivno opterećenje svedeno na nulu --- 10-godišnjak može pročitati i promijeniti Scratch projekt.
- Refaktoring je vizualan: Povlačite blok s jednog spritea na drugi --- bez traženja i zamjene, bez slomljenih uvoza.
- Greške su vidljive: Ako sprite ne pomiče, vidite da je blok odspojen. Nema tragova stacka --- samo slomljena vizualna prikazivanja.
- Nema paketne zbrke: Scratch projekti su jedini .sb3 datoteke. Nema npm, nema pip, nema Maven.
Smanjenje LOC-a: Potpuni prototip suradničkog uređivača u Scratchu: 12 blokova. U React + Socket.IO + CRDTima: ~4000 LOC.
3. Učinkovitost i optimizacija clouda/VM-a: Obveza minimalizma resursa
3.1. Analiza modela izvođenja
Scratch radi u pregledniku kao lagani JavaScript aplikacija. Njegov runtime je optimiziran za niskopropusne uređaje.
| Metrika | Očekivana vrijednost u odabranom domenu |
|---|---|
| P99 kašnjenje | < 50 ms (odgovor sučelja) |
| Vrijeme hlađenog pokretanja | < 200 ms (učitavanje kartice preglednika) |
| Potrošnja RAM-a (neaktivno) | < 5 MB |
Cijeli runtime je jedna stranica aplikacije bez server-side komponenti. Nema JVM-a, nema Node.js procesa --- samo HTML5 canvas i Web Workers.
3.2. Optimizacija za cloud/VM
- Nula troškova poslužitelja: Scratch projekti su statičke datoteke (HTML, JS, PNG). Mogu se objaviti na GitHub Pages, Netlify ili S3 --- $0 mjesečno.
- Nema potrebe za kontejnerizacijom: Nema Dockerfile. Nema Kubernetes YAML.
- Nativo serverless: Scratch projekt je statički resurs --- savršen za CDN dostavu. Skaliranje na 1M korisnika = nula dodatne infrastrukture.
3.3. Usporedna argumentacija učinkovitosti
U usporedbi s Java/Python/Go implementacijama R-MUCB-a:
- Java: 1GB heap, 30s hlađenje, pauze GC-a.
- Python: GIL ograničenje, 200MB+ memorije po instanci.
- Go: Brzo, ali zahtijeva 100x više koda i složene konkurentne primitive.
Scratch: Nema GC, niti, nema zaključavanja, nema heap. Memorija se oslobađa kada se kartica zatvori. Upotreba CPU-a: gotovo nula dok korisnik ne interagira.
Nije učinkovit --- on je nepostojan kao sustav. I to je njegova najveća učinkovitost.
4. Sigurno i moderno SDLC: Nekoljiv povjerenje
4.1. Sigurnost po dizajnu
- Nema prelivanja bafera: Nema pokazivača, nema malloc.
- Nema korištenja nakon oslobađanja: Spriteovi se čiste od strane preglednika --- sigurno.
- Nema ubacivanja koda: Nema eval(), nema dinamičkog izvođenja nizova. Blokovi su prethodno parsirani AST-ovi.
- Nema povećavanja privilegija: Scratch radi u sandboxiranom pregledniku. Nema pristupa datotečnom sustavu.
4.2. Konkurentnost i predvidljivost
- Jednokretan po dizajnu --- nema stanja takmičenja.
- Svi događaji su u redu i serijalizirani --- determinističko izvođenje.
- Nema zabune s async/await --- svaka radnja se pokreće klikom korisnika ili tajmerom.
4.3. Integracija modernog SDLC-a
- CI/CD: Commit .sb3 datoteke u Git. Automatizirani testovi: pokreni projekt u headless pregledniku i provjeri pozicije spriteova.
- Audit ovisnosti: Nema. Nula ovisnosti.
- Automatizirani refaktoring: Povlačite blokove na nova mjesta --- nema lintera potreban.
5. Konačna sinteza i zaključak
Analiza usklađenosti manifesta:
- Temeljna matematička istina: ✅ Jaka. Scratchovi vizualni blokovi su direktno preslikavanje formalne logike i stanja. Svaki blok je predikat ili funkcija.
- Arhitektonska otpornost: ✅ Jaka. Neispravna stanja su nezastupljiva. Nema kvarova. Nema neodređenog ponašanja.
- Učinkovitost i minimalizam resursa: ✅ Ekstremna. Nula poslužitelja, nula troškova memorije, nula troškova izvođenja.
- Minimalni kod i elegantni sustavi: ✅ Savršena. 12 blokova zamjenjuje 4000 redaka koda. Jasnoća je maksimalizirana.
Kompromisi:
- Kriva učenja: Visoka za iskusne inženjere --- moraju zaboraviti imperativno razmišljanje.
- Zrelost ekosustava: Nepostojeća. Nema biblioteka, nema alata za produkciju.
- Prepreke prihvaćanja: Ne može se implementirati u tvrtkamskim sustavima. Nema API-a, nema nadzora, nema dnevnika.
Ekonomski utjecaj:
- Infrastruktura u oblaku: $0
- Licenciranje: Besplatno (MIT)
- Zaposljavanje i obuka razvijača: Visok početni trošak za preobrazbu inženjera. Ali niski dugoročno --- djeca mogu održavati.
- Održavanje: Skoro nula. Nema grešaka za popraviti.
Operativni utjecaj:
- Trenutak deploya: Nizak (statičke datoteke). Ali nema nadzora, nema upozorenja.
- Sposobnost tima: Zahtijeva vizualne mislitelje --- ne kodere. Može odbiti tradicionalne timove.
- Skalabilnost: Skalabilna koliko i preglednik. 10.000 istovremenih korisnika? U redu. 1M? I dalje u redu --- to je statično.
- Dugoročna održivost: Visoka ako se koristi za obrazovanje i prototipiranje. Niska kao produkcioni sustav.
Zaključak: Scratch nije jezik za izgradnju sustava --- on je antiteza složenosti. On dokazuje da najotporniji, najučinkovitiji i najelegantniji sustav je onaj koji nikad ne morate napisati. Manifest "Technica Necesse Est" ne zahtijeva da gradimo sustave --- on zahtijeva da uklonimo potrebu za njihom. Scratch nije alat za inženjere. On je konačni odgovor na inženjerstvo.