Foreword
Historically, the difference between scripting languages and real programming languages has been understood as the presence or absence of a compilation step. However, in recent decades the distinction has blurred; from time to time we have seen:
- Interpreters for languages that were originally meant to be compiled.
- Compilers for languages that were originally meant to be interpreted.
- Scripting engines internally converting source code to bytecode before interpreting it.
- Real languages compiling to bytecode which is then mostly interpreted and rarely converted to machine code.
So, compiled vs. interpreted does not seem to be the real differentiating factor; nonetheless, we can usually tell a scripting language when we see one. So, what is it that we see?