Smalltalk

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Smalltalk
linguaggio di programmazione
AutoreAlan Kay
Data di origine1970
Ultima versioneANSI Smalltalk (19 maggio 1998)
Utilizzolinguaggio general-purpose
ParadigmiProgrammazione procedurale ad oggetti
Tipizzazionedebole
Estensionicomuni.st
Influenzato daLisp,Simula 67,SimulaeLogo
Ha influenzatoObjective C, C#, Actor, Java e Ruby,Perl 6,Dart

Smalltalkè unlinguaggio di programmazioneorientato agli oggetticongestione dinamica dei tipie con unparadigma di programmazioneriflessivo.

«Un programma in Smalltalk è una descrizione di processi computazionali dinamici. Il linguaggio di programmazione Smalltalk è una notazione per la scrittura di tali programmi.»

Sviluppato alloXerox PARCdaAlan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg,e altri durante glianni settanta,Smalltalk ha pesantemente influenzato altri linguaggi comeObjective C,C#,Actor,Java,JavaScripteRuby.Molti concetti attualmente impiegati nello sviluppo del software (es.design patterns,extreme programming,refactoring) derivano dalla comunità Smalltalk.

Smalltalk ha rappresentato un autentico cambio di paradigma rispetto al tradizionale modello procedurale, sostituendo al paradigma tradizionale diVon 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 ilCOBOLo ilFORTRAN.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 le caratteristiche di eleganza, semplicità ed efficienza di Smalltalk, da cui hanno importato i concetti innovativi.

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 delleapplicazioni 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, iframework per applicazioni webSeaside[1],AIDA[2]o applicazioni futuristiche come Scratch[3],Sophie[4]o Cobalt[5].

Dal 2008 è iniziato il progetto di creazione del nuovo ambiente DNG (Dolphin Next Generation)[6]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.

Smalltalk è stato creato come un linguaggio per sostenere "un nuovo mondo" diprogrammazione,ovvero come "la simbiosi dell'umano con il calcolatore", come chiaramente espresso in questo passaggio:

«[...] Chiunque vorrebbe poter programmare utilizzando un dispositivo alla stregua di un libro/foglio per gli appunti in un modo non certo possibile su 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 daMontessorie daBruner;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.
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 diKuhnsulle 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.»

Programma di esempio

[modifica|modifica wikitesto]

Il seguente esempio stampa il testo "Hello world!".

Transcriptshow:'Hello World!'
  1. ^(EN)Seaside,suSeaside.
  2. ^(EN)Aida,suAidaweb.URL consultato il 18 luglio 2020(archiviato dall'url originaleil 28 novembre 2017).
  3. ^(EN)Scratch,suScratch.
  4. ^(EN)Sophie,suOpen Sophie.URL consultato il 19 maggio 2018(archiviato dall'url originaleil 5 maggio 2009).
  5. ^(EN)Cobalt,suOpen Cobalt.URL consultato il 18 gennaio 2019(archiviato dall'url originaleil 19 gennaio 2019).
  6. ^(EN)DNG - Dolphin-Smalltalk Next Generation,suDNG.URL consultato il 3 agosto 2022(archiviato dall'url originaleil 23 ottobre 2010).

Collegamenti esterni

[modifica|modifica wikitesto]
Controllo di autoritàLCCN(EN)sh87003115·BNF(FR)cb12158691c(data)·J9U(EN,HE)987007534093605171
 Portale Informatica:accedi alle voci di Wikipedia che trattano di informatica