If you want to want to program your computer or any computer-controlled system in order to do something for you, you have to write a program in a programming language. But what is a programming language?
Technically speaking, a programming language is a formal language which is used to define data structures and algorithms which can be executed by a computer. These structures and algorithms are made up of commands which in turn follow a pattern defined by the syntax of the programming language.
Basically, a programming language serves the same purpose as a natural, spoken language like English, German, French etc. - it is used to communicate and transmit information between different communication partners. In the case of natural languages, these are usually two or more real persons. On the side of programming languages, at least one of the communication partners is replaced by a computer.
While natural languages can be difficult to learn, programming languages are much easier, both concerning syntax and grammar. This easy structure does not limit their usefullness or flexibility however.
There are a lot of different programming languages today. These languages can be grouped by the level of abstraction or historical group, by their basic structure and the paradigms they use, or simply by technical "family". With some detective work, one could probably develop a complete family tree, probably going back to the roots of programming languages in the form of the pioneering work by Ada Lovelace which was inspired by Charles Babbages work on the "analytical engine".
Some programming languages use command words which are taken from a natural language, usually English. Other, simpler programming languages which are used on a level which is nearer to the underlying "machinery" of the computer, use only abbreviations or numbers.
For a brief overview of different kinds of programming languages, you can read my related article here.
With natural languages, information of any kind can be transfered from one person to another, regardless if the information is in any way useful or not. Usually this kind of communication is a two-way communication where both persons can be sending and receiving information.
With the artificial programming languages, the computer is mostly limited to the role of a passive receiver. Even though he can send information via different channels when the program is running, during the programming process it is usually passive.
In most programming languages, the program is basically a long, structured list of commands which the computer has to execute. Even with the more interactive logical and functional programming languages, the computer still has to execute steps which are defined as "side effects" of certain logical expressions or functions.
With the exception of the lowest level of programming language - machine code - computers cannot directly understand programming languages, they need a means of translation.
This translation is done by either interpreter or compiler programs. Both kind of programs translate the commands written in the syntax of the specific programming language into machine code which the computer can then execute.
Interpreter programs read the command lines in the programs source code file line by line. After each line, the command is translated into machine code and then directly executed.
Compiler programs work a little differently. They also read the source code line by line and translate each of the lines. The translated machine code however is added to a separate machine code file (which is called "executable"). This collection of machine code commands is only executed by the computer after the compiler has finished translating every part of the program. Often the compiler also optimizes the machine code according to given optimiziation settings.
A program created by a compiler does not have to be translated again, at least not until the original source code files are changed. This speeds up the execution of the program.
I hope the paragraphs above have helped you to understand what a programming language is - and what it is not.
If you are looking for some examples or you want to see how a programming language is used, take a look at my programming tutorials on this website.