SNOBOL
Paradigma | Imperativ, unstrukturiert |
---|---|
Entworfen von | David J. Farber, Ralph E. Griswold und Ivan P. Polonsky |
Entwickler | David J. Farber, Ralph E. Griswold, Ivan P. Polonsky und Bell Labs |
Erstmals erschienen | 1962 |
Stabile Version | Snobol4 / 1967 |
Webseite | https://www.egressive.org/snobol4/ |
Haupt Implementierungen | |
Snobol, Spitbol | |
Beeinflusst von | |
Comit | |
Beeinflusst | |
Awk, Sl5, Symbol, BS, Lua |
Snobol ("String -orientierte und symbolische Sprache") ist eine Reihe von einer Reihe von Programmiersprachen entwickelt zwischen 1962 und 1967 bei AT&T Glockenlabors durch David J. Farber, Ralph E. Griswold und Ivan P. Polonsky, der in Snobol4 gipfelte. Es war eine von einer Reihe von textstringorientierten Sprachen, die in den 1950er und 1960er Jahren entwickelt wurden. andere eingeschlossen Comit und Trac.
Snobol4 unterscheidet sich von den meisten Programmiersprachen seiner Ära, indem sie Muster als a Erstklassiger Datentyp (d.h. Ein Datentyp, dessen Werte auf alle anderen Arten manipuliert werden können, die jedem anderen Datentyp in der Programmiersprache zulässig sind) und durch Bereitstellung von Operatoren für Muster Verkettung und Wechsel. Snobol4 -Muster sind eine Art Objekt und geben verschiedene Manipulationen zu, ähnlich wie später objektorientierte Sprachen wie zum Beispiel JavaScript deren Muster sind als bekannt als als Reguläre Ausdrücke. Darüber hinaus kann Snobol4 -Zeichenfolgen, die während der Ausführung erzeugt werden, als Programme behandelt und entweder interpretiert oder kompiliert und ausgeführt (wie in der bewerten Funktion anderer Sprachen).
Snobol4 wurde in den späten 1960er und frühen 1970er Jahren an größeren US -Universitäten ziemlich weit verbreitet und in den 1970er und 1980er Jahren als Textmanipulationssprache in der häufig eingesetzt Geisteswissenschaften.
In den 1980er und 1990er Jahren verblasste seine Verwendung als neuere Sprachen wie z. Awk und Perl Streicher Manipulation durch machte durch Reguläre Ausdrücke modisch. Snobol4 Muster Subsume Bnf Grammatiken, die gleichwertig sind Kontextfreie Grammatiken und mächtiger als normale Ausdrücke.[1] Die "regulären Ausdrücke" in aktuellen Versionen von awk und perl sind tatsächlich Erweiterungen regulärer Ausdrücke in der traditioneller SinnAber regelmäßige Ausdrücke sind im Gegensatz zu Snobol4 -Mustern nicht rekursiv, was den Snobol4 -Mustern einen deutlichen rechnerischen Vorteil bietet.[2] (Rekursive Ausdrücke erschienen jedoch in Perl 5.10, die im Dezember 2007 veröffentlicht wurden.[3][4]))
Der spätere SL5 (1977)[5] und Symbol (1978) Sprachen wurden von Griswold entworfen, um die Backtracking von Snobol4 -Muster -Matching mit mehr Standard zu kombinieren Algol-ähnliche Strukturierung.
Entwicklung
Snobol1
Die anfängliche Snobol -Sprache wurde als Werkzeug erstellt, das von ihren Autoren verwendet werden soll, um mit der symbolischen Manipulation von Polynomen zu arbeiten. Es wurde in der Montagesprache für die geschrieben IBM 7090. Es hatte eine einfache Syntax, nur ein Datentyp, die Zeichenfolge, keine Funktionen und keine Erklärungen und nur sehr wenig Fehlersteuerung. Trotz seiner Einfachheit und ihrer "persönlichen" Natur verbreitete sich ihre Verwendung auf andere Gruppen. Infolgedessen beschlossen die Autoren, es zu erweitern und aufzuräumen.
Snobol2
Snobol2 existierte, aber es war eine kurzlebige Zwischenentwicklungsversion ohne benutzerdefinierte Funktionen und wurde nie veröffentlicht.
Snobol3
Snobol wurde neu geschrieben, um sowohl Standard als auch benutzerdefinierte Funktionen hinzuzufügen, und das Ergebnis wurde als Snobol3 freigegeben. Snobol3 wurde sehr beliebt und wurde von anderen Programmierern für andere Computer als die IBM 7090 umgeschrieben. Infolgedessen entstanden mehrere inkompatible Dialekte.
Snobol4
Als Snobol3 populärer wurde, erhielten die Autoren immer mehr Anfragen nach Erweiterungen der Sprache. Sie begannen auch Beschwerden über Inkompatibilität und Fehler in Versionen, die sie nicht geschrieben hatten. Um dies anzugehen und die neuen Computer, die Ende der 1960er Jahre eingeführt wurden virtuelle Maschine um eine verbesserte Portabilität über Computer hinweg zu ermöglichen.[6] Der Snobol4 -Sprachübersetzer wurde immer noch in der Montagesprache geschrieben. Die Makromerkmale des Assemblers wurden jedoch verwendet, um die Anweisungen der virtuellen Maschine des SNobol IMplementierung LAnguage, die Sil. Dies verbesserte die Portabilität der Sprache stark, indem sie die virtuelle Maschine, die den Übersetzer hostete, relativ einfach machte, indem er seine virtuellen Anweisungen auf jeder Maschine nachstellte, die einen Makro -Assembler oder eine Sprache auf hoher Ebene beinhalteten.[7]
Die maschinenunabhängige Sprache, die maschinenunabhängig ist Douglas McIlroy, die in der anfänglichen Snobol -Implementierung ausgiebig verwendet wurden. 1969 beeinflusste McIlroy die Sprache erneut, indem er auf Addition des Tabellentyps zu Snobol4 bestand.[8][9]
Snobol4 -Funktionen
Snobol unterscheidet sich im Format- und Programmierstil, die sich radikal von zeitgenössischen prozeduralen Sprachen unterscheiden, wie sie Forran und Algol.
Snobol4 unterstützt eine Reihe von integrierten Datentypen, wie zum Beispiel Ganzzahlen und begrenzte Präzision reale Nummern, Saiten, Muster, Arrays, und Tische (assoziative Arrays) und ermöglicht es dem Programmierer, zusätzliche Datentypen und neue zu definieren Funktionen. Der Programmierer-definierte Datentyp von Snobol4 wurde zu diesem Zeitpunkt fortgeschritten-er ähnelt den Aufzeichnungen der früheren Cobol und das später Pascal Programmiersprachen.
Alle Snobol -Befehlszeilen sind aus der Form
- Label -Subjektmuster = Objekt : Transfer
Jedes der fünf Elemente ist optional. Im Allgemeinen die Thema ist gegen die abgestimmt Muster. Wenn die Objekt ist vorhanden, jeder übereinstimmende Teil wird durch die ersetzt Objekt über Regeln für den Austausch. Das Transfer Kann ein absoluter Zweig oder ein bedingter Zweig sein, der vom Erfolg oder Versagen der Subjektbewertung, der Musterbewertung, der Musterübereinstimmung, der Objektbewertung oder der endgültigen Zuordnung abhängt. Es kann auch eine Übertragung an Code sein, die während eines Laufs erstellt und kompiliert wird.
Ein Snobol -Muster kann sehr einfach oder extrem komplex sein. Ein einfaches Muster ist nur eine Textzeichenfolge (z. B. "ABCD"), aber ein komplexes Muster kann eine große Struktur sein, die beispielsweise die vollständige Grammatik einer Computersprache beschreibt. Es ist möglich, einen Sprachdolmetscher in Snobol fast direkt von a zu implementieren Backus -Naur -Form Ausdruck davon mit wenigen Veränderungen. Das Erstellen eines Makro -Assemblers und eines Dolmetschers für ein vollständig theoretisches Stück Hardware kann nur ein paar hundert Zeilen dauern, wobei eine neue Anweisung mit einer einzigen Linie hinzugefügt wird.
Komplexe Snobol-Muster können Dinge tun, die mit den primitiveren regulären Ausdrücken, die in den meisten anderen Musteranpassungssprachen verwendet werden, unpraktisch oder unmöglich wären. Ein Teil dieser Macht ergibt sich aus den sogenannten "Spitbol-Erweiterungen" (die inzwischen auch in allen modernen Implementierungen der ursprünglichen Snobol 4-Sprache enthalten sind), obwohl es möglich ist, dieselbe Kraft ohne sie zu erreichen. Ein Teil dieser Leistung ergibt sich aus den Nebenwirkungen, die während des Musteranpassungsvorgangs erzeugt werden können, einschließlich des Speicherns zahlreicher mittlerer/vorläufiger Matching-Ergebnisse und der Fähigkeit, benutzerschriebene Funktionen während der Musterübereinstimmung aufzurufen, die nahezu jede gewünschte Verarbeitung ausführen kann. und beeinflussen dann die laufende Richtung, die das unterbrochene Muster -Match einnimmt, oder um das Muster selbst während der Übereinstimmung zu ändern. Muster können wie jedes andere erstklassige Datenelement gespeichert und verkettet werden, in anderen Mustern verwendet und verwendet, um sehr komplexe und ausgefeilte Musterausdrücke zu erzeugen. Es ist möglich, beispielsweise ein Snobol4 -Muster zu schreiben, das "einem vollständigen Namen und einer internationalen Post -Mailing -Adresse" übereinstimmt, die weit über alles hinausgeht, was praktisch ist, um zu versuchen, reguläre Ausdrücke zu verwenden.
SNOBOL4 MUSTER-AUSFAHREN verwendet einen Backtracking-Algorithmus, der dem in der verwendeten ist Logikprogrammierung Sprache Prolog, was Muster-ähnliche Konstrukte durchführt DCGs. Dieser Algorithmus erleichtert die Verwendung von Snobol als logische Programmiersprache als für die meisten Sprachen.
Snobol speichert Variablen, Zeichenfolgen und Datenstrukturen in einem einzigen garbage gesammelt Haufen.
Beispielprogramme
Die "Hallo, Welt!" Programm könnte wie folgt sein ...
AUSGANG = "Hallo Welt!" ENDE
Ein einfaches Programm, um nach dem Namen eines Benutzers zu fragen und es dann in einem Ausgabesatz zu verwenden ...
AUSGANG = "Wie heißen Sie?" Nutzername = EINGANG AUSGANG = "Vielen Dank, " Nutzername ENDE
Zwischen drei möglichen Ausgängen wählen ...
AUSGANG = "Wie heißen Sie?" Nutzername = EINGANG Nutzername "J" :S(LIEBE) Nutzername "K" :S(HASSEN) MEH AUSGANG = "Hi, " Nutzername :(ENDE) LIEBE AUSGANG = "Wie schön, dich zu treffen, " Nutzername :(ENDE) HASSEN AUSGANG = "Oh, du bist es, " Nutzername ENDE
Um weiterhin Eingaben zu fordern, bis nicht mehr bevorstehend ist ...
AUSGANG = "Dieses Programm wird Sie nach persönlichen Namen fragen" AUSGANG = "Bis du zurückdrücke, ohne es zu geben, ohne es zu geben" Namecount = 0 :(GetInput) WIEDER Namecount = Namecount + 1 AUSGANG = "Name " Namecount ":" Persönlichen Namen GetInput AUSGANG = "Bitte gib mir Namen" Namecount + 1 Persönlichen Namen = EINGANG Persönlichen Namen Len(1) :S(WIEDER) AUSGANG = "Fertig. " Namecount "Namen angefordert." ENDE
Implementierungen
Die klassische Implementierung war auf der PDP-10; Es wurde verwendet, um zu studieren Compiler, formelle Grammatiken, und künstliche Intelligenz, besonders Maschinenübersetzung und maschinelles Verständnis von natürliche Sprachen. Die ursprüngliche Implementierung war auf einem IBM 7090 in Bell Labs, Holmdel, N.J. Snobol4 wurde speziell für die Portabilität entwickelt. Die erste Implementierung wurde 1966 mit einem IBM 7094 begonnen, aber 1967 mit einem IBM 360 abgeschlossen. Sie wurde schnell auf viele andere Plattformen portiert.
Es wird normalerweise als implementiert als Dolmetscher Aufgrund der Schwierigkeit, einige seiner sehr hochrangigen Merkmale umzusetzen, aber es gibt a Compiler, das Spitbol -Compiler, was fast alle Einrichtungen liefert, die der Dolmetscher bietet.
Die klassische Implementierung auf der PDP-10 war ziemlich langsam und 1972 entwarf James Gimpel von Bell Labs, Holmdel, N.J. eine native Implementierung von Snobol4 für die PDP-10 dass er Sitbol nannte. Er nutzte das Design als Grundlage einer Graduiertenkurs in der String -Verarbeitung, die er in diesem Jahr unterrichtete Stevens Institute of Technology (Deshalb wurde es Sitbol genannt). Die Studierenden erhielten Abschnitte zur Implementierung (im PDP-10-Assembler), und das gesamte Semester konzentrierte sich auf die Implementierung von SITTOL. Am Ende des Semesters war es über 80% abgeschlossen und wurde später im Sommer von Professor Gimpel und mehreren Studenten fertiggestellt. SITBOL war ein Snobol4-Dolmetscher mit voller Leistung.
Das Mücke Ada Der Compiler wird mit einem Paket (gnat.spitbol) geliefert, das alle Semantik der Spitbol -String -Manipulation implementiert. Dies kann innerhalb eines ADA -Programms aus aufgerufen werden.
Der Datei -Editor für die Michigan Terminalsystem (MTS) lieferte Musteranpassungen basierend auf Snobol4 -Mustern.[10]
Derzeit sind mehrere Implementierungen verfügbar. MACRO SNOBOL4 IN C VON PHIL BUDNE ist eine kostenlose Open -Source -Implementierung, die auf fast jeder Plattform ausgeführt wird.[11] Catspaw, Inc lieferte eine kommerzielle Implementierung der Snobol4 -Sprache für viele verschiedene Computerplattformen, darunter DOS, Macintosh, Sun, Rs/6000 und andere, und diese Implementierungen sind jetzt kostenlos aus Catspaw verfügbar. Minnesota Snobol4, von Viktors Berstis, ist auch kostenlos für die ursprüngliche IBM-Mainframe-Version (auch einschließlich der Unterstützung für die Forger-ähnliche Format-Erklärung der Forran-ähnlichen Formatanweisung).[12]
Obwohl Snobol selbst keine hat Strukturierte Programmierung Merkmale, ein Snobol -Präprozessor genannt Snostorm wurde in den 1970er Jahren von Fred G. Swartz für die Verwendung unter dem entworfen und implementiert Michigan Terminalsystem (MTS) am Universität von Michigan.[13] Snostorm wurde an den acht bis fünfzehn Standorten verwendet, an denen MTS lief. Es war auch bei erhältlich bei University College London (UCL) zwischen 1982 und 1984.
Snocone von Andrew Koenig Fügt der Snobol4-Sprache blockstrukturierte Konstrukte hinzu. Snocone ist eher eine in sich geschlossene Programmiersprache als eine richtige Superset von Snobol4.[14]
Die Spitbol -Implementierung führte auch eine Reihe von Merkmalen ein, die zwar nicht herkömmliche strukturierte Programmierschlüsselwörter verwendet werden, aber dennoch verwendet werden können, um viele der äquivalenten Funktionen zu bieten, die normalerweise als "strukturierte Programmierung" betrachtet werden, vor allem, wenn/dann/sonst Typ -Konstrukte. Diese Funktionen wurden seitdem zu den neuesten Snobol4 -Implementierungen hinzugefügt. Nach vielen Jahren als kommerzielles Produkt wurde Spitbol im April 2009 als kostenlose Software unter dem veröffentlicht GNU Allgemeine öffentliche Lizenz.
Benennung
Laut Dave Farber,[15] Er, Griswold und Polonsky, "kam schließlich zum Namen Symbolic Expression Interpreter Sexi."
Alles lief gut, bis ich eines Tages einen Batch -Job einreichte, um das System zusammenzustellen, und wie normal in meinem Job Karte - Die erste Karte im Deck, ich habe in BTL-Standards meinen Job und meinen Namen geschlagen- Sexi Farber.
Eines der COMP Center -Mädchen sah es sich an und sagte: "Das ist es, was du denkst" auf humorvolle Weise.
Das machte deutlich, dass wir einen anderen Namen brauchten !! Wir saßen und unterhielten uns und tranken Kaffee und schossen Gummibänder. Nach viel zu viel Zeit sagte jemand - höchstwahrscheinlich Ralph - "Wir haben keine Schneeball -Chance, einen Namen zu finden". Wir alle schrien sofort: "Wir haben es - Snobol" im Geiste aller Bol Sprachen. Wir haben dann unseren Geist ausgestreckt, um zu finden, wofür es stand.
Verbreitet Backronyme von "Snobol" sind 'String -orientierte symbolische Sprache' '[16] oder (als Quasi-Initialismus) 'String orientierte symbolische Sprache'.[17]
Siehe auch
- Icon (Programmiersprache)
- Schneeball (Programmiersprache)
- Snostorm
- Spitbol
- Unicon (Programmiersprache)
Verweise
- ^ Gimpel, J. F. (Februar 1973). "Eine Theorie diskreter Muster und ihre Implementierung in Snobol4". Kommunikation der ACM. 16 (2): 91-100. doi:10.1145/361952.361960. S2CID 17059429.
- ^ "Dr. Dobbs: Programme, die ihren eigenen Quellcode verändern; oder: Der Snobol -Fußwitz". DobbsCodetalk.com. Abgerufen 2011-12-04.
- ^ Kontaktdetails. "Perlre". perldoc.perl.org. Abgerufen 2011-12-04.
- ^ "Rekursives Regex -Tutorial". Abgerufen 2017-03-19.
- ^ Griswold, Ralph E.; Hanson, David R. (April 1977). "Ein Überblick über SL5". ACM Sigplan nennt. 12 (4): 40–50. doi:10.1145/954654.954658. S2CID 38692673.
- ^ Siehe Kapitel 1 von Die Makroimplementierung von Snobol4
- ^ Snobol4 wurde mit C implementiert, um die Anweisungen für virtuelle Maschine neu zu erstellen.
- ^ Griswold, Ralph (1978). "Eine Geschichte der Snobol -Programmiersprachen" (PDF). ACM Sigplan nennt. 13 (8): 275–308. doi:10.1145/960118.808393. S2CID 5413577. Archiviert von das Original (PDF) Am 2019-03-02.
- ^ Wexelblat, Richard L., ed. (2014) [1981]. Geschichte der Programmiersprachen. Akademische Presse. p. 784. ISBN 9781483266169.
- ^ Einführung in den MTS -Datei -Editor, University of Michigan Computing Center, 1986.
- ^ "Snobol4.org - Snobol4 Ressourcen".
- ^ "Die Programmiersprache Minnesota Snobol4".
- ^ "Snostorm", MTS Volume 9: Snobol4 in MTS, Computing Center, Universität von Michigan, Juni 1979, Seiten 99-120. Abgerufen am 1. September 2014.
- ^ "Die Snocone -Programmiersprache"Andrew Koenig, Usenix (Portland, Oregon), Juni 1985. Abgerufen am 2. September 2014.
- ^ Es lohnt sich, Wikipedia -Eintrag über Snobol zu lesen - die wahre Geschichte nicht Wikipedias (Dave Farber, interessante Personen Mailingliste, 26. Dezember 2008)
- ^ Computer und die Geisteswissenschaften 1: 158, 1967.
- ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen, Hrsg. (1979). "Snobol". Enzyklopädie der Informatik und Technologie. Vol. 13. CRC Press. p. 173. ISBN 0-8247-2263-9.
Weitere Lektüre
- Emmer, Mark B. (1985). SNOBOL4+: Die Snobol4 -Sprache für den PC -Benutzer Benutzer. Prentice Hall. ISBN 0-13-815119-9.
- Gimpel, James F. (1976). Algorithmen in Snobol4. Wiley. ISBN 0-471-30213-9. veröffentlicht Salida, CO: Catspaw, 1986 ( ISBN0-939793-00-8).
- Griswold, Ralph E. (1972). Die Makroimplementierung von Snobol4. W.H. Freeman. ISBN 0-7167-0447-1.
- Griswold, Ralph E.; Poage, J.F.; Polonsky, I.P. (1968). Die Snobol4 -Programmiersprache. Prentice Hall. ISBN 0-13-815373-6.
- Griswold, Ralph E. (1975). String- und Listenverarbeitung in Snobol4: Techniken und Anwendungen. Prentice Hall. ISBN 0-13-853010-6.
- Hockey, Susan M. (1985). Snobol -Programmierung für die Geisteswissenschaften. Clarendon Press. ISBN 0-19-824676-5.
Externe Links
- CSNOBOL4 ist ein kostenloser und Open-Source-BSD-lizenziertes Port des ursprünglichen Bell Labs Snobol4 zu Systemen mit einem C-Compiler und umfasst Spitbol und blockiert Verbesserungen.
- Catspaw, Inc. bietet Implementierungen und kommerzielle Unterstützung für Snobol4 an
- Snobol bei Curlie
- Griswold, Ralph E. (25. Juli 1990). "Oral History Interview mit Ralph E. Griswold - erörtert die Entwicklung von Snobol". Minneapolis: Charles Babbage Institute, Universität von Minnesota. ].
- "Charles Hall -Sammlung zur Snobol -Programmiersprache". Minneapolis: Charles Babbage Institute, Universität von Minnesota.
- Für einen kleinen kurz
- Probieren Sie es online aus (Snobol4/CSNobol) Online -Compiler