Sunday, August 10th, 2008

“Scripting” Programming Languages?

If you create software for a living, chances are the only important question in your workplace is, “How quick can you get it out the door?” Unlike figure skating or diving, no points are awarded for good style. But once in a while it’s refreshing to think about how we work and the tools we use, like programming languages. I enjoyed reading In Praise of Scripting: Real Programming Pragmatism by Ronald P. Loui (complete reference below). It’s a high quality text with a lot of perspective.

However, I’d like to question the term scripting languages. In an 1998 article (quoted in the article by Loui) John K. Ousterhout made a distinction between system development languages and scripting languages. The article by Loui reflects this terminology.

In my opinion the problems computers solve have changed a lot over the decades. It’s only natural that programming languages evolve to match the problems we face. Two of the main trends that affect computer software development are,

  • Computer systems are increasingly communicative
  • Programmer productivity becomes a key factor for the system price tag as the cost of hardware decreases

Remember Algol 60, anyone? The name means algorithmic language. In those days a computer program was an algorithm. You fed it some input, and after a while it typically generated a table of numbers. Input and output were such an unimportant aspect of an algorithm that the Algol 60 language spec didn’t even mention it.

Algol was fine in the 60s. Ousterhout’s article 30 years later still seems to imply that systems are rather uncommunicative. You would use a system programming language to develop systems, and then a scripting language to connect them. Such a world view is no longer relevant.

System development today is all about communication. Anyone is free to put the label “scripting” to a programming language that favors communication, but I’d say it’s just a programming language for solving today’s problems.

Some languages are called “scripting” because they contain high-level abstractions. However, for a large class of systems, programmer productivity is much more important than performance. Adding more hardware to a solution is often less costly than adding programmer time. So, high-level abstractions don’t necessarily make a language “scripting”. The abstractions are there to address the current system development reality.

Rather than scripting it seems more relevant to call communicative, very high-level languages contemporary because they address contemporary problems.

Reference: In Praise of Scripting: Real Programming Pragmatism. Ronald P. Loui, Washington University in St. Louis. IEEE Computer, July 2008 (Vol. 41, No. 7) pp. 22-26. (IEEE expects you to pay $19 for the article.)

The article by Ousterhout also appeared in IEEE Computer: Scripting: Higher-Level Programming for the 21st Century. John K. Ousterhout. IEEE Computer, vol. 31, no. 3, pp. 23-30, March, 1998. (Another $19.)

Comments are closed.