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).
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/ |
Modifica dati su Wikidata · Manuale |
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.
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 = "Bene"), (Terminal = "Male") )
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
.
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.
Controllo di autorità | LCCN (EN) sh85123758 · J9U (EN, HE) 987007551052105171 |
---|