Skip to content
Main menu
  • Main page
  • Discover
  • Unexpected connections
  • Topics
  • Random article
  • Search
Your library
  • Saved articles
  • Recent discoveries
  • Rabbit-hole trails
Topic areas
  • Computer Science
  • Mathematics
  • Physics
  • Engineering
  • Biology
  • Economics
  • Curiosities
WikiholeDeeper into Wikipedia
EnglishEN
  • Saved
  • History

  • Article text and media come live from Wikipedia via the official MediaWiki API and are available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. Each article links to its source and revision.
  • WikiHole is an independent project and is not affiliated with the Wikimedia Foundation.
  • How ranking works
  • All topics
  • Reading history
  • Random article
  • MediaWiki API

Programming language theory

  • Article
  • Rabbit hole
  • Read
  • View history
Tools
Actions
  • Read
  • View history
General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
6 min
Topic
Computer Science
Quality
Start-class
Views
859 in 14 days
Last edited
1 Nov 2026
Print/export
  • Printable version
In other projects
  • Wikidata item
From Wikipedia, the free encyclopedia
Rabbit hole:
  1. Programming language theory
Programming language theory
Branch of computer science

Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages. Programming language theory is closely related to other fields including linguistics, mathematics, and software engineering.

"Theory of programming" redirects here. For the branch of CS that deals with what problems can be solved, see Theory of computation.

Loading the rest of the article…

Recent changes

Rabbit hole

Where Programming language theory leads. Every connection below has a source: a link in this article, a shared Wikipedia category, or CirrusSearch text similarity. Articles already on your trail are left out.

Created
29 Jan 2006
History
282 edits
167 contributors
2 edits in the last 30 days
Last edited
1 Nov 2026

282 revisions in total · 167 contributors · +191 / 0 bytes across 2 edits by 2 contributors in the last 30 days

  1. 1 Nov 2026, 19:11 UTCGreenC botRescued 1 archive link; reformat 1 link; Move 2 urls. Wayback Medic 2.5 per WP:URLREQ#upenn.edu PassA+187diff
  2. 13 Oct 2026, 02:57 UTCThisIsNotMyRealUsername§ growthexperiments-addlink-summary-summary:1|0|0+4diff
  3. 24 Aug 2026, 14:20 UTCMartin Zieglermremoved "Journal of Functional and Logic Programming" (JFLP) as closed since 2008; also, the internal link (incorrectly and redundantly) pointed to JFP−88diff
  4. 10 Nov 2025, 13:45 UTCSchlurcherBotmBot: http → https+2diff
  5. 15 Aug 2025, 02:32 UTCBender the Botm§ External links HTTP to HTTPS for Blogspot+1diff
  6. 18 Jul 2025, 14:01 UTCCitation botRemoved URL that duplicated identifier. | Use this bot. Report bugs. | #UCB_CommandLine−44diff
  7. 21 Apr 2025, 05:07 UTCJerryobject§ Journals, publications, and conferences Nonlead-word nonproper noun MOS:CAPS > WP:LOWERCASE sentence case. Move or cut needless WP:ITALICs.−6diff
  8. 21 Apr 2025, 04:40 UTCJerryobjectWP:REFerence WP:CITation parameters: update-standardize-conform, reorders, adds, fills. WP:LINKs: adds, update-standardizes, needless WP:PIPEs > WP:NOPIPEs, WP:RED until article exists. Small WP:COPYEDITs WP:EoS: WP:TERSE, clarify. MOS:FIRSTABBReviations clarify, define before parenthetic WP:ABBRs.+72diff

View full revision history

Contents
  • (Top)
  • History
  • Sub-disciplines and related fields
  • Journals, publications, and conferences
  • See also
  • References
  • Further reading
  • External links
  • Recent changes
  • Rabbit hole
Contents
Contents9 sections
  • (Top)
  • History
  • Timeline
  • Sub-disciplines and related fields
  • Formal semantics
  • Type theory
  • Program analysis and transformation
  • Comparative programming language analysis
  • Generic and metaprogramming
  • Domain-specific languages
  • Compiler construction
  • Run-time systems
  • Journals, publications, and conferences
  • See also
  • References
  • Further reading
  • External links
  • Recent changes
  • Rabbit hole
Study aids for Programming language theory

Terminology

PLT
Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages.

Terms the article defines in bold, quoted in context.

Categories:
  • Programming language theory

1,347 words · 4 references · revision 1383249338 · CC BY-SA 4.0

General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
6 min
Topic
Computer Science
Quality
Start-class
Views
859 in 14 days
Created
29 Jan 2006
History
282 edits
167 contributors
2 edits in the last 30 days
Last edited
1 Nov 2026

Key concepts

  • Lambda calculus3
  • Model of computation3
  • Alonzo Church2
  • Gerald Jay Sussman2
  • Scheme (programming language)2
  • Programming language2
  • Greek alphabet1
  • Lambda1
  • Structure and Interpretation of Computer Programs1
  • Lambda Papers1

The articles this one links to most, weighted towards the introduction.

Print/export
  • Printable version
In other projects
  • Wikidata item

History

See also: History of programming languages and Programming language § History

In some ways, the history of programming language theory predates even the development of programming languages. The lambda calculus, developed by Alonzo Church and Stephen Cole Kleene in the 1930s, is considered by some to be the world's first programming language, even though it was intended to model computation rather than being a means for programmers to describe algorithms to a computer system. Many modern functional 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 was Plankalkül, which was designed by Konrad Zuse in the 1940s, but not publicly known until 1972, and not implemented until 1998. The first widely known and successful high-level programming language was FORTRAN (for Formula Translation), developed from 1954 to 1957 by a team of IBM researchers led by John 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 was ALGOL 58. Separately, John McCarthy of Massachusetts Institute of Technology (MIT) developed Lisp, 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.

Timeline

See also: Timeline of programming languages

Some other key events in the history of programming language theory since then:

1950s
  • Noam Chomsky developed the Chomsky hierarchy in the field of linguistics, a discovery which has directly impacted programming language theory and other branches of computer science.
1960s
  • In 1962, the Simula language was developed by Ole-Johan Dahl and Kristen Nygaard; it is widely considered to be the first example of an object-oriented programming language; Simula also introduced the concept of coroutines.
  • In 1964, Peter Landin is the first to realize Church's lambda calculus can be used to model programming languages. He introduces the SECD machine which "interprets" lambda expressions.
  • In 1965, Landin introduces the J operator, essentially a form of continuation.
  • In 1966, Landin introduces ISWIM, an abstract computer programming language in his article The Next 700 Programming Languages. It is influential in the design of languages leading to the Haskell language.
  • In 1966, Corrado Böhm introduced the language CUCH (Curry-Church).3
  • In 1967, Christopher Strachey publishes his influential set of lecture notes Fundamental Concepts in Programming Languages, introducing the terminology R-values, L-values, parametric polymorphism, and .
1970s
  • In 1970, Dana Scott first publishes his work on denotational semantics.
  • In 1972, logic programming and Prolog were developed thus allowing computer programs to be expressed as mathematical logic.
  • A team of scientists at Xerox PARC led by Alan Kay develop Smalltalk, an object-oriented language widely known for its innovative development environment.
  • In 1974, John C. Reynolds discovers System F. It had already been discovered in 1971 by the mathematical logician Jean-Yves Girard.
  • From 1975, Gerald Jay Sussman and Guy Steele develop the Scheme language, a Lisp dialect incorporating lexical scoping, a unified namespace, and elements from the actor model including first-class continuations.
  • Backus, at the 1977 Turing Award lecture, assailed the current state of industrial languages and proposed a new class of programming languages now known as function-level programming languages.
  • In 1977, Gordon Plotkin introduces , an abstract typed functional language.
1980s
  • In 1981, Gordon Plotkin publishes his paper on structured operational semantics.
  • In 1988, Gilles Kahn published his paper on natural semantics.
  • There emerged process calculi, such as the Calculus of Communicating Systems of Robin Milner, and the Communicating sequential processes model of C. A. R. Hoare, as well as similar models of concurrency such as the actor model of Carl Hewitt.
  • In 1985, the release of Miranda sparks an academic interest in lazy-evaluated purely functional programming languages. A committee was formed to define an open standard resulting in the release of the Haskell 1.0 standard in 1990.
  • Bertrand Meyer created the methodology design by contract and incorporated it into the Eiffel language.
1990s
  • Gregor Kiczales, Jim Des Rivieres and Daniel G. Bobrow published the book The Art of the Metaobject Protocol.
  • Eugenio Moggi and Philip Wadler introduced the use of monads for structuring programs written in functional programming languages.

Sub-disciplines and related fields

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 of mathematics, including computability theory, category theory, and set theory.

Formal semantics

Further information: Formal semantics of programming languages

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 are denotational semantics, operational semantics and axiomatic semantics.

Type theory

Further information: Type theory

Type theory is the study of type 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 and transformation

Further information: and

Journals, publications, and conferences

Conferences are the primary venue for presenting research in programming languages. The most well known conferences include the Symposium on Principles of Programming Languages (POPL), Programming Language Design and Implementation (PLDI), the International Conference on Functional Programming (ICFP), the international conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA) and the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).

Notable journals that publish PLT research include the ACM Transactions on Programming Languages and Systems (TOPLAS), Journal of Functional Programming (JFP) and Higher-Order and Symbolic Computation.

See also

  • SIGPLAN
  • Very high-level programming language

References

  1. 1Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). Structure and Interpretation of Computer Programs (2nd ed.). Cambridge, Massachusetts: MIT Press. ISBN 0-262-01153-0. OCLC 34576857.
  2. 2"Models Of Computation". wiki.c2.com. December 3, 2014. Archived from the original on November 30, 2020.
  3. 3C. Böhm and W. Gross (1996). Introduction to the CUCH. In E. R. Caianiello (ed.), Automata Theory, p. 35–64.
  4. 4Benjamin C. Pierce. 2002. Types and Programming Languages. MIT Press, Cambridge, Massachusetts, USA.

Further reading

See also: Programming language § Further reading, and Semantics of programming languages § Further reading

  • Abadi, Martín and Cardelli, Luca. A Theory of Objects. Springer-Verlag.
  • Michael J. C. Gordon. Programming Language Theory and Its Implementation. Prentice Hall.
  • Gunter, Carl and Mitchell, John C. (eds.). Theoretical Aspects of Object Oriented Programming Languages: Types, Semantics, and Language Design. MIT Press.
  • Harper, Robert. Practical Foundations for Programming Languages. Draft version.
  • Knuth, Donald E. (2003). Selected Papers on Computer Languages. Stanford, California: Center for the Study of Language and Information.
  • Mitchell, John C. Foundations for Programming Languages.
  • Mitchell, John C. Introduction to Programming Language Theory.
  • O'Hearn, Peter. W. and Tennent, Robert. D. (1997). . Progress in Theoretical Computer Science. Birkhauser, Boston.

External links

  • Lambda the Ultimate, a community weblog for professional discussion and repository of documents on programming language theory.
  • Great Works in Programming Languages. Collected by Benjamin C. Pierce (University of Pennsylvania).
  • Classic Papers in Programming Languages and Logic. Collected by Karl Crary (Carnegie Mellon University).
  • Programming Language Research. Directory by Mark Leone.
  • λ-Calculus: Then & Now by Dana S. Scott for the ACM Turing Centenary Celebration
  • Grand Challenges in Programming Languages. Panel session at POPL 2009.
ad hoc polymorphism
  • In 1969, J. Roger Hindley publishes The Principal Type-Scheme of an Object in Combinatory Logic, later generalized into the Hindley–Milner type inference algorithm.
  • In 1969, Tony Hoare introduces the Hoare logic, a form of axiomatic semantics.
  • In 1969, William Alvin Howard observed that a "high-level" proof system, referred to as natural deduction, can be directly interpreted in its intuitionistic version as a typed variant of the model of computation known as lambda calculus. This became known as the Curry–Howard correspondence.
  • Programming Computable Functions
  • In 1978, Robin Milner introduces the Hindley–Milner type system inference algorithm for ML language. Type theory became applied as a discipline to programming languages, this application has led to great advances in type theory over the years.
  • Program analysis
    Program transformation

    Program analysis is the general problem of examining a program and determining key characteristics (such as the absence of classes of program errors). Program transformation is the process of transforming a program in one form (language) to another form.

    Comparative programming language analysis

    Comparative programming language analysis seeks to classify languages into different types based on their characteristics; broad categories of languages are often known as programming paradigms.

    Generic and metaprogramming

    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

    Domain-specific languages are those constructed to efficiently solve problems in a given domain, or part of such.

    Compiler construction

    Further information: Compiler construction

    Compiler theory is the theory of writing compilers (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 into syntax analysis (scanning and parsing), semantic analysis (determining what a program should do), optimization (improving the performance of a program as indicated by some metric; typically execution speed) and code generation (generation and output of an equivalent program in some target language; often the instruction set architecture of a central processing unit (CPU)).

    Run-time systems

    Run-time systems refer to the development of programming language runtime environments and their components, including virtual machines, garbage collection, and foreign function interfaces.

    ALGOL-like Languages
  • Pierce, Benjamin C. (2002). Types and Programming Languages. MIT Press.
  • Pierce, Benjamin C. Advanced Topics in Types and Programming Languages.
  • Pierce, Benjamin C.; et al. (2010). Software Foundations. Archived from the original on October 28, 2009.
  • Go deeper: linked from this article

    • Linked from the introduction

      Lambda calculus

      Mathematical-logic system

      In mathematical logic, the lambda calculus (also written as λ-calculus) is a formal system for expressing computation based on function abstraction and application using variable binding and substitution.

      28 min readGo deeper
    • Linked from the introduction

      Scheme (programming language)

      Dialect of Lisp

      Scheme is a dialect of the Lisp family of programming languages.

      27 min readGo deeper
    • Linked from the introduction

      Programming language

      Language for controlling a computer

      A programming language is a formal language designed to express computations, typically supporting the specification of software both for humans and for computers.

      24 min readGo deeper
    • Linked from the introduction

      Linguistics

      Scientific study of language

      Linguistics is the scientific study of language.

      25 min readGo deeper
    • Linked from the introduction

      Software engineering

      Engineering approach to software development

      Software engineering is a branch of both computer science and engineering focused on designing, developing, testing, and maintaining software applications.

      22 min readGo deeper
    • Linked from the introduction

      Formal language

      Sequence of words formed by specific rules

      In logic, mathematics, computer science, and linguistics, a formal language is a set of strings whose symbols are taken from a set called "alphabet".

      11 min readGo deeper
    • Linked from the introduction

      Model of computation

      Mathematical model describing how an output of a function is computed given an input

      In computer science, and more specifically in computability theory and computational complexity theory, a model of computation is a model that describes how an output of a mathematical function is computed given an input.

      1 min readGo deeper
    • Linked from the introduction

      Greek alphabet

      Script used to write the Greek language

      The Greek alphabet has been used to write the Greek language since the late 9th or early 8th century BC.

      44 min readGo deeper
    • Linked from the introduction · Recommended 1 time

      Lambda

      Eleventh letter in the Greek alphabet

      Lambda (uppercase Λ, lowercase λ; Greek: λάμ(β)δα, lám(b)da; Ancient Greek: λά(μ)βδα, lá(m)bda), sometimes rendered lamda, labda or lamma, is the eleventh letter of the Greek alphabet, representing…

      10 min readGo deeper
    • Linked from the introduction

      Alonzo Church

      American mathematician and computer scientist (1903–1995)

      Alonzo Church (June 14, 1903 – August 11, 1995) was an American computer scientist, mathematician, logician, and philosopher who made major contributions to mathematical logic and the foundations of theoretical computer science.

      9 min readGo deeper

    Also read: what people and readers pair with this article

    • Where Wikipedia readers go next

      Computer science

      Study of computation

      Computer science is the study of computation, information, and automation, together with their associated phenomena.

      27 min readGo deeper

    Adjacent: shared categories and similar text

    • Linked in “History”

      Denotational semantics

      Study of programming languages via mathematical objects

      In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing…

      12 min readGo deeper
    • Linked in “History”

      Axiomatic semantics

      Logic for proving computer program correctness

      Axiomatic semantics is an approach based on mathematical logic for proving the correctness of computer programs. It is closely related to Hoare logic.

      1 min readGo deeper
    • Linked in “History”

      Massachusetts Institute of Technology

      Private research university in Cambridge, Massachusetts, United States

      The Massachusetts Institute of Technology (MIT) is a private research university in Cambridge, Massachusetts, United States.

      77 min readGo deeper