Revision 225828311 of "SNOBOL" on enwiki{{otheruses4|the programming language|the cleaning product|SnoBol (cleaner)}}
{{ infobox programming language
| name = SNOBOL
| paradigm = [[multi-paradigm programming language|multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[functional programming|functional]], [[logic programming|logic]]
| year = 1962
| designer = [[David J. Farber]], [[Ralph E. Griswold]] and [[Ivan P. Polonsky]]
| developer = David J. Farber, Ralph E. Griswold, Ivan P. Polonsky, and [[Bell Labs]]
| latest release version = [[SNOBOL4]]
| latest release date = 1967
| implementations = SNOBOL, [[SPITBOL]]
| influenced = [[Icon programming language|Icon]]
}}
'''SNOBOL''' (''String Oriented Symbolic Language'') is a computer [[programming language]] developed between 1962 and 1967 at [[AT&T]] [[Bell Laboratories]] by [[David J. Farber]], [[Ralph E. Griswold]] and [[Ivan P. Polonsky]]. (The name is a jocular reference to [[COBOL programming language|COBOL]] and [[ALGOL programming language|ALGOL]], but these languages have no other connection and no other notable similarities).
During the 1950s and 1960s there was a flourishing of interest in special-purpose computer languages. SNOBOL was one of a number of text-string-oriented languages, and one of the more successful; others included [[COMIT]] and [[TRAC programming language|TRAC]].
SNOBOL was widely used in the 1970s and 1980s as a text manipulation language in the [[humanities]], but in recent years, its popularity has faded as newer languages such as [[Awk]] and [[Perl]] have made string manipulation by means of [[regular expression]]s popular; it is now mostly a special interest language used mainly by enthusiasts, and new implementations are rare.
== Features ==
The [[SNOBOL4]] (StriNg Oriented symBOlic Language number 4) version is the fourth and final incarnation of such a series of special purpose programming languages for character string manipulation.
The SNOBOL4 variant of the language supports a number of built-in [[data type]]s, such as [[integer]]s and limited precision [[real number]]s, [[string (computer science)|strings]], [[pattern matching|pattern]]s, [[array]]s, and [[associative array|table]]s (associative arrays), and also allows the programmer to define additional data types and new [[function (programming)|function]]s. SNOBOL4's programmer-defined data type facility was advanced at the time (it preceded, and resembles, [[Pascal programming language|Pascal]]'s "records" and [[C (programming language)|C]]'s "structs").
SNOBOL4 stands apart from the mainstream programming languages of that time by having patterns as a [[first-class object|first-class data type]] (''i.e.'' a data type whose values can be manipulated in all ways permitted to any other data type in the programming language) and by providing operators for pattern [[concatenation]] and alternation. Strings generated during execution can be treated as programs and executed.
A SNOBOL pattern can be very simple or extremely complex. A simple pattern is just a text string (e.g. "ABCD"), but a complex pattern may be a large structure describing, for example, the complete grammar of a computer language.
SNOBOL provides the programmer with a rich assortment of features including some rather exotic ones. As a result it is possible to use SNOBOL as if it were an [[object-oriented programming|object-oriented]] language, a [[logical programming]] language, a [[functional programming|functional language]] or a standard [[imperative programming|imperative language]] by changing the set of features used to write a program. It also concatenates strings that are simply placed next to each other in a statement. It keeps strings in a memory heap, and frees programmers from concerns about memory allocation and management for strings.
== Implementations ==
The classic implementation was on the [[PDP-10]]; it has been used to study [[compiler]]s, [[formal grammar]]s, and [[artificial intelligence]], especially [[machine translation]] and [[machine comprehension]] of [[natural language]]s. The original implementation was on an IBM 7090 at Bell Labs, Holmdel, N.J. SNOBOL4 was specifically designed for portability; the first implementation was on an IBM 7094 but it was rapidly ported to many other platforms.
It is normally implemented as an [[interpreter (computer software)|interpreter]] because of the difficulty in implementing some of its very high-level features, but there is a [[compiler]], the [[SPITBOL compiler]], which provides nearly all the facilities that the interpreter provides.
The Gnat Ada Compiler comes with a package (GNAT.Spitbol) which implements all of the Spitbol string manipulation semantics. This can be called from within an Ada program.
Several implementations are currently available. Macro SNOBOL4 in C written by Phil Budne is a free, open source implementation, capable of running on almost any platform. It is available at http://www.snobol4.org/. Catspaw, Inc. at http://www.snobol4.com/, provides a commercial implementation of the SNOBOL4 language for many different computer platforms, including DOS, Macintosh, Sun, RS/6000, and others. An older version, SNOBOL4+, is now available free from Catspaw. Minnesota SNOBOL4, By Viktors Berstis, is also free.
Although SNOBOL itself has almost a complete absence of structured programming features,
a structured version of SNOBOL called [[Snostorm]] existed at University College London [[UCL]]
between 1982 and 1984, and another by [[Andrew Koenig (programmer)|Andrew Koenig]] called Snocone. [http://www.acceleratedcpp.com/authors/koenig/bibliography/snocone.pdf]
== See also ==
* [[SPITBOL]]
* [[Icon programming language]]
* [[Unicon programming language]]
== References ==
{{reflist}}
== Further reading ==
* 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).
* Hockey, Susan M. ''Snobol Programming for the Humanities''. New York: Clarendon Press; Oxford: Oxford University Press, 1985 (ISBN 0-19-824676-5).
== External links ==
* [http://www.snobol4.com/ Catspaw, Inc. offers implementations of and support for SNOBOL4]
* [http://dmoz.org/Computers/Programming/Languages/Snobol/ Open Directory Project Category for Snobol]
* [http://drofmij.awardspace.com/snobol/ Introduction to Snobol by James Ford]
* [http://www.engin.umd.umich.edu/CIS/course.des/cis400/snobol/word.html A sample program in SNOBOL]
* [http://special.lib.umn.edu/findaid/xml/cbi00190.xml Charles Hall Collection on the SNOBOL Programming Language]. [http://www.cbi.umn.edu Charles Babbage Institute], University of Minnesota, Minneapolis.
[[Category:Text-oriented programming languages]]
[[Category:SNOBOL programming language family]]
[[bg:SNOBOL]]
[[ca:Snobol]]
[[de:SNOBOL4]]
[[es:Snobol]]
[[fr:SNOBOL]]
[[ja:SNOBOL]]
[[pl:Snobol]]
[[pt:SNOBOL 4]]
[[ru:Snobol]]
[[fi:SNOBOL]]
[[tr:Snobol]]
[[uk:Snobol]]All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://en.wikipedia.org/w/index.php?oldid=225828311.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|