What Makes a Scripting Language?

By Deane Barker 6 min read
AI Summary

This post explores the characteristics that define scripting languages, emphasizing their ease of use, interpretive nature, and flexibility. The author highlights how these traits differentiate scripting languages from compiled languages, making them suitable for rapid development and automation tasks in various computing environments.

Note

When I wrote this, I was a developer who was deeply insecure about being just a “web scripter.” Back in 2005, a lot of corporate IT still took place in more traditional environments like Visual Basic and Java. People working on “just” the web weren’t at the level they are today.

I have a friend who programs in .Net (I referred to him in a prior post). We’ll call him “Trevor.”

Trevor and I have epic arguments about the superiority of our chosen platforms. I use open-source, “scripting” languages – PHP and Ruby, mainly – while Trevor develops in .Net.

Trevor has the habit of calling me a “[blank] scripter.” Usually the blank is filled with “crappy” or something else unprintable – he’s entertaining if nothing else.

However, this running argument got me thinking about what makes something a “scripting” language, and not a “programming” language. I’m sure this is not an original question, but I nevertheless came up with what I think are the two key differences:

  1. Strongly vs Weakly-Typed. “Scripting” languages are usually weakly-typed, meaning anything can fit into any variable. “Programming” languages are strongly-typed, meaning you have to declare what a variable can hold before you put something in it.

  2. Compiled vs. Interpreted. “Scripting” languages exist in source, which is compiled to machine code at runtime, which involves an extra step and is therefore slower. “Programming” languages are pre-compiled.

Put another way, if PHP was strongly-typed and pre-compiled, would it be considered a “programming” language, rather than a “scripting” language? Could I then tell Trevor to bite me?

Where is the line? I’m interested in opinions. I’m sure this question has been asked and answered before – can anyone point to some good resources on the subject?

In the process of looking at this, I found a great page on scripting at Wikipedia. Some quotes:

[…] it is usually faster to program in a scripting language, and script files are typically much smaller than, say, equivalent C program files. The flip side can be a performance penalty: scripting languages, often interpreted, may be significantly slower to execute and may consume more memory when running. In many relevant cases, however, e.g. with small scripts of some tens of lines, the write-time advantage far outweighs the run-time disadvantage. Also, this argument gets stronger with rising programmer salaries and falling hardware costs.

However, the boundary between scripting languages and regular programming languages tends to be vague, and is blurring ever more with the emergence of new languages and integrations in this fast-changing area. In some scripting languages, an experienced programmer can accomplish a good deal of optimization if they choose.