Smalltalk: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.5 |
||
(18 versioni intermedie di 14 utenti non mostrate) | |||
Riga 6:
|paradigmi = Programmazione procedurale ad oggetti
|tipizzazione = debole
|estensione = .st
|ha_influenzato = Objective C, C#, Actor, Java e Ruby, [[Perl 6]], Dart
}}
'''Smalltalk''' è un [[linguaggio di programmazione]] [[Programmazione orientata agli oggetti|orientato agli oggetti]] con [[Tipizzazione dinamica|gestione dinamica dei tipi]] e con un [[paradigma di programmazione]] [[riflessione (informatica)|riflessivo]].
{{Citazione|Un programma in Smalltalk è una descrizione di processi computazionali dinamici. Il linguaggio di programmazione Smalltalk è una notazione per la scrittura di tali programmi.|{{Cita web|url=http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf|titolo=ANSI Smalltalk standard|formato=PDF|lingua=
== Storia ==
Sviluppato allo [[Xerox PARC]] da [[Alan Kay]], [[Dan Ingalls]], [[Ted Kaehler]], [[
Smalltalk ha rappresentato un autentico cambio di paradigma rispetto al tradizionale modello procedurale, sostituendo al paradigma tradizionale di [[John von Neumann|Von Neumann]] (basato sulla separazione dati/programmi) un nuovo paradigma basato sul concetto di oggetto, che contiene, in modo inscindibile, sia dati che programmi. L'elaborazione quindi non è più descritta da una procedura, ma è ottenuta da una "simulazione" del mondo, di cui gli oggetti sono un modello.▼
Questo cambio radicale non è stato facilmente assimilato dai programmatori tradizionali, abituati a linguaggi come il [[COBOL]] o il [[FORTRAN]]. I linguaggi derivati sopracitati hanno provveduto a creare un ponte tra il vecchio ed il nuovo paradigma. Tuttavia, questa mediazione ha avuto un costo sulle caratteristiche dei linguaggi stessi, che non raggiungono
▲Smalltalk ha rappresentato un autentico cambio di paradigma rispetto al tradizionale modello procedurale, sostituendo al paradigma tradizionale di Von Neumann (basato sulla separazione dati/programmi) un nuovo paradigma basato sul concetto di oggetto, che contiene, in modo inscindibile, sia dati che programmi.
Questa difficoltà di passaggio da un paradigma all'altro (peraltro ben nota: si pensi, come esempio estremo, al passaggio dai numeri romani a quelli arabi), unitamente al fenomenale sviluppo delle [[applicazione web|applicazioni Web]] (alle quali Smalltalk non era particolarmente orientato) ha fatto ritenere a molti che Smalltalk fosse un linguaggio morto. Nella realtà non è così: la comunità degli utenti Smalltalk è certamente ridotta ma molto attiva e continua a sviluppare applicazioni innovative sfruttando al meglio le caratteristiche di Smalltalk. Si guardino, ad esempio, i [[framework per applicazioni web]] Seaside<ref>{{cita web|url=http://www.seaside.st|titolo=Seaside|sito=Seaside|lingua=en}}</ref>, AIDA<ref>{{cita web|url=http://www.aidaweb.si/|titolo=Aida|sito=Aidaweb|lingua=en|accesso=18 luglio 2020|dataarchivio=28 novembre 2017|urlarchivio=https://web.archive.org/web/20171128180906/http://www.aidaweb.si/|urlmorto=sì}}</ref> o applicazioni futuristiche come Scratch<ref>{{cita web|url=https://www.scratch.mit.edu/|titolo=Scratch|sito=Scratch|lingua=en}}</ref>, Sophie<ref>{{cita web|url=http://opensophie.org/|titolo=Sophie|sito=Open Sophie|lingua=en|accesso=19 maggio 2018|dataarchivio=5 maggio 2009|urlarchivio=https://web.archive.org/web/20090505005034/http://opensophie.org/|urlmorto=sì}}</ref> o Cobalt<ref>{{cita web|url=http://www.opencobalt.net/|titolo=Cobalt|sito=Open Cobalt|lingua=en|accesso=18 gennaio 2019|dataarchivio=19 gennaio 2019|urlarchivio=https://web.archive.org/web/20190119174337/http://www.opencobalt.net/|urlmorto=sì}}</ref>.
== Descrizione ==▼
Smalltalk è stato creato come un linguaggio per sostenere
▲Tuttavia, questa mediazione ha avuto un costo sulle caratteristiche dei linguaggi stessi, che non raggiungono certamente le caratteristiche di eleganza, semplicità ed efficienza di Smalltalk di cui hanno, più o meno, saccheggiato i concetti innovativi.
Il seguente esempio stampa il testo "[[Hello world|Hello world!]]".▼
Transcript show: 'Hello World!'▼
</syntaxhighlight>
==Note==
<references/>
== Bibliografia ==
* {{RivistaVG|mc|105|292-295|3|1991|titolo=Smalltalk/V: aspetti sintattici}} La rubrica sullo Smalltalk continua nei numeri successivi fino al n° 110.
== Altri progetti ==
▲Inoltre, dal 2008 è iniziato il progetto di creazione del nuovo ambiente DNG (Dolphin Next Generation) [https://web.archive.org/web/20130601003806/http://dng.st/] destinato ad unificare due dialetti Smalltalk (VSE di Digitalk e Dolphin di Object Arts) e creare un nuovo ambiente di sviluppo adatto ai prevedibili sviluppi informatici dei prossimi anni.
{{interprogetto}}
▲== Descrizione ==
▲Smalltalk è stato creato come un linguaggio per sostenere ''un nuovo mondo'' di [[programmazione (informatica)|programmazione]], ovvero come ''la simbiosi dell'umano con il calcolatore'', come chiaramente espresso in questo passaggio:
▲<blockquote>[''..] Chiunque vorrebbe poter programmare utilizzando un dispositivo alla stregua di un libro/foglio per gli appunti in un modo non certo possibile su di un sistema di terminali collegati ad un grosso sistema di calcolo; milioni di potenziali utenti avrebbero il desiderio che l'interfaccia utente potesse trasformarsi in un ambiente autoapprendente, seguendo le linee educative ideate da [[Maria Montessori|Montessori]] e da [[Jerome Bruner|Bruner]]; per le grosse attività di programmazione, la riduzione della complessità, l'utente finale vorrebbe che i dati e le relative strutture di controllo, fossero letteralmente eliminate, in favore di uno schema più simile a quello biologico ove tutte le cellule sono tra di loro separate, con l'unica possibilità di interagire tra di loro solo tramite messaggi, in modo da imitare qualsiasi comportamento richiesto.<br />Le prime versioni di Smalltalk volevano essere la prima risposta completa a questo nuovo paradigma, legato anche alle caratteristiche dell'hardware, dei linguaggi e delle interfacce utente in quel momento disponibili. È diventato un primo esemplare del nuovo modo di programmare, in parte perché stavamo provando per una variazione nel nuovo paradigma di [[Thomas Kuhn|Kuhn]] sulle strutture-a, in quello stesso spirito di chi ha inventato la stampa e quindi generando una posizione di estremismo che quasi ha forzato questo nuovo stile. ''[https://web.archive.org/web/20080710144930/http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html]
▲=== Programma di esempio ===
▲Il seguente esempio stampa il testo "[[Hello world|Hello world!]]".
▲<source lang="smalltalk">
▲Transcript show: 'Hello World!'
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
*{{en}} [http://www.esug.org ESUG] European Smalltalk User Group
*{{en}} [http://www.stic.st/ STIC] Smalltalk Industry Council
*{{en}} [http://www.smalltalk.org/ Smalltalk.org] Sito di diffusione Smalltalk
*{{cita web|http://www.iam.unibe.ch/~ducasse/FreeBooks.html|Libri su Smalltalk gratis|lingua=en}}
*{{cita web|1=http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html|2=The Early History of Smalltalk|lingua=en|accesso=3 giugno 2007|urlarchivio=https://web.archive.org/web/20080710144930/http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html#|dataarchivio=10 luglio 2008|urlmorto=sì|tipo=storia del linguaggio|cid=The Early History of Smalltalk}}▼
▲*{{cita web|1=http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html|2=The Early History of Smalltalk|lingua=en|accesso=3 giugno 2007|urlarchivio=https://web.archive.org/web/20080710144930/http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html#|dataarchivio=10 luglio 2008|urlmorto=sì}}
{{Principali linguaggi di programmazione}}
|