waffle

Waffle is a weblog.
The author of Waffle, some guy in Sweden, also occasionally writes stmts.net.

Scripting is Dead; Long Live Scripting

Isn’t it time to stop using the phrase “scripting language”?

The original example was for scripting to be used for scripts; to cobble together a working pipeline of lesser parts into an automation or to massage data. Every traditional scripting language is by now usable for deeper programming, and many of them are good at it. The performance argument was always a long-term fallacy because it conflates language with implementation and indeed something like Node is as fast as anything because it uses the tireless improvements in V8.

Every programming language I know is used for both scripting and application development. Half of them are called scripting languages for historical reasons. I don’t know when the next wave of interesting languages will come, but I bet no one will use the term “scripting” beyond to say that it’s usable to write scripts in.

There is maybe a place to retain a distinction; shell languages like sh, bash and Powershell, and maybe also real, actual in-system scripting languages where you can’t escape the box and have access to very few tools, are truly intended to be used for scripting in their original meaning. They actually provide little facility for good programming practices because they’re not focused on them but on the task at hand. (C++ is the converse of this coin; making it hard to use it for anything but big system programming because intricacy is encouraged.)

The long and short of it is that we all know half of Google runs on Python. If you program today, you will write scripts, you will write applications and you will write systems, and you will do it in a few different languages, but the two axes are now truly disjointed. There’s no reason for me to not write scripts in C# and a network server in JavaScript any longer, and to burden either language with labels of their heritage is a mistake.

Comments

  1. My first instinct was to argue that there was still a need to differentiate between compiled and interpreted code, but on further consideration, that’s really just an implementation detail. V8 proved this in a very public way. Javascript can be compiled into machine-code virtually the same as C code. Long before that, flying under the radar, Objective-C was fully straddling the line between compiled and interpreted. With compiled C, and a runtime for dynamic messaging.

    I think there is still room for the “interpreted” qualifier… as in “my web app is running on interpreted php right now, but we’re transitioning to compiled php sometime later this year”. But it’s really just a note about the implementation, not the language used.

    However, I suspect the word “scripting” will continue to be used, if only because it’s more evocative of a set of ideas (dynamically typed, portable, garbage collected, easy) than a word like “dynamic” or “interpreted” is. Unless you can come up with a better word. And nobody better suggest “agile” ;)

    By Cory · 2011.05.24 00:39

  2. I’d rather use “painless” than “scripting”. Aside from the heavy .NET stench, “managed” is actually pretty good.

    But aside from that, for which language would you apply this new label? Would C# get in? JavaScript? (…hm.) Tcl? Perl 5? Perl 6? Groovy? Scala? Is it just a new word to search and replace the “scripting” in “scripting language” with, or do we need a few more axes to measure in, at last?

    I know you’re kidding, but “agile” highlights a category of words that wouldn’t work because it’s a way in which you use the tool. It’s like talking about “morning shift tractors”.

    And of course there’s still room to use the technological standbys to discuss their actual use. It’s just not justified to maintain two opposing camps anymore based on those particulars of the primary implementation.

    By Jesper · 2011.05.24 19:10

Sorry, the comment form is closed at this time.