system programming language

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)
    

[email protected]