Articoli Manifesto Tools Links Canali Libri Contatti ?
Linguaggi / SmallTalk / Squeak

Il ritorno dei linguaggi dinamici: introduzione a Squeak

Abstract
In questo articolo introduciamo Squeak, una implementazione di SmallTalk, uno dei più famosi linguaggi dinamici.
Data di stesura: 05/01/2005
Data di pubblicazione: 20/01/2005
Ultima modifica: 04/04/2006
di Giovanni Giorgi Discuti sul forum   Stampa

I linguaggi dinamici: introduzione

Nell'ultimo periodo si sono diffusi linguaggi di scripting a tipizzazione dinamica oppure debole, come python, perl, groovy, php.

Anche Java sta attraversando un periodo di revisione, e probabilmente il jdk 1.6 ci porterà delle novità in tal senso.

Per cui SIForge.org ha deciso di iniziare a presentare una serie di articoli sui linguaggi dinamici, in particolare su Squeak SmallTalk, che è un linguaggio dinamico puro.

SmallTalk è il padre putativo dei linguaggi ad oggetti "completi" come C++ ed Eiffel, poiché in esso sono presenti il concetto di classe e di ereditarietà, nonché il concetto di multitasking collaborativo.

Questo porta con sé il concetto di oggetto come agente indipendente, che reagisce ad una serie di messaggi che gli vengono inviati in modo anche asincrono.

La sua libreria si è sedimentata in oltre 30 anni di lavoro, per cui tutti i concetti mutuati dai Design Pattern del GoF[7] sono presenti

La storia di SmallTalk

SmallTalk (in inglese letteralm. "chiacchieratina") viene sviluppato verso la metà degli anni 70 e la versione finale introduce nel 1980 tre grandi concetti:

  1. Il concetto di interfaccia grafica, che verrà poi adottata dalla Apple sui sistemi Elisa e Mac. Con l'interfaccia MVC viene implementata un ambiente di sviluppo integrato (IDE) con un browser di classi.
  2. Il concetto di classe, e di istanza di oggetto. SmallTalk è un linguaggio ad oggetti "puro" perché contrariamente al C++ tutto è descrivibile in modo uniforme.
  3. È il primo linguaggio puro completamente dinamico.

Inoltre, basandosi su pochi concetti uniformi, è facile da apprendere.

Uno dei creatori di SmallTalk è Alan Kay, che voleva un linguaggio per persone comuni (ordinary people). SmallTalk è stato sviluppanto lavorando a stretto contatto con i bambini, con lo scopo di creare un linguaggio per l'utente finale, e non qualcosa a cui il programmatore dovesse piegarsi.

SmallTalk si diffuse soltanto presso i centri di ricerca e le aziende in grado di fare notevoli investimenti: infatti nel 1980 i sistemi informatici dotati di una interfaccia grafica, e della velocità necessaria, erano un lusso che non tutti potevano permettersi.

Inoltre basti pensare che Pascal ed Agol68 erano staticamente tipati anche perché così risultavano più veloci con l'hardware a disposizione.

La lezione di SmallTalk è restata in parte inascoltata, anche per il carattere elitario di alcune sue idee. Inoltre le uniche aziende che fornivano implementazioni commerciali richiedevano royalties abnormi.

Squeak SmallTalk viene presentato nel 1996 all'OOPSLA[3] e da allora la sua attiva community ha esteso il linguaggio, che è arrivato alla versione 3.7.

È stato sviluppato prima alla Apple e poi alla Disney: ora c'è una fondazione che ne cura la promozione e ospita il sito principale.

Purtroppo la licenza di Squeak non è ne' GPL ne' OSI compatibile, anche se è assimilabile ad una licenza Open Source: questo può portare a qualche querelle quando si tenta di integrarlo in distribuzioni GPL.

Hands on: mettiamo le mani su Squeak

Per scaricare Squeak è sufficiente andare al sito principale[1]. Spesso è anche consigliabile una capatina allo Squeak Wiki[2].

Squeak è disponibile per moltissimi sistemi: Unix, Mac, Windows, e anche per alcuni PDA.

Una implementazione di SmallTalk è composta da un file d'immagine (codice binario, estensione "image"), uno dei sorgenti (estensione "sources") ed un ulteriore file dei sorgenti che registra le modifiche (con estensione "changes").

In SmallTalk il codice è contenuto nell'immagine, ed è codificato come bytecode, per essere indipendente dalla piattaforma.

La macchina virtuale di SmallTalk (VM) è l'unico componente dipendete dal sistema operativo, e di solito è di dimensione esigue: meno di un megabyte.

La VM fornisce una serie di servizi di base, tra cui l'interpretazione del bytecode, l'astrazione dal sistema operativo sottostante, i servizi di rete e un gestore di memoria (Garbage Collector) abbastanza evoluto.

Alcune di queste idee sono state ripresa da un famoso linguaggio della Sun, che ha come logo una chicco di caffè ...

Ogni volta che si esce da Squeak, è necessario salvare l'immagine, per memorizzare i cambiamenti fatti. Se si dimentica di farlo, è sempre possibile recuperare il lavoro fatto: ogni modifica al sistema, viene sempre registrata nel file "changes" ed esistono una serie di metodi per leggerlo. In SmallTalk è possibile alterare il sistema in modo notevole eseguendo del codice: tutto si basa su semplici costrutti del tipo:

oggetto messaggio: parametro

Anche aggiungere metodi agli oggetti è possibile eseguendo particolari comandi: l'IDE infatti non fa altro che operare sulla base dati dell'immagine, che è composta da una serie di strutture abbastanza articolate.

Nonostante ciò alterare anche profondamente il sistema è abbastanza semplice (e pericoloso...).

Andare oltre

Squeak è utilizzabile sia come un tool multimediale, per educare gli studenti, che come ambiente di sviluppo Web.

Tra le caratteristiche notevoli di Squeak, va citato il fatto che la sua macchina virtuale (VM) è scritta in Squeak stesso, e può essere modificata da dentro l'IDE. Poi una volta testata, è possibile generare in modo automatico il sorgente in linguaggio C.

Per maggiori informazioni vedere la documentazione relativa alla VM di Squeak [6]

Oltre alla mailing list di Squeak, la community è parecchio attiva su "people" [4] che ospita diari e articoli dei vari sviluppatori. Infine, Giovanni Corriga ha scritto un ottima presentazione [5].

Nei prossimi articoli vedremo come sviluppare applicazioni in Squeak, come accedere a PostgreSQL, e come sviluppare applicazioni web ... nel frattempo, buon download!

Informazioni sull'autore

Giovanni Giorgi, classe 1974. Dopo il diploma di liceo Classico, si è laureato in Informatica nel febbraio 2000, e attualmente lavora nel campo del software finanziario (trading on line, soluzioni web).
Appassionato di linguaggi di programmazione, si interessa anche di politica e letteratura.

È possibile consultare l'elenco degli articoli scritti da Giovanni Giorgi.

Altri articoli sul tema Linguaggi / SmallTalk / Squeak.

Risorse

  1. Squeak SmallTalk, sito prinicpale.
    http://www.squeak.org/
  2. Squeak Swiki
    http://minnow.cc.gatech.edu/squeak/1
  3. "Back to the Future, The Story of Squeak, A Practical Smalltalk Written in Itself" di Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace e Alan Kay.
    http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html
  4. Squeak People.
    http://people.squeakfoundation.org/
  5. "Smalltalk: OOP allo stato puro" di Giovanni Corriga
    http://linuxday.gulch.crs4.it/2004/materiale/slides/traccia3/gcorriga-smalltalk.pdf
  6. Macchina virtuale di Squeak: il punto di partenza per giocare con la VM. NB: Non è un compito banale!
    http://sourceforge.net/projects/squeak
  7. "Design Patterns. Elements of Reusable Object-Oriented Software" di Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Ed. Addison Wesley 1994.
    Spesso viene indicato come [GOF94] acronimo di "The Gang of Four".
    http://www.amazon.com/exec/obidos/ISBN=0201633612
Discuti sul forum   Stampa

Cosa ne pensi di questo articolo?

Discussioni

Questo articolo o l'argomento ti ha interessato? Parliamone.