A programming language is an artificial language used mainly for giving instructions to computers; a secondary use is for the precise specification of algorithms. A group of instructions for a particular purpose is known as a computer program.
When compared with human languages (e.g. English, French, Spanish, etc.), programming languages are very much smaller, much simpler, and are also more precise. Most programming languages consist of a mixture of English words and mathematical notation; very few programming languages have a base vocabulary exceeding 60 words, although they may also have utility libraries with hundreds of entries which provide optional extra functionality.
Many thousands of different programming languages have been defined, though only a few dozen are in widespread use. The first publicly available programming language was A-0, developed in 1951 by Grace Hopper. In 1948 Zuse published a paper (in "Archiv der Mathematik") about an early programming language Plankalkül, though this was not actually implemented until 1998.
Describing a programming language
While human languages such as English may have rules of grammar, there are almost always exceptions to these rules. To reduce ambiguity, most programming languages have their grammar or syntax rigidly defined by a relatively small number of rules, with no exceptions. In many cases some variation of a context-free grammar is used, often Backus-Naur Form, or some extension thereof. Note that context-free grammars are not powerful enough to describe human languages such as English.
The meaning or semantics of any particular construct in a programming language is most commonly described in fairly precise English. Several unsuccessful attempts have been made to find a formal way of describing the semantics.
The more important programming languages have an internationally-agreed official standard (ISO is the international standards organisation, ANSI is the standards body in the United States). In theory, programs which conform to the relevant standard should be usable on most types of computer; this works in practice most of the time, provided that the programmers have been careful to avoid machine-dependencies.
Very few programmers learn a programming language directly from the formal definition, which exists primarily as a reference which can be consulted in cases of doubt. There are usually plenty of books and training courses for the more common programming languages.
About programming languages
Some programming languages are general-purpose and some are specific to a particular problem domain. However, programming languages evolve over time and usually become more general-purpose. For instance, the BASIC programming language and the Pascal programming language were originally intended as teaching languages, for students of programming. But both are now popular as general-purpose languages. The features of most modern programming languages are similar, but the words and syntax differ. For instance, the PRINT statement is used to output data in BASIC, whereas WRITELN is used for the same purpose in Pascal. Even when the words and syntax are similar between two languages, often the meaning (semantics) is different.
Programming languages can be divided into declarative and procedural languages. Declarative languages define information such as relationships and attributes. Prolog is an example of a declarative language. Procedural languages define processes (algorithms) for the computer to follow. C is an example of a procedural language.
Languages can also be divided into low-level languages such as Assembly, and high-level languages such as COBOL. Low-level languages are those where the program code interacts directly (or fairly directly), with the CPU, whereas high-level languages have a higher level of abstraction, leaving the compiler or interpreter to deal with issuing the appropriate commands to the CPU, and similar issues.
The level of a language is a sliding scale, with some languages considered more high-level than others. Low-level langauges tend to require more steps to accomplish the same tasks than high-level languages. Assembly language is not a specific language, such as BASIC, but rather any of a group of languages that are each specific to a particular CPU.
Most, if not all, high-level languages support the following features: sub-routines (functions and procedures), variables, flow-control, data types, I/O, arithmetic operations, string operations, dynamic allocation (heaps), arrays, structures, constants, and literals. Unique features of some languages will find their way into other languages if the feature is generally useful, or will remain unique to the language otherwise. An example of a feature that has not received widespread acceptance is sets.
Objects are a means of encapsulating data and algorithms that operate on that data, with polymorphism. Originally specified in Simula, objects became popular with the advent of C++. Many languages which originally did not support objects have since acquired them. For instance Visual BASIC is a version of BASIC supporting objects. Likewise, Borland Delphi is a version of Pascal supporting objects.
Implementation of programming lLanguages
A set of instructions written in a programming language is called source code, or simply code. In order for a computer to execute a program, another program must be used to prepare the source for execution. Interpreters translate the source code into machine code as the program executes. Compilers and Assemblers convert the source code into machine code once, and the computer can run the machine code any number of times. This makes compiled code run faster than interpreted code, usually by a factor of about 10.
Most of the program code in use today is written in C, C++, COBOL, and Java. Other popular general-purpose languages include BASIC, Pascal, and C#. There are literally thousands of programming languages, although many of them are simply variants of others. Variants are called dialects. Thus, Visual BASIC is a dialect of BASIC.
The following is a sample list of programming languages.