In his History of Python: Introduction and Overview, Guido van Rossum repeats the confusion between “scripting” and “dynamic” languages:
Python is currently one of the most popular dynamic programming languages, along with Perl, Tcl, PHP, and newcomer Ruby. Although it is often viewed as a “scripting” language, it is really a general purpose programming language along the lines of Lisp or Smalltalk (as are the others, by the way).
I think there’s a big difference between the two categories, and the reason they get confused is that both are usually high level languages with dynamic typing, automatic memory management, etc.
But the two types of languages are really different when it comes to how the programmer interacts with them, and in how they are implemented:
- Scripting languages read whole programs from outside the compiler and execute them immediately, usually with a minimal amount of processing.
- Dynamic languages include the compiler in their own environment, and programming is seen as adding or modifying that environment.
For some reason, calling a language “scripting” is seen as somehow implying it’s a lower, less powerful language. That’s clearly not true. Nothing in the way Python works makes it a less-than-general purpose language. It simply doesn’t work the way Lisp or Smalltalk do.