On 12 January 2012 02:48, Chuck Guzis <cclist at sydex.com> wrote:
(Since much of SNOBOL was written in (gasp!) FORTRAN,
you've got me
wondering what the name of the string-handling package for FORTRAN 66
was that I used quite a bit. Time has almost eradicated it from my
memory. I seem to remember that SNOBOL4 could even link to the
FORTRAN run-time library and programs written in FORTRAN).
I'm pretty sure, actually, that SNOBOL4 (the version of SNOBOL most people
are referring to when they say SNOBOL) was written in SIL. What is SIL?
The SNOBOL Implementation Language, of course. No, really, what is SIL?
It's a huge collection of very portable assembler macros. Indeed you can
see a modern implementation of SNOBOL4 built on SIL (using C as the
assembler this time) right over here <http://www.snobol4.org/csnobol4/curr/>
.
Individuals who are not familiar with the way SNOBOL4 is implemented
usually assume that it is written in assembly
language. Those who have
heard of
its machine independence generally assume it is written in FORTRAN. PL/I
is sometimes supposed since PL/ I is a high-level language whose
operations are
more suitable to such an implementation.
Clearly machine independence and portability rule out
assembly language in
its basic form. At the time the implementation of SNOBOL4 was undertaken,
FORTRAN was considered but rejected because it is poorly suited to perform-
ing the string and list manipulations that are the heart of SNOBOL4. There
are
versions of FORTRAN that have such capabilities, but these extensions vary
from machine to machine and lack the desired independence. PL/I was also
considered but rejected. The reasons for this rejection are somewhat
different.
At the time the implementation was started, there was no viable
implementation
of PL/I. Neither was there a likelihood of compatible versions of PL/I for
most
large-scale scientific machines. Other languages (such as COBOL, ALGOL, and
LISP) were considered but rejected for similar reasons.
What alternative remained? The answer seemed to be to develop a machine-
independent language suitable for implementing
SNOBOL4. Such a language,
to be useful, would have to be considerably simpler than SNOBOL4 itself
since
the implementation language has to be implemented for each machine on which
SNOBOL4 is desired. Thus, the idea of the SNOBOL4 Implementation Lan-
guage (SIL) evolved. Again, there were choices. SIL could be a procedural
lan-
guage, such as ALGOL. Another alternative was an assembly-like language.
The latter choice was made since most machines have assembly languages with
macro facilities that permit the definition of new operations [21-23].
Taking ad-
vantage of existing macro assemblers, therefore, makes the implementation
of
SIL considerably easier.
(Source: *The Macro Implementation of SNOBOL4*, Ralph E. Griswold, 1972)
--
"Perhaps people don't believe this, but throughout all of the discussions
of entering China our focus has really been what's best for the Chinese
people. It's not been about our revenue or profit or whatnot."
--Sergey Brin, demonstrating the emptiness of the "don't be evil" mantra.