What is the difference between a programming language and a scripting language?

Both are programming languages. A program is just a more or less complex script.

But what characterizes a script language is that it does not need to be compiled to be executed, it is said to be interpreted.

C, C++ for example are languages whose programs must be compiled, that is to say, transformed into machine language, for a given hardware and operating system (a C program compiled on a PC will not work on a Mac for example and if it is compiled for Windows, it will not work under Linux)

JAVA or all .NET languages for example, must also be compiled but in bytecode (an intermediate code, higher level than the machine language), and this bytecode is executed by a virtual machine which is in principle able to execute an application without its author having to worry about the hardware or software specificities of the system which executes it.

Php and JavaScript for example are interpreted languages. They don’t have to be compiled and almost don’t take into account the machine on which they are executed. The Php interpreter is the result of a compiled program written in C.

Essentially, the issues of these 3 technologies are to offer more or less granularity to the programmer. A program compiled in machine language gives precise access to the electronic elements of the hardware that executes it. This type of program generally runs faster, takes longer to set up and requires a great deal of rigor from the programmer. This type of application could in fact intervene in another running program, knowingly or by mistake, which could render the machine unstable or unusable. On the other hand, if you need to develop a driver for an electronic board or an application that runs without latency, in real time, a compiled language such as ASM, C or C++ will be indispensable.

Virtual machines that run JAVA or .NET don’t offer as much granularity, but they do protect the systems they run on, to some extent. And since this issue is taken care of by the virtual machine itself, developments in JAVA or .NET are faster to deploy.

The script is far from the machine. It orchestrates routines on an existing software infrastructure, simply and quickly.

Who can do more, can do less! You can create anything with a compiled language, even a web site! But it will take you more time, and time in programming is very long and therefore, very expensive.

You see that these different languages have different interests. But this is not so much related to their syntax as to their execution mode and the freedom they offer.