# Snap! (programazio-lengoaia)

Snap! hezkuntzara zuzendutako bloke bidezko programazio-lengoaia grafiko libre bat da. Ideia matematiko eta konputazionalak ikasiz animazioak, bideo-jokoak, istorio interaktiboak eta abar sortzeko aukera ematen du. Snap! Scratchen inspiratuta dago baina programazioaren munduan lehen pausoak emateko egokia izateaz gain bigarren hezkuntzan eta unibertsitatean erabilgarri egiten duten ezaugarri gehigarri aurreratuak ditu. JavaScript erabiliz garatua dago eta web nabigatzailean exekutatzen da.

## Historia
### Jens Mönigek Scratch ezagutzen du

2007an Jens Mönig alemaniarrak Scratch proiektua ezagutu zuen. Garai hartan abokatua zen baina 10 urte lehenago Smalltalk garatzaile bezala lan egin zuen IBMn, erlazio legalak hobeto ulertzeko sistema grafiko bat garatzen. Scratch Smalltalk programazio-lengoaiaren Squeak dialektoan garatua zegoen eta lengoaiaren potentzial osoa erabiltzen zuen proiektu bakarretakoa zen. Jens liluratuta geratu zen Scratchen garapen ingurunearekin: "Inoiz ikusi dudan gauzarik ederrena da".
Jens bere denbora librean Scratchekin proiektuak garatu eta Scratch komunitatearen foroan parte hartzen hasi zen. Lan ona egiten ari zela ikusita MITeko Scratch taldearekin bat egitera gonbidatu zuten, komunitateko moderatzaile bezala.

### Chirp

2008an Jens Mönigek Chirp izeneko Scratchen mod bat argitaratu zuen. Scratchen 1.2.1 bertsioarekin bateragarria zen eta komunitatetik sortutako iradokizun eta ideiei bidea emateko asmoa zuen.

### BYOB (Build Your Own Blocks)
#### 1.0 bertsioa

2008ko urrian BYOB (Build Your Own Blocks, eraiki zure blokeak ingelesez) izeneko Scratchen hedapen esperimentalaren prototipoa argitaratu zuen Jens Mönigek. Izenak dioen bezala erabiltzaileei bloke pertsonalizatuak sortzeko aukera eskaintzen zien, modu horretan programazioko hainbat kontzeptu garrantzitsu ikasteko bidea emanez:
* Prozedura eta funtzioak definitzea
* Parametroak pasatzea
* Prozedura/funtzio barneko aldagaiak
* Errekurtsioa
* Atomizitatea
BYOB 1.0 Scratch 1.3 bertsioan oinarrituta zegoen.

#### 2.0 bertsioa

2009ko abuztuaren 30ean Jens Mönigek Scratch 1.4n oinarritutako BYOB 2.0 bertsioa argitaratu zuen. Berrikuntza nagusiak hauek izan ziren:
* Sprite habiagarriak sortzeko aukera ematea (egitura errekurtsioa)
* Bloke pertsonalizatuei egindako hobekuntzak (errekurtsio funtzionala)
* Bloke ez-pertsonalizatuen blokeak ikuskatu eta Smalltalk kodea editatzeko aukera
Chirp blogean argitaratu zuenez harrituta eta pixka bat beldurtuta zegoen BYOB izaten ari zen harrera onagatik eta munduan zehar bigarren hezkuntzan eta unibertsitatean erabiltzen hasi zirelako.

#### 3.0 bertsioa

2009ko udan Berkeleyko Brian Harvey eta Dan Garcia informatikako irakasleek “CS10 - The Beauty and Joy of Computing” izeneko kurtso pilotu batean erabiltzeko BYOBen bertsio bat eskatu zioten Jens Mönigi. Harvey eta Mönig lehen mailako prozedurei buruz eztabaidan hasi ziren. Bien artean BYOB hobetzeko esperimentuak egiten hasi ziren. LISP programazio-lengoaiaren Scheme dialektotik hartutako dozena bat bloke sortu zituzten eta Scratchen barneko funtzionamenduari eta interfazeari aldaketa batzuk egin zizkioten. Helburua Scratchen jatorrizko hartzaileez gain maila aurreratuagoko ikasleentzat ere erabilgarri bihurtzea zen. Horrela sortu zen 2010eko abuztuaren 6an argitaratu zen BYOB 3.0 bertsioa.
Berrikuntza nagusiak hauek izan ziren:
* Goi ordenako funtzioen tresna-liburutegia
* Lambda, closure osoa barne (bloke pertsonalizatu anonimoak)
* Zerrenden zerrendak
* Prozedura global eta lokalak
* Structure and interpretation of computer programs (SICP) liburuaren estiloko objektuetara bideratutako programazioa
* Egoera iraunkorreko proiektuak, Smalltalk estiloko irudietan oinarritutako programazioa
* Erreferentzia eskuliburu eta tutorial berriak

#### 3.1 bertsioa

3.1 bertsioa 2011ko maiatzean argitaratu zuten Harvey eta Mönigek eta berrikuntza hauek zituen:
* Lehen mailako sprite-ak
* Objektu interfaze orokortua
* Prototipo herentzia
Bertsio honetan BYOBekin batera Snap! izena erabiltzen hasi ziren, baina 4.0 bertsioa izan zen ofizialki Snap! deitutako lehena.

### Snap!

2010eko udako Scratch konferentzian Jens Mönig eta Brian Harvey Scratch/BYOB zuzenean web nabigatzailean nola exekutatu eztabaidatzen hasi ziren MITeko MediaLab-eko kideekin. Brian Silvermanek JavaScript begiratzea gomendatu zien, "Scheme nabigatzailean" moduko zerbait zela esanez. Konferentziaren azken egunean Mönifg eta Harveyk nabigatzaileen teknologian egindako aurrerapenei esker DOMa eta CSSa albo batera utzi eta Canvas elementua erabil ote zezaketen galdetu zioten beren buruari.
Jens Mönigek JavaScript ikasi nahi zuen. Asmo horrekin eta BYOB 4 (Snap! izango zena) web nabigatzaileetara eramateko erabilgarria izango zelakoan, Squeaken erabiltzailearen interfazeak sortzeko erabiltzen den Morphic sistema grafikoa JavaScript eta Canvas elementura egokitzen hasi zen. 2011ko urtarrilaren 5ean argitaratu zuen Morphic.js-ren lehen bertsioa, MIT lizentziarekin.
Jens Mönig eta Brian Harveyk Scratch 1.4ren itxura eta BYOBen funtzionalitate gehigarriak zituen garapen berri bat hasi zuten JavaScript erabiliz eta Snap! deitu zuten. Izen aldaketaren arrazoia zenbait irakasleri BYOB izen desegokia iruditzea izan zen, BYOBek ingelesez beste esanahi bat duelako, Bring Your Own Bottle/Beer, ekarri zure botila/garagardoa). Web nabigatzaileetan erabiltzeko aukera emanez hezkuntzan erabiltzea erraztu nahi zuten. Plataforma-anitza bihurtzeaz gain programa berri bat instalatu beharra saihesten zuten. Hori abantaila bat zen, ikastetxeetako IKT departamenduek ezagutzen ez zuten software berri bat instalatzeari trabak jartzen zizkiotela ikusi baitzuten.
2012ko irailak 17an Snap! 4.0 Alpha iragarri zuten blogean. Garapen berria BYOB3 baino 11 aldiz azkarragoa zen.
Snap! 4.0 "Walthan" 2015eko maiatzak 1ean argitaratu zuten.
2018ko uztailaren 9an argitaratutako 4.2.1 bertsiotik aurrera euskaraz erabil daiteke.

## Zabalpena

2010ean Kaliforniako Unibertsitatea Berkeleyn “CS10 - The Beauty and Joy of Computing” kurtsoan BYOB erabiltzen hasi ziren. 2012ko udazkenaz geroztik Snap! erabiltzen dute. Ikasleen erdiak baino gehiago emakumezkoak izan ohi dira, adibidez, 2017ko udaberrian %60 ziren.

## Lizentzia

Snap!-ek GNU Affero General Public License v3.0 (AGPL) lizentzia du.

## Erreferentziak

* 1 2 3 (Alemanez) «Jens Mönig am Scratch Day 2013» Scratch Dach (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Mönig, Jens. «Chirp: A Community Edition Based On Scratch» Scratch archived forums (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Mönig, Jens. «Chirp: A Community Edition Based On Scratch» Chirp Blog - experimenting with the Scratch Source Code from MIT (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Mönig, Jens. (2008-10-21). «ITopic: Build Your Own Blocks (BYOB)» Scratch Forums (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Mönig, Jens. (2008-10-21). «Build Your Own Blocks in Scratch» Chirp Blog (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Mönig, Jens. (2008-10-21). (PDF) Build Your Own Blocks in Scratch - a prototype. (Noiz kontsultatua: 2018-09-29).
* 1 2 «Snap! (programming_language) - History» Scratch Wiki (Noiz kontsultatua: 2018-09-29).
* 1 2 3 (Ingelesez) Mönig, Jens. «Nestable Sprites for Scratch» Chirp Blog (Noiz kontsultatua: 2018-09-29).
* 1 2 (Ingelesez) Mönig, Jens. (2010-05-10). «First Class Procedures for Scratch» Chirp Blog (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) BYOB 3.0 — Build Your Own Blocks. (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Harvey, Brian. [https://web.archive.org/web/20110719151059/http://byob.berkeley.edu/BYOB.pdf «Bringing “No Ceiling” to Scratch: Can One Language Serve Kids and Computer Scientists?»] (PDF) Constructionism 2010, Paris (Noiz kontsultatua: 2018-09-29).
* 1 2 (Ingelesez) UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2010. (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) Mönig, Jens. «BYOB 3.1 - Prototypal Inheritance for Scratch» Chirp Blog (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) BYOB 3.1 — Build Your Own Blocks (a/k/a SNAP!). (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) The Beauty and Joy of Computing. (Noiz kontsultatua: 2018-09-29).
* 1 2 (Ingelesez) «BYOB 3 - Discussion Thread» Scratch archived forums (Noiz kontsultatua: 2018-10-01).
* ↑ (Ingelesez) Mönig, Jens. (2011-01-05). «morphic.js - Morphic for JavaScript» Chirp Blog (Noiz kontsultatua: 2018-09-30).
* 1 2 (Ingelesez) Mönig, Jens. (2011-01-05). «morphic.js - Morphic for JavaScript» Chirp Blog (Noiz kontsultatua: 2018-09-30).
* ↑ (Ingelesez) «Morphic» Scratch Wiki (Noiz kontsultatua: 2018-09-30).
* ↑ (Ingelesez) Mönig, Jens. morphic.js - a lively Web-GUI inspired by Squeak. (Noiz kontsultatua: 2018-09-30).
* 1 2 (Ingelesez) Harvey, Brian. «The Beauty and Joy of Computing: Computer Science for Everyone» (PDF) Constructionism 2012, Athens, Greece (Noiz kontsultatua: 2018-10-01).
* ↑ (Alemanez) «Snap!» Scratch Dach Wiki (Noiz kontsultatua: 2018-10-01).
* 1 2 (Ingelesez) Mönig, Jens. (2012-09-17). «Snap! Build Your Own Blocks» Chirp Blog (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) «Walthan» Github 2015-05-01 (Noiz kontsultatua: 2018-09-29).
* ↑ (Ingelesez) «Add Basque translation» Github 2018-06-26 (Noiz kontsultatua: 2018-09-30).
* ↑ (Ingelesez) «4.2.1» Github 2018-07-09 (Noiz kontsultatua: 2018-09-30).
* ↑ «Snap! eta Snap4Arduino euskaratu ditugu» iametza interaktiboaren bloga 2018-10-22 (Noiz kontsultatua: 2018-10-22).
* ↑ (Ingelesez) CS10 : BJC (The Beauty and Joy of Computing) - UC Berkeley EECS - Fall 2012. (Noiz kontsultatua: 2018-10-01).
* 1 2 (Ingelesez) CS10 - The Beauty & Joy of Computing - Spring 2018. (Noiz kontsultatua: 2018-10-01).
* ↑ (Ingelesez) «Snap--Build-Your-Own-Blocks/LICENSE» Github (Noiz kontsultatua: 2018-10-01).

## Ikus, gainera

* Scratch
* Snap4Arduino

## Kanpo estekak

* Webgune ofiziala
* Iturburu kodea
* Gidaliburu ofiziala (PDF)
* Datuak: Q1002996
* Multimedia: Snap! (programming language) / Q1002996