applications 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, MSDOS
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.
OTT « Ottawa Euclid « Ousterhout, John K. «
Ousterhout's dichotomy » Ousterhout's fallacy »
Ousterhout's false dichotomy » outer join