from
The Free On-line Dictionary of Computing (8 July 2008)
Ousterhout's dichotomy
applications language
Ousterhout's fallacy
Ousterhout's false dichotomy
system programming language
<language> {John Ousterhout}'s division of {high-level
languages} into "system programming languages" and "scripting
languages". This distinction underlies the design of his
language {Tcl}.
System programming languages (or "applications languages") are
{strongly typed}, allow arbitrarily complex {data structures},
and programs in them are {compiled}, and are meant to operate
largely independently of other programs. Prototypical system
programming languages are {C} and {Modula-2}.
By contrast, scripting languages (or "glue languages") are
weakly typed or untyped, have little or no provision for
complex data structures, and programs in them ("{scripts}")
are {interpreted}. Scripts need to interact either with other
programs (often as {glue}) or with a set of functions provided
by the interpreter, as with the {file system} functions
provided in a {UNIX shell} and with {Tcl}'s {GUI} functions.
Prototypical scripting languages are {AppleScript}, {C Shell},
{MS-DOS} {batch files} and {Tcl}.
Many believe that this is a highly arbitrary dichotomy, and
refer to it as "Ousterhout's fallacy" or "Ousterhout's false
dichotomy". While strong-versus-weak typing, data structure
complexity, and independent versus stand-alone might be said
to be unrelated features, the usual critique of Ousterhout's
dichotomy is of its distinction of compilation versus
interpretation, since neither {semantics} nor {syntax} depend
significantly on whether code is compiled into
{machine-language}, interpreted, {tokenized}, or
{byte-compiled} at the start of each run, or any mixture of
these. Many languages fall between being interpreted or
compiled (e.g. {Lisp}, {Forth}, {UCSD Pascal}, {Perl}, and
{Java}). This makes compilation versus interpretation a
dubious parameter in a taxonomy of programming languages.
(2002-05-28)