Scripting languages are not the same as dynamic languages

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.

5 responses on “Scripting languages are not the same as dynamic languages

  1. Guido van Rossum

    I don’t believe this distinction is generally agreed upon. Can you show some references (e.g. Wikipedia) and examples of languages that are scripting and languages that are dynamic?

  2. marcoil

    @Guido van Rossum: I agree the distinction is not generally recognized, that’s why I’m making it.

    The names I’ve used are possibly not the best, but I do think there’s a real difference on how Lisp and Smalltalk worked when compared to languages like Python or Perl.

  3. Guido van Rossum

    There’s a distinction alright, but it’s not between scripting and dynamic languages. Their definitions in wikipedia match how these terms are usually understood: vs. .

    The distinction you are trying to make is more between languages with a big programming environment built in (Smalltalk, many Lisp systems) vs. (more traditional) languages with external programming environments (Java, some Lisps, most other languages).

    I think you owe me an apology for claiming that I am “repeating a confusion.” I know perfectly well what I am talking about, and most people would agree with my terminology. You are the one who is “confused”.

  4. marcoil

    @Guido van Rossum: I would never call you “confused” in these matters, and I’m sorry if my wording led you to think that.

    Still, I do think that two different language categories are generally “confused” while there are enough differences to maintain them apart. Not just in their programming environments, but also in the way they work.

    I don’t think I am “confused” in this matter either, although I’m clearly disagreeing with “how these terms are usually understood”.

    Once again, I’m sorry you took my dissenting opinion as a personal attack.

  5. Guido van Rossum

    Maybe you should update the wikipedia entries then.

    To me, “GvR repeats the confusion between X and Y” sounds like “GvR is wrong”, and that’s what I disagree with. I am not wrong in making this distinction.

Leave a Reply

Your email address will not be published.