Well... I came a little late in this post, but I’ve always understood scripting languages as being those used in "specific domains", that is, created to help solve problems in a particular segment of computer science. Generally, the "engine" of a scripting language is embedded in an application, so that it can be configured very flexibly, assisting the automation of certain tasks.
Programming languages in turn, allow the creation of applications (or programs) to run on one or more operating systems, these applications can be created for various purposes and are executed almost always independent of some other application.
I participated in a project, where a C language application was developed, to read and process files coming from telephone exchanges. This application uses the scripting language Tcl embedded, so that when the download of a file is completed, Tcl scripts are executed to perform various types of processing on the contents of the same, the results produced after this processing meet other areas of the company, such as billing and fraud analysis.
In this example, C would be the programming language, Tcl the scripting language.
Currently, scripting languages are becoming more sophisticated, allowing for example the source code of a script to be "compiled" to a file in "bytecode", in this case the "engine" in the host application runs the file in bytecode, that tends to have a better execution performance in addition to protecting the source code of the script against third parties. The problem starts when scripts are developed to run outside an application, this is possible, and I myself have already created scripts in Tcl that have graphical interface and are executed directly by the interpreter of this, outside any host application, in this case Tcl can also be classified as a programming language? Not in my humble opinion. The author of the language himself states that it was created to be embedded in applications in order to solve a specific set of problems.
There seems to be no formal classification to identify scripting and programming languages. I think the most appropriate is to find out who created the language and what use this person or company intends for the same. Generally, if the language allows it to be embedded in an application written in another language, then it is defined as being primarily a scripting language.
I withdrew my vote to close, in the hope of interesting answers appear, but for now, I still find too broad, I see no concrete and reasoned answer, just seem to me opinions with some kind of correct information.
– Jorge B.
Java has not been interpreted for many years.
– Maniero
The question is good precisely because many people do not understand well what it is. It is true that we can not answer 100% because there is no universally accepted conceptualization, but we saw here some very wrong answers (some were deleted) showing that an explanation is necessary.
– Maniero
@bigown erased yes, I answered the concept that I always thought was true, but since you said it was a wrong premise (and I don’t want to contribute garbage) I expect a concrete answer from someone to compare to my answer, so it’s easier to discuss the subject, Just saying you’re wrong gets too vague.
– Filipe Moraes
@Philip no problem in deleting no. If you can’t improve it, it’s the best to do anyway. I’ve already deleted mine myself. In the deleted answers I gave the objective reasons to be wrong, nothing vague. I’ve learned a lot of things wrong, the Internet is full of wrong information, but when you start to put things together, you read the existing definitions you see that one counters the other and then you can only use those that do not find clear objection. The form of execution does not define whether the language is script, has so many contrary cases in this that does not serve as a parameter.
– Maniero
Scripting languages are programming languages that do not require compilation, or are interpreted. and the only difference I see.
– Gabriel Rodrigues