# Dietro il coding/Un po' di storia…

Dietro il coding
Copertina Tutti i moduli · Sviluppo
    CopertinaDietro il coding/Copertina
* Che cos'è il codingDietro il coding/Che cos'è il coding
* Perché è così importante?Dietro il coding/Perché è così importante?
* Una valutazione storicaDietro il coding/Una valutazione storica
* Come si parla del coding?Dietro il coding/Come si parla del coding?
* Gli schieramenti in campoDietro il coding/Gli schieramenti in campo
* Primo Intermezzo: che significa opensource?Dietro il coding/Primo Intermezzo: che significa opensource?
* A che serve il coding?Dietro il coding/A che serve il coding?
* Chi può insegnare il coding?Dietro il coding/Chi può insegnare il coding?
* Secondo Intermezzo: le differenze tra linguaggiDietro il coding/Secondo Intermezzo: le differenze tra linguaggi
* Che linguaggio?Dietro il coding/Che linguaggio?
** AliceDietro il coding/Che linguaggio?#Alice
** Squeak/EtoysDietro il coding/Che linguaggio?#Squeak.21_.2FEtoys
** Snap!Dietro il coding/Che linguaggio?#Snap!
** CatrobatDietro il coding/Che linguaggio?#Catrobat
** OpenRobertaDietro il coding/Che linguaggio?#OpenRoberta
** Minecraft: Education EditionDietro il coding/Che linguaggio?#Minecraft: Education Edition
** Apple Swift PlaygroundDietro il coding/Che linguaggio?#Apple Swift Playground
** ToonTalkDietro il coding/Che linguaggio?#ToonTalk
** LinotteDietro il coding/Che linguaggio?#Linotte
* Il modello didattico dietro ScratchDietro il coding/Il modello didattico dietro Scratch
* Come va praticato il CodingDietro il coding/Come va praticato il Coding
* Un po' di storia…Dietro il coding/Un po' di storia…
** B.A.S.I.C.Dietro il coding/Un po' di storia…#B.A.S.I.C.
** LOGODietro il coding/Un po' di storia…#LOGO
** NETLOGODietro il coding/Un po' di storia…#NETLOGO.5B1.5D
** STARLOGODietro il coding/Un po' di storia…#STARLOGO.5B2.5D
** SMALLTALKDietro il coding/Un po' di storia…#SMALLTALK
* E oggi?Dietro il coding/E oggi?
* Come potrebbe funzionare davveroDietro il coding/Come potrebbe funzionare davvero
* Suggerimenti di letturaDietro il coding/Suggerimenti di lettura
Modifica il sommario
Comunque, Scratch non è nato dal nulla: deriva da Squeak!, che deriva a sua volta da SmallTalk ma innestandoci le idee pedagogiche del Logo.
Ma per essere precisi, tutto è iniziato con il bistrattato BASIC, negli anni sessanta del millennio scorso.
Per dare un’idea: non erano ancora nati né il C (1973), né il PERL (1987) per non parlare di Java (1995).
In quella caverna preistorica c’erano degli uomini forse primitivi, ma con delle idee luminose.

### B.A.S.I.C.

Quando Kemeny e Kurtz alla Dartmouth University nel maggio del 1964 inventano il BASIC (Beginners’All-purpose Symbolic Instruction Code) l’idea era quella di proporre uno strumento con cui chiunque potesse programmare. Un linguaggio talmente facile da poter essere imparato senza conoscenze pregresse in matematica e logica.
Perché? Perché a quell’epoca programmare era un’attività riservata a pochi super esperti, che avessero accesso a macchine costose. E perché c’era l’idea che sapere programmare fosse una competenza che avrebbe migliorato la vita di chiunque.
Nasce perciò un linguaggio con una sintassi semplice, con delle istruzioni che assomigliano all’inglese, pensato in funzione dell’utente.
Un’idea che avrebbe dovuto aspettare ancora dieci anni prima di essere davvero realizzata, con la diffusione degli home computer e con un interprete BASIC capace di fare grafica e suonare. Incidentalmente, l’interprete che ha contribuito di più alla diffusione del linguaggio è stato scritto da Paul Allen, Monte Davidoff e Bill Gates.

### LOGO

Il Logo, altro elemento chiave del discorso, nasce pochi anni dopo l’invenzione del BASIC, cioè nel 1967.
L’obiettivo è completamente diverso: in origine era stato pensato da un gruppo ricercatori nel campo della nascente Intelligenza Artificiale (del calibro di Bobrow, Feurzeig e Salomon) per insegnare la programmazione in LISP agli studenti.
Con l’intervento di un matematico (Seymour Papert) Logo diventa una maniera alternativa di imparare la geometria che non passasse per la lettura di teoremi ma per la costruzione automatica di figure in soggettiva, dal punto di vista dell’utente, che si identifica in un avatar digitale: la famosa tartaruga.
Dunque con un obiettivo didattico, non legato alle tecnologie. Usare Logo non serve a diventare programmatori.
La base di partenza scelta è un po’ più nobile del BASIC, in termini di “generazioni dei linguaggi”: viene scelto il LISP che è un linguaggio funzionale, non imperativo.
Il modello di interazione è quello dell’insegnamento ad un robot. Che all'inizio è un robot vero, poi diventa solo un avatar sullo schermo.
Quando – molto più tardi – vengono realizzati degli interpreti per Apple e per PC IBM, cominciano a essere disponibili delle traduzioni nelle lingue nazionali, cioè in cui le istruzioni fossero parole comuni della lingua madre di chi lo utilizzava (SE…ALLORA, RIPETI…FINCHE), con l’idea di facilitare la scrittura di programmi da parte di bambini che non conoscono l’inglese.
Dal Logo originale sono gemmate altre versioni che hanno lasciato da parte la geometria piana e si sono concentrate sulla concorrenza (cioè sulla possibilità di "lanciare" molte tartarughe contemporaneamente per simulare il comportamento di un alveare o del traffico all'ora di punta) o sulla multimedialità (la possibilità di "vestire" la tartaruga con immagini, animazioni e suoni), fino a versioni in cui non è più necessario scrivere i programmi, ma è sufficiente selezionare le azioni da un menù e comporle, esattamente come in Scratch.
Nelle pagine seguenti ne mostriamo due tra i più noti: NetLogo e StarLogo.

### NETLOGO

* Ideato da Uri Wilenski presso il Center For Connected Learning and Computer Based Modelling, Northwestern University, a partire dal 2005
* Scritto in SCALA, la versione web in Javascript Permette di connettere più istanze per effettuare simulazioni complesse (Netlogo Hubnet)
* Opensource (GPL)

### STARLOGO

* Ideato da Mitchel Resnick ed Eric Klopfer presso il MIT Media Lab a partire dal 2000
* Scritto in Java (la versione più recente però usa Flash)
* Non è del tutto opensource, perché non può essere utilizzato per fini commerciali !

### SMALLTALK

Con un finanziamento considerevole dell’ARPA, mirato a ripensare il mondo dell’interazione uomo-macchina, Alan Kay e altri colleghi del Learning Research Group allo Xerox Parc nel 1971 creano il linguaggio SmallTalk.
Per dire, quel gruppo di lavoro e quelle ricerche sono all’origine di innovazioni come finestre, mouse, ipertesti, tablet, programmazione ad oggetti e altre quisquilie.
Nato inizialmente come linguaggio educativo, nel tempo SmallTalk diventa anche uno strumento professionale. E’ semplice, ha una sintassi elegante e coerente. SmallTalk introduce un nuovo modo di programmare, in forma di dialogo tra oggetti. In SmallTalk tutto è oggetto, compreso l'interprete stesso; e tutti i comandi sono messaggi. 7 + 7 significa inviare il messaggio '+' all'oggetto 7. SmallTalk mette in scena degli attori, gli assegna le battute e assiste allo spettacolo.
Scratch è figlio di queste tre idee potenti nate negli anni sessanta:
* un linguaggio semplice adatto a tutti
* un modello di interazione pensato per l'apprendimento
* un ambiente grafico e una logica ad oggetti
Ma che ne è stato di quelle idee potenti?

## Note

* ↑ http://ccl.northwestern.edu/netlogo/
* ↑ http://education.mit.edu/projects/starlogo-tng