Ancora su Smalltalk

Il post precedente su Smalltalk ha generato qualche perplessità. Anche a me. Ma un passo per volta, non voglio fare il solito pasticcio.

In una email (ma perché non commentate che così lo vede l’intera dozzina di lettori affezionati) un mio amico e ex-collega è rimasto perplesso dal codice di “Hello World!”, questo

"Hello World!" printNl

OK, provo a riscriverlo, in modo più tradizionale, ecco il contenuto del file hw.st.

"hw.st"
"scrive Hello World! sul terminale"

| hw |                  "dichiaro la variabile hw"

hw := 'Hello World!'.   "assegno alla variabile hw la stringa"
                        ""
hw printNl              "invio all'oggetto hw il messaggio printNl"

I testi tra le virgolette sono commenti e sono ignorati dall’interprete (sì, di solito sono molto meno commentoso ;-) è che oggi sono in vena di didascalismi).

eseguendolo si ottiene:

* : smalltalk $ gst hw.st
'Hello World!'
* : smalltalk $ 

Allora, grazie ai commenti (vedete che a volte servono?), adesso la sintassi di Smalltalk, benché diversa dalle solite cui siamo abituati, acquista un senso.
In un colloquio successivo il caso si è ampliato, ecco:

* : smalltalk $ gst
GNU Smalltalk ready

st> 1 + 2 * 3
9
st> 

Eh? Ma a scuola (credo in prima media) mi dicevano che la “per” ha priorità più elevata e si deve fare prima; e anche in C, Basic, Delphi, Python et al. sono tutti d’accordo (tranne Lisp e Forth ma quelli sono fuori di melone, si sa).
Come mai? È di nuovo la filosofia degli oggetti: all’oggetto 1 inviamo il messaggio + con il dato 2 e poi il messaggio + con il dato 3.
E qui entrano in gioco le regole di esecuzione di espressioni complesse, regole che dipendono dal tipo di messaggio, mi sa che dovete davvero leggere il capitolo “Unary, Binary and Keyword Messages” p.33 del PDF computer_programming_using_gnu_smalltalk.pdf consigliato nel post precedente, scaricabile qui

(Ritenetevi tutti avvisati: la prossima volta interrogo!).

Naturalmente possiamo aggiustare le cose, così:

st> 1 + (2 * 3)
7
st> 

OK? Io mi ricordo (sono vecchio e i vecchi sono soliti partire con “una volta…” quando meno te lo aspetti) che ero rimasto sconvolto da quest’istruzione (la scrivo come si usava allora in FORTRAN IV):

I=I+1

perché sapevo che per ogni numero intero (e I è intero, vero? e gli interi allora erano confinati in [-32768, 32767]) minore di infinito non ne esiste nessuno per cui sia verificata quell’ugualianza (Peano docet). Poi leggendo il Wirth scoprii che = (Wirth naturalmente usava :=) si deve leggere “diventa” (becomes) e tutto acquista senso, la matematica è salva.

E tornando a Smalltalk merita davvero un po’ di attenzione, e la programmazione a oggetti dopo risulta più razionale. Magari non si usa nel mondo del lavoro, ma…

Squeak

A proposito: Smalltalk era diventato famoso perché strettamente interconnesso a quella che oggi si chiamerebbe GUI (Graphic User Interface). Quest’interfaccia esiste ancora, è disponibile free, l’implementazione più conosciuta è Squeak, trovate tutto qui.

Io ho provato a installarla ma l’ho abbandonata. Perché fa troppo: è un vero e proprio ambiente, le applicazioni girano dentro la GUI di Squeak, valgono le regole della GUI che sono molto diverse da quelle cui sono (siamo) abituati. O si decide di adottarla e si mette in conto il tempo per impararla (ma allora deve davvero servire a qualcosa, anzi poi si farà tutto con quella) o si passa ad altro.

Sarà che sono vecchio (e dai!) ma a me piacciono di più altre cose, più piccole, più immediate.
E sono ancora abituato alla linea di comando — sono vecchio ;-)

About these ads
Post a comment or leave a trackback: Trackback URL.

Commenti

  • medeo  On 31 gennaio 2011 at 12:35

    ottimo post, ma non ho capito una cosa: sei vecchio?

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 74 follower

%d blogger cliccano Mi Piace per questo: