Sidebar: Scripting vs. Programming
In recent years, a distinction has arisen between scripting and programming. But what is scripting, and what is a scripting language? You won't find a readily agreed upon definition of scripting, but a number of contenders are out there. Ousterhout's Dichotomy (named after John K. Ousterhout, the creator of tool command language or Tcl) provides definitional elements that differentiate between scripting and system programming languages (see Table 1).

Table 1. Ousterhout's Dichotomy
Scripting Languages System Programming Languages
Example languages Tcl, Guile C, C++, Java, Scheme
Typing Weakly typed Strongly typed
Data structures Simple Arbitrarily complex
Execution method Interpreted Compiled

Ousterhout's Dichotomy is not 100 percent correct, however. Although it classifies Tcl as a scripting language because of its interpreted execution method, Tcl could easily be compiled and still be Tcl. At the same time, Java doesn't completely hold to its system programming language classification because it is, in a sense, interpreted (at the byte-code level). But even though a precise definition is elusive, a rough one is easy to determine (see Table 2).

Table 2. A Rough Dichotomy
Scripting Languages System Programming Languages
Programming style Quick and dirty Thought out


—Greg Travis