SNOBOL
Snobol linguaggio di programmazione | |
---|---|
Autore | David J. Farber, Ralph E. Griswold, Ivan P. Polonsky |
Data di origine | 1962 |
Ultima versione | 4 |
Utilizzo | general purpose e analisi di testi |
Paradigmi | Imperativo |
Tipizzazione | dinamica |
Estensioni comuni | sno, spt (Spitbol) |
Influenzato da | FORTRAN II e COMIT |
Ha influenzato | Icon, Lua, SL5 |
Implementazione di riferimento | |
Implementazione | CSNOBOL4 release 2.3 2022.03 |
Sistema operativo | Unix-like, Windows, OSX |
Licenza | varie |
Sito web | www.regressive.org/snobol4/ |
SNOBOL (StriNg Oriented and symBOlic Language) è il nome generico di un linguaggio di programmazione per calcolatore sviluppato tra il 1962 e il 1967 da David J. Farber, Ralph E. Griswold e Ivan P. Polonsky presso i Laboratori AT&T Bell. L'ultima versione del linguaggio ha preso il nome di SNOBOL4. SNOBOL è stato uno di una serie di linguaggi orientati alle stringhe sviluppato tra gli anni cinquanta e i sessanta (tra gli altri, COMIT e TRAC).
SNOBOL4 si differenzia dalla maggior parte dei linguaggi di programmazione poiché fornisce il pattern come tipo di dato di prima classe (ovvero, un tipo di dato i cui valori possono essere manipolati in qualsiasi modo permesso a qualsiasi altro tipo di dato nel linguaggio) e operatori per concatenazione e alternanza di pattern. Le stringhe generate durante l'esecuzione possono essere trattate come programmi e quindi eseguite.
SNOBOL4 è stato spesso insegnato in grandi università statunitensi verso la fine degli anni 1960 e all'inizio degli anni 1970 ed è stato ampiamente utilizzato nei due decenni seguenti come linguaggio di manipolazione del testo in ambito umanistico.
In anni recenti SNOBOL ha ceduto il passo a nuovi linguaggi quali Awk e Perl, che hanno reso di moda la manipolazione di stringhe mediante espressioni regolari. Tuttavia, i pattern di SNOBOL4 sussumono le grammatiche BNF, che sono equivalenti alle grammatiche libere dal contesto e più potenti delle espressioni regolari.[1] Le espressioni regolari implementate da Awk e Perl, infatti, sono estensioni delle espressioni regolari intese in senso tradizionale, ma esse - al contrario dei pattern di SNOBOL4 - non possono essere ricorsive.[2]
Uno dei progettisti di SNOBOL, Ralph Griswold, ne ideò due successori, chiamati SL5 e Icon, che combinavano il meccanismo di pattern matching di SNOBOL4 con una strutturazione più standard stile ALGOL.
Esempi
[modifica | modifica wikitesto]Il programma "Hello World":
output = "Hello world"
end
Un programma per identificare le vocali all'interno di una stringa proposta dall'utente:
Vocali = "aeiou"
Testo = input
loop Testo ? any(Vocali) . output rem . Testo :s(loop)
end
Se l'utilizzatore scrive ad esempio aiuole
il programma restituisce in sequenza i caratteri aiuoe
. Se l'utilizzatore scrive abbassata
il programma restituisce aaaa
.
Snobol non utilizza la sintassi di tipo if then else
ma una sintassi di tipo booleano, fondata su AND / OR /NOT
. Per esempio:
se il contenuto della variable X è identico alla stringa "Carlo", allora scrivi "Esatto", altrimenti scrivi "Sbagliato"
si può esprimere così:
X = "Carlo"
( (leq(X,"Carlo")) (Terminal = "Esatto"), (Terminal = "Sbagliato") )
end
Lo spazio tra le due prime parentesi è un AND implicito: si valuta la verità di ambedue le dichiarazioni unite nella prima parentesi; la virgola esprime OR, quindi se non risulta vero AND vero
si esegue l’istruzione alternativa. In questo caso, siccome X è effettivamente istanziata a "Carlo", il programma scriverà "Bene". NOT si esprime con ~
Snobol permette e incoraggia l'uso delle funzioni, molte delle quali disponibili nella libreria standard. Il programmatore può scrivere le sue funzioni personali. Per esempio, questo programma scrive Ciao
seguito da un nome indicato dall'utente, e restituito da una funzione qui chiamata nome
:
*-- Funzione NOME
define("nome()") :(nome_end)
nome Terminal = "Introdurre un nome"
Scelta = input
nome = Scelta :(return)
nome_end
* MAIN
Persona = nome()
Output = "Ciao " Persona
end
Se l'utente inserisce Giulia
sull'output si otterrà Ciao Giulia
. Se non si risponde alla domanda sull'output si otterrà Ciao
.
Implementazioni disponibili
[modifica | modifica wikitesto]Disponibile sia per sistemi Unix-like sia per Windows sia per OSX è l'implementazione Macro SNOBOL4 in C scritta da Phil Budne: è gratuita e open source [3]. Anche Dave Shields sviluppa una sua versione del linguaggio [4], che continua lo Spitbol (Speedy Implementation of Snobol) realizzato da Catspaw, Inc.[5]; Catspaw distribuisce ora gratuitamente molto materiale su Snobol e Spitbol.
Note
[modifica | modifica wikitesto]- ^ (EN) Gimpel, J. F. 1973. A theory of discrete patterns and their implementation in SNOBOL4. Commun. ACM 16, 2 (Feb. 1973), 91-100.
- ^ (EN) Programs that transform their own source code or the Snobol foot joke
- ^ http://www.regressive.org/snobol4/
- ^ https://github.com/daveshields
- ^ http://www.snobol4.com/
Bibliografia
[modifica | modifica wikitesto]- Dewar, Robert BK, Mark B. Emmer, and Robert E. Goldberg. Macro Spitbol. The High-Performance SNOBOL4 Language. Salida, Colorado, Catspaw Inc., 2000².
- Emmer, Mark B. SNOBOL4 : The SNOBOL4 Language for the Personal Computer User. Englewood Cliffs, NJ: Prentice Hall, 1985 (ISBN 0-13-815119-9).
- Gimpel, James F. Algorithms in SNOBOL4. New York: Wiley, 1976 (ISBN 0-471-30213-9); republished Salida, CO: Catspaw, 1986 (ISBN 0-939793-00-8).
- Griswold, Ralph E. The Macro Implementation of SNOBOL4. San Francisco, CA: W. H. Freeman and Company, 1972 (ISBN 0-7167-0447-1).
- Griswold, Ralph E., J. F. Poage, and I. P. Polonsky. The SNOBOL4 Programming Language. Englewood Cliffs, NJ: Prentice Hall, 1968 (ISBN 0-13-815373-6).
- Griswold, Ralph E. String and List Processing in SNOBOL4: Techniques and Applications. Englewood Cliffs, NJ: Prentice Hall, 1975 (ISBN 0-13-853010-6).
- Hockey, Susan M. Snobol Programming for the Humanities. New York: Clarendon Press; Oxford: Oxford University Press, 1985 (ISBN 0-19-824676-5).
- Milanese, Guido Filologia, letteratura, computer. Idee e strumenti per l'informatica umanistica. Milano: Vita e Pensiero, 2020, pp. 241-243 (ISBN 9788834337516)
Collegamenti esterni
[modifica | modifica wikitesto]- Pagina di Phil Budne: ricchissima di materiali e link, è il punto di partenza migliore
- Catspaw, Inc. compilatori e interpreti sviluppati da Caspaw nel corso dei decenni 1980-2000
- Introduction to Snobol by James Ford
- Word size: programma di esempio per l'uso dello Snobol nell'analisi dei testi
- Oral history interview with Ralph E. Griswold Charles Babbage Institute, University of Minnesota, Minneapolis.
- Charles Hall Collection on the SNOBOL Programming Language. Charles Babbage Institute, University of Minnesota, Minneapolis.
- Tkslide: un ambiente grafico (IDE) per la programmazione in Snobol
- Try It Online (Snobol4/CSnobol): compilatore online, utile per provare le funzionalità del linguaggio
Controllo di autorità | LCCN (EN) sh85123758 · J9U (EN, HE) 987007551052105171 |
---|