**Scratch** estas eduka programlingvo ebliganta homojn de ajnaj sperto, fono kaj aĝo, eksperimenti kun diversutila komputila programado, kombinante blokojn por kontroli bildojn, muzikon kaj sonojn.

Ĝi estis kreita de la Lifelong Kindergarten Group ĉe MIT Media Lab per teamo gvidita de Mitchel Resnick kaj aperis unuafoje somere 2006.
Scratch povas esti instalata kaj senpage redistribuata por Vindoza, Mac OS X aŭ Linuksa operaciumoj. La fontokodo disponeblas laŭ licenco ebliganta ŝanĝojn por nekomerca uzo.

La nomo Scratch devenas de la diskturna teĥniko de skrapado (rapida re- returnado de gramofondiskoj por krei muzikaĵojn) kaj referencas al la nomo kaj ĝia uzmaniero. La simileco al muzika "skrapado" estas reuzebleco de pecoj: en Scratch ĉiu objekto, grafikaĵo, sono kaj skriptoj estas facile importeblaj en novajn programojn kaj ŝanĝita laŭ alia maniero, ebligante novulojn tuj vidi rezultojn kaj motiviĝi al sekvaj provoj

Lingvoj kaj medioj
------------------

Scratch estas uzata mondvaste en pluraj, diversaj medioj: lernejoj, muzeoj,Scratch Day at Science Museum of Minnesota Arkivigite je 2013-04-08 per la retarkivo Wayback Machine komunumaj centroj kaj hejmoj. Ĝi estas dediĉita speciale por 6- ĝis 16-jaraĝuloj, sed homoj de ĉiu aĝo uzas Scratch. Ekzemple, junuloj povas krei projektojn kun siaj gepatroj aŭ pli aĝaj gefratoj, kaj adoleskantoj povas uzi Scratch dum enkondukaj lecionoj pri programado.

La ĉefa prioritato de la lingvokreintoj estis prepari la lingvon kaj programadan medion intuiciajn kaj facile lerneblajn por infanoj sen priprogramada sperto. Ekzistas tamen granda kontrasto inter potenca plurmedia funkcia kaj plurfadena programadostilo, kaj relative limigita amplekso de Scratch programlingvo.

```
La fasado de la Scratch programada medio dividas la ekranon en kelkajn areoj: maldekstre blokaro, meze la aktuala informo pri movobjektoj skriptoareo, dekstre la scenejo kaj listo de movobjektoj. La blokaro konsistas de kodopartoj (nomataj "blokoj") kiun oni povas treni en skriptoareon por krei programon. Por igi la blokaron ne tro vasta, ĝi estas aranĝita en ok grupojn da blokoj: movo, aspekto, sono, skribilo, regilo, sentado, operatoroj kaj variabloj.
```

La programada medio baziĝas je esploroj de diversaj trajtoj - kiuj ne kongruis intuician lernadon - etis forigitaj, la ceteraj - kuraĝigantaj komencantojn kaj faciligantaj esploradon kaj lernadon - estis konservitaj. Kelkaj rezultoj estas surprizaj, ĉar Scratch multe diferas se aliaj instrucelaj programlingvoj (kiel Basic, Logo aŭ Alice). Ekzemple plurfadena kodo kun dissendo de mesaĝoj estas baza en Scratch, sed mankas funkcioj kaj manipulado de dosieroj. Skalaroj kaj ĉenoj ekzistas sed kun limigita ebleco de manipulado.

Komunumo
--------

Scracth kreas ankaŭ aktivan komunumon de uzantoj, kiu ebligas prezenti siajn projektojn. Ĝi ankaŭ stimulas modifi la ekzistantajn projektojn aŭ uzi iliajn partojn por krei la novajn.
Komunumo, per propra paĝaro, ankaŭ celas kunigi studentojn uzantajn Scratch, ĝiajn ŝatantojn kaj instruistojn, por komune solvi problemojn, kaj per komuna esplorado helpi unu la alian, samtempe disvastiĝante sian kreemon.

La komunumo organizas ankaŭ la t.n. "Tagon de Scratch". Ĝi kunigas la komunanojn en unu lokon, ebligante fizike ekkoni unu la alian, kaj per ludado kaj babilado atingi difinitaj taskoj. La "Tago de Scratch" instigis kreon de pluraj kluboj kaj asocioj agantajn en diversgrandaj agoterenoj.

Programado
----------

Eĉ tute junaj infanoj kaj plenkreskuloj sen kono de programado kapablas uzi Scratch, kreante interesajn, instigan eksperimenton pri programado. La programada procezo konsistas de kunigado de grafikaj elementoj kaj bezonas malmultan tajpadon. Tio forigas sintaksajn erarojn kaj devon lerni komandojn.

Kreado de projektoj en Scratch rilatas al filmoj per uzo de esprimoj kiel scenejo, kostumo; de klaraj movkomandoj, nomoj de koloroj. Ĉiuj uzas ĉiutagajn lingvaĵojn por plifaciligi kompreni la projekton kaj minimumi eblecon erari.

Movobjektoj rilatas al testudo de programlingvo Logo sed kun pli multaj eblecoj. Oni povas ŝanĝi kostumojn, (mal)pligrandigadi ilin, paroligadi, pensigadi, ludi sonojn. La movobjektoj povas interrilati inter si kaj la scenejo ŝanĝante siajn ecojn, (mal)aperante, multiplikante, kreante novajn objektojn aŭ forigante la ekzistantajn. La objektoj povas ankaŭ reagi al konduto de la uzanto - per klavaro kaj muso.

La ĉefekrano de Scratch dividiĝas je kvar partoj:

* breto kun ĉiuj disponeblaj blokoj (komandoj)
* laborareo kie programisto ilin kunigas, difinas sonojn kaj aspekton kreante skriptojn
* scenejo kie la movobjektoj funkcias kaj aperas ĉiuj enig-/eligaj procedoj
* biblioteko de movobjekotj, kostumoj, scenejoj

La blokoj (komandoj) estas dividitaj laŭ funkcio distingita per koloro:

| Funkcio | Koloro | Ekzemplaj komandoj |
| --- | --- | --- |
| movo | blua | iri, celi al, turni ... |
| aspekto | violkolora | ŝanĝi kostumon, diri ... pensi ... ŝanĝi grandecon ... |
| sono | rozkolora | aŭdigi sonon, paŭzi sonon, ŝanĝi laŭtecon, ŝanĝi rapidecon ... |
| skribilo | malhelverda | forigi desegnaĵon, malsuprenigi/suprenigi skribilon, ŝanĝi skribkoloron, ŝanĝi dikecon |
| regilo | oranĝa | kiam komencita, kiam la butono ... estis presita, kiam la objekto estis alklakita, se ... alie ... ripeti se ... lanĉi, fini ... |
| sentado | turkisa | musa x/y pozicio, musklavo premita?, koloro ... estis tuŝita, demendi ... |
| operatoroj | helverda | + , -, \*, / , hazarda nombro inter ... kaj ... <, =, >, kaj , aŭ , ne, litero ... el teksto, longeco de teksto .... |
| variabloj | ruĝa | nova variablo, nova listo, elemento ... el listo ... |

Derivaĵoj
---------

Ekzistas kelkaj derivaĵoj de Scratch http://wiki.scratch.mit.edu kiuj baziĝas je fontokodo de Scratch. Tiuj programoj kutime havas aldonajn "blokojn" aŭ ŝanĝitan fasadon.
Unu de ili, BYOB http://byob.berkeley.edu (kio signifas: Build Your Own Blocks [kreu proprajn blokojn], disvastigata de Jens Mönig) kiu ebligas al uzantoj, kreadon de propraj blokoj, estas uzita por instrui programadon ĉe Berkeley. La fontokodo de Scratch baziĝas je Squeak, kiu baziĝas je Smalltalk-80. Scartch estas malfermkoda kaj elŝuteblas de sia TTT-paĝaro http://info.scratch.mit.edu Arkivigite je 2012-06-18 per la retarkivo Wayback Machine.

* Kategorio Scratch (programlingvo) en la Vikimedia Komunejo (Multrimedaj datumoj)



|  |  |
| --- | --- |
| Bibliotekoj | * PeEnEo: 393325
* GND: 7860906-9
* LCCN: sh2008006648
* NKC: ph751040
 |