![]() | This article includes a list ofgeneral references, butit lacks sufficient correspondinginline citations. Please help toimprove this article byintroducing more precise citations.(October 2015) (Learn how and when to remove this message) |
Programming language theory (PLT) is a branch ofcomputer science that deals with the design, implementation, analysis, characterization, and classification offormal languages known asprogramming languages. Programming language theory is closely related to other fields includinglinguistics,mathematics, andsoftware engineering.
In some ways, the history of programming language theory predates even the development of programming languages. Thelambda calculus, developed byAlonzo Church andStephen Cole Kleene in the 1930s, is considered by some to be the world's first programming language, even though it was intended tomodel computation rather than being a means for programmers todescribealgorithms to a computer system. Many modernfunctional programming languages have been described as providing a "thin veneer" over the lambda calculus,[2] and many are described easily in terms of it.
The first programming language to be invented wasPlankalkül, which was designed byKonrad Zuse in the 1940s, but not publicly known until 1972, and not implemented until 1998. The first widely known and successfulhigh-level programming language wasFORTRAN (for Formula Translation), developed from 1954 to 1957 by a team ofIBM researchers led byJohn Backus. The success of FORTRAN led to the formation of a committee of scientists to develop a "universal" computer language; the result of their effort wasALGOL 58. Separately,John McCarthy ofMassachusetts Institute of Technology (MIT) developedLisp, the first language with origins in academia to be successful. With the success of these initial efforts, programming languages became an active topic of research in the 1960s and beyond.
Some other key events in the history of programming language theory since then:
There are several fields of study that either lie within programming language theory, or which have a profound influence on it; many of these have considerable overlap. In addition, PLT makes use of many other branches ofmathematics, includingcomputability theory,category theory, andset theory.
Formal semantics is the formal specification of the behaviour of computer programs and programming languages. Three common approaches to describe the semantics or "meaning" of a computer program aredenotational semantics,operational semantics andaxiomatic semantics.
Type theory is the study oftype systems; which are "a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute".[4] Many programming languages are distinguished by the characteristics of their type systems.
Program analysis is the general problem of examining a program and determining key characteristics (such as the absence of classes ofprogram errors). Program transformation is the process of transforming a program in one form (language) to another form.
Comparative programming language analysis seeks to classify languages into different types based on their characteristics; broad categories of languages are often known asprogramming paradigms.
Metaprogramming is the generation of higher-order programs which, when executed, produce programs (possibly in a different language, or in a subset of the original language) as a result.
Domain-specific languages are those constructed to efficiently solve problems in a given domain, or part of such.
Compiler theory is the theory of writingcompilers (or more generally,translators); programs that translate a program written in one language into another form. The actions of a compiler are traditionally broken up intosyntax analysis (scanning andparsing),semantic analysis (determining what a program should do),optimization (improving the performance of a program as indicated by some metric; typically execution speed) andcode generation (generation and output of an equivalent program in some target language; often theinstruction set architecture of acentral processing unit (CPU)).
Run-time systems refer to the development of programming languageruntime environments and their components, includingvirtual machines,garbage collection, andforeign function interfaces.
Conferences are the primary venue for presenting research in programming languages. The most well known conferences include theSymposium on Principles of Programming Languages (POPL),Programming Language Design and Implementation (PLDI), theInternational Conference on Functional Programming (ICFP), the international conference onObject-Oriented Programming, Systems, Languages & Applications (OOPSLA) and theInternational Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).
Notable journals that publish PLT research include theACM Transactions on Programming Languages and Systems (TOPLAS),Journal of Functional Programming (JFP),Journal of Functional and Logic Programming, andHigher-Order and Symbolic Computation.