Questo sito contribuisce alla audience di

small talk

loc. inglese usata in italiano come sm. Linguaggio e sistema software originariamente progettato per semplificare all'utente inesperto l'uso dell'elaboratore, e che rappresenta in forma pura il concetto di programmazione a oggetti. Small talk è stato sviluppato fra la fine degli anni Settanta e l'inizio degli Ottanta presso i laboratori Xerox a Palo Alto (California) e contiene molte caratteristiche innovative, successivamente riprese, anche solo parzialmente, in altri linguaggi. In small talk, un programma in esecuzione è costituito da un insieme di oggetti che comunicano tra loro attraverso messaggi, tramite i quali possono scambiarsi dati o richiedere l'esecuzione di determinate procedure (chiamate metodi in small talk). Un metodo è quindi un insieme di istruzioni, identificato da un nome, detto selettore, con il quale può essere mandato in esecuzione ricevendo un certo insieme di valori in ingresso. Ogni oggetto è creato e si comporta in accordo con quanto definito dalla sua classe (si dice che un oggetto è istanza di una classe). La definizione di una classe determina pertanto la struttura logica (e in ultima analisi anche la memorizzazione fisica) e il comportamento di ogni oggetto che sia istanza di quella classe. Per comportamento in small talk si intende la capacità di rispondere ai messaggi con l'esecuzione di particolari procedure. Per esempio i numeri interi con valore assoluto inferiore a x sono rappresentati da istanze della classe small integer e sono in grado di effettuare operazioni aritmetiche e di confronto con altri numeri. In small talk, quindi scrivere 3+5 significa mandare all'oggetto che rappresenta il numero 3 il messaggio di sommare al proprio valore il numero 5 e produrre il valore della somma fra i due. Mentre small integer può dare vita solo a un numero limitato di istanze, in generale le classi di small talk hanno la possibilità di dare vita a numero arbitrario di istanze. Small talk offre un notevole numero di classi predefinite, che possono essere ulteriormente specializzate, dal programmatore o usate per creare nuove classi dalla composizione di quelle preesistenti. L'esecuzione di un programma scritto in small talk comporta la generazione di sequenze di messaggi inviati a oggetti già presenti nel sistema, o creati in risposta ad altri messaggi. Ogni messaggio è formato da un selettore e da un eventuale insieme di argomenti e viene inviato a un oggetto ricevente. Nell'esempio precedente 3 è il ricevente, + il selettore e 5 l'argomento del messaggio. Small talk permette l'accesso allo stato interno del proprio ambiente di esecuzione attraverso oggetti, detti contesti, che descrivono lo stato di esecuzione di ogni metodo o di particolari sequenze di istruzioni che formano un cosiddetto blocco di codice. Inoltre, tutte le informazioni globali, incluse le definizioni delle classi, sono mantenute in un cosiddetto dizionario, chiamato anch'esso small talk. In questo modo small talk viene dotato della possibilità di modificare, via programma, caratteristiche del linguaggio stesso. Nella versione commercializzata col nome di small talk '80, la definizione delle classi contenuta nel dizionario small talk è esplorabile visualmente mediante un browser, attraverso cui un utente può intervenire anche interattivamente sulle proprietà dell'ambiente di esecuzione, costituito da una macchina virtuale che definisce un'architettura astratta da implementare su macchine concrete, e che esegue operazioni specificate da un bytecode. Il bytecode relativo a un metodo viene prodotto immediatamente nel momento in cui il metodo è definito, e viene mantenuto in un oggetto della classe Method, rendendolo quindi accessibile ad altri oggetti e all'esplorazione da parte dell'utente. La definizione di macchina virtuale e di bytecode è stata ripresa in Java. Contrariamente a Java, però, il salvataggio su file delle immagini degli oggetti small talk produce effetti diversi a seconda della particolare implementazione di small talk utilizzata, e non offre quindi le caratteristiche di portabilità fra macchine e sistemi operativi diversi tipiche di Java.

Media


Non sono presenti media correlati