Programming language

The source code for a simple computer program written in the C programming language. When compiled and run, it will give the output "Hello, world!".

A programming language is a formal language, which comprises a set of instructions used to produce various kinds of output. Programming languages are used in computer programming to create programs that implement specific algorithms.

Most programming languages consist of instructions for computers, although there are programmable machines that use a limited set of specific instructions, rather than the general programming languages of modern computers. Early ones preceded the invention of the digital computer, the first probably being the automatic flute player described in the 9th century by the brothers Musa in Baghdad, during the Islamic Golden Age.[1] From the early 1800s, programs were used to direct the behavior of machines such as Jacquard looms, music boxes and player pianos.[2] However, their programs (such as a player piano's scrolls) could not produce different behavior in response to some input or condition.

Thousands of different programming languages have been created, mainly in the computer field, and many more still are being created every year. Many programming languages require computation to be specified in an imperative form (i.e., as a sequence of operations to perform) while other languages use other forms of program specification such as the declarative form (i.e. the desired result is specified, not how to achieve it).

The description of a programming language is usually split into the two components of syntax (form) and semantics (meaning). Some languages are defined by a specification document (for example, the C programming language is specified by an ISO Standard) while other languages (such as Perl) have a dominant implementation that is treated as a reference. Some languages have both, with the basic language defined by a standard and extensions taken from the dominant implementation being common.

Definitions

A programming language is a notation for writing programs, which are specifications of a computation or algorithm.[3] Some, but not all, authors restrict the term "programming language" to those languages that can express all possible algorithms.[3][4] Traits often considered important for what constitutes a programming language include:

Function and target
A computer programming language is a language used to write computer programs, which involves a computer performing some kind of computation[5] or algorithm and possibly control external devices such as printers, disk drives, robots,[6] and so on. For example, PostScript programs are frequently created by another program to control a computer printer or display. More generally, a programming language may describe computation on some, possibly abstract, machine. It is generally accepted that a complete specification for a programming language includes a description, possibly idealized, of a machine or processor for that language.[7] In most practical contexts, a programming language involves a computer; consequently, programming languages are usually defined and studied this way.[8] Programming languages differ from natural languages in that natural languages are only used for interaction between people, while programming languages also allow humans to communicate instructions to machines.
Abstractions
Programming languages usually contain abstractions for defining and manipulating data structures or controlling the flow of execution. The practical necessity that a programming language support adequate abstractions is expressed by the abstraction principle;[9] this principle is sometimes formulated as a recommendation to the programmer to make proper use of such abstractions.[10]
Expressive power
The theory of computation classifies languages by the computations they are capable of expressing. All Turing complete languages can implement the same set of algorithms. ANSI/ISO SQL-92 and Charity are examples of languages that are not Turing complete, yet often called programming languages.[11][12]

Markup languages like XML, HTML, or troff, which define structured data, are not usually considered programming languages.[13][14][15] Programming languages may, however, share the syntax with markup languages if a computational semantics is defined. XSLT, for example, is a Turing complete language entirely using XML syntax.[16][17][18] Moreover, LaTeX, which is mostly used for structuring documents, also contains a Turing complete subset.[19][20]

The term computer language is sometimes used interchangeably with programming language.[21] However, the usage of both terms varies among authors, including the exact scope of each. One usage describes programming languages as a subset of computer languages.[22] In this vein, languages used in computing that have a different goal than expressing computer programs are generically designated computer languages. For instance, markup languages are sometimes referred to as computer languages to emphasize that they are not meant to be used for programming.[23]

Another usage regards programming languages as theoretical constructs for programming abstract machines, and computer languages as the subset thereof that runs on physical computers, which have finite hardware resources.[24] John C. Reynolds emphasizes that formal specification languages are just as much programming languages as are the languages intended for execution. He also argues that textual and even graphical input formats that affect the behavior of a computer are programming languages, despite the fact they are commonly not Turing-complete, and remarks that ignorance of programming language concepts is the reason for many flaws in input formats.[25]

Other Languages
Afrikaans: Programmeertaal
Alemannisch: Programmiersprache
العربية: لغة برمجة
Bân-lâm-gú: Thêng-sek gí-giân
беларуская (тарашкевіца)‎: Мова праграмаваньня
brezhoneg: Yezh programmiñ
Esperanto: Programlingvo
Bahasa Indonesia: Bahasa pemrograman
íslenska: Forritunarmál
עברית: שפת תכנות
Basa Jawa: Basa pamrograman
Lëtzebuergesch: Programméiersprooch
la .lojban.: samplabau
македонски: Програмски јазик
Bahasa Melayu: Bahasa pengaturcaraan
Mìng-dĕ̤ng-ngṳ̄: Piĕng-tiàng ngṳ̄-ngiòng
မြန်မာဘာသာ: Programming language
Nederlands: Programmeertaal
norsk nynorsk: Programmeringsspråk
oʻzbekcha/ўзбекча: Programmalash tili
ភាសាខ្មែរ: ភាសាកម្មវិធី
Plattdüütsch: Programmeerspraak
русиньскый: Язык проґрамованя
Simple English: Programming language
slovenčina: Programovací jazyk
slovenščina: Programski jezik
српски / srpski: Програмски језик
srpskohrvatski / српскохрватски: Programski jezik
ၽႃႇသႃႇတႆး : Programming language
Basa Sunda: Basa program
svenska: Programspråk
татарча/tatarça: Программалау теле
tetun: Programing
ᨅᨔ ᨕᨘᨁᨗ: ᨅᨔ ᨀᨚᨇᨘᨈᨛᨑᨛ
Tiếng Việt: Ngôn ngữ lập trình
吴语: 编程语言
粵語: 程式語言
žemaitėška: Pruogramavėma kalba
中文: 编程语言