Ousterhout's dichotomy

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-DOSbatch 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.