I like the approach taken by this paper to present the facts of "scripting languages" and invites the reader to ask the question and answer for themselves, "what is a scripting language," rather than answer it for the reader.
Of course I have strong opinions on this topic which you probably won't agree with entirely. Mostly, I think the term "scripting language," is just a marketing term, much like "artificial intelligence." People have a vague idea of what it means, and it looks good when you include "scriptable" or "extensible" in the list of features for your software in your marketing material.
Before LLMs were invented, it may have been a marketable feature of your scripting language that it was "powerful" and "easy to learn," meaning had a syntax that maybe somewhat resembled a spoken language such as English. This perhaps made it appear to prospective customers like they could easily customize the application to get more work done without too much effort.
But like most marketing, it is a all a big lie: computer languages are not easy to use no matter how much you try to make them resemble a spoken language. Programming languages are never easy or natural to use unless you already understand computer programming.
And now that LLMs are a thing, you can really, actually script your application in natural language, the LLM will translate your natural language explanation into a scripting language, usually JavaScript as that is the language most readily available for training LLMs.
I think one thing that Lisp languages get right, which all other languages get wrong (even some of my favorite languages, like Haskell) is that the code itself is just a serialization protocol (S-expressions) of the Abstratc Syntax Tree (AST) of the language. You write code using the same protocol that the compiler/interpreter itself uses to read and write it's own AST. This simplifies the language, and also provides your users with the ability to do meta-programming (programs that manipulate the AST). Most programming languages keep the AST and interpreter details hidden from their users; this is a huge mistake, because it can be incredibly useful to have the AST and the functions to "read" and "write" it available to you for your own programming.
This S-expression form may look "ugly" to many people, but maybe we should all just stop pretending that Turing complete languages are ever natural or "easy to use." There is no merit to it from a marketing point of view anymore, now that LLMs can do your scripting for you.
And then, with a language like Scheme, which is small enough to be embedded as a scripting language, but powerful enough to build entire applications, you start to realize that it actually is possible to simplify all of computer programming down to a few basic principles which can be used to do everything. All other language semantics can be expressed in this tiny, core language. This is because the beta-reduction algorithm in Lambda Calculus is also Turing complete. It is just so elegant, I can't help but wonder why can people not appreciate this more?
