applications language (foldoc) | Ousterhout's dichotomy
 applications language
 Ousterhout's fallacy
 Ousterhout's false dichotomy
 system programming 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)
  |