Programming language theory
Encyclopedia
Programming language theory (PLT) is a branch of computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

 that deals with the design, implementation, analysis, characterization, and classification of programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

s and their individual features. It falls within the discipline of computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

, both depending on and affecting mathematics
Mathematics
Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...

, software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 and linguistics
Linguistics
Linguistics is the scientific study of human language. Linguistics can be broadly broken into three categories or subfields of study: language form, language meaning, and language in context....

. It is a well-recognized branch of computer science, and an active research area, with results published in numerous journals
Academic journal
An academic journal is a peer-reviewed periodical in which scholarship relating to a particular academic discipline is published. Academic journals serve as forums for the introduction and presentation for scrutiny of new research, and the critique of existing research...

 dedicated to PLT, as well as in general computer science and engineering publications.

History

In some ways, the history of programming language theory predates even the development of programming languages themselves. The lambda calculus
Lambda calculus
In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus...

, developed by Alonzo Church
Alonzo Church
Alonzo Church was an American mathematician and logician who made major contributions to mathematical logic and the foundations of theoretical computer science. He is best known for the lambda calculus, Church–Turing thesis, Frege–Church ontology, and the Church–Rosser theorem.-Life:Alonzo Church...

 and Stephen Cole Kleene
Stephen Cole Kleene
Stephen Cole Kleene was an American mathematician who helped lay the foundations for theoretical computer science...

 in the 1930s, is considered by some to be the world's first programming language, even though it was intended to model
Model of computation
In computability theory and computational complexity theory, a model of computation is the definition of the set of allowable operations used in computation and their respective costs...

 computation rather than being a means for programmers to describe
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

 algorithms to a computer system. Many modern functional programming languages have been described as providing a "thin veneer" over the lambda calculus, and many are easily described in terms of it.

The first programming language to be proposed was Plankalkül
Plankalkül
Plankalkül is a computer language designed for engineering purposes by Konrad Zuse between 1943 and 1945. It was the first high-level non-von Neumann programming language to be designed for a computer. Also, notes survive with scribblings about such a plan calculation dating back to 1941...

, which was designed by Konrad Zuse
Konrad Zuse
Konrad Zuse was a German civil engineer and computer pioneer. His greatest achievement was the world's first functional program-controlled Turing-complete computer, the Z3, which became operational in May 1941....

 in the 1940s, but not publicly known until 1972 (and not implemented until 1998). The first widely known and successful programming language was Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

, developed from 1954 to 1957 by a team of IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...

 researchers led by John Backus
John Backus
John Warner Backus was an American computer scientist. He directed the team that invented the first widely used high-level programming language and was the inventor of the Backus-Naur form , the almost universally used notation to define formal language syntax.He also did research in...

. 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
ALGOL 58
ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60...

. Separately, John McCarthy
John McCarthy (computer scientist)
John McCarthy was an American computer scientist and cognitive scientist. He coined the term "artificial intelligence" , invented the Lisp programming language and was highly influential in the early development of AI.McCarthy also influenced other areas of computing such as time sharing systems...

 of MIT developed the Lisp programming language
Lisp programming language
Lisp is a family of computer programming languages with a long history and a distinctive, fully parenthesized syntax. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older...

 (based on the lambda calculus), 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:
  • In the 1950s, Noam Chomsky
    Noam Chomsky
    Avram Noam Chomsky is an American linguist, philosopher, cognitive scientist, and activist. He is an Institute Professor and Professor in the Department of Linguistics & Philosophy at MIT, where he has worked for over 50 years. Chomsky has been described as the "father of modern linguistics" and...

     developed the Chomsky hierarchy
    Chomsky hierarchy
    Within the field of computer science, specifically in the area of formal languages, the Chomsky hierarchy is a containment hierarchy of classes of formal grammars....

     in the field of linguistics
    Linguistics
    Linguistics is the scientific study of human language. Linguistics can be broadly broken into three categories or subfields of study: language form, language meaning, and language in context....

    ; a discovery which has directly impacted programming language theory and other branches of computer science.
  • In the 1960s
    • The Simula
      Simula
      Simula is a name for two programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard...

       language was developed by Ole-Johan Dahl
      Ole-Johan Dahl
      Ole-Johan Dahl was a Norwegian computer scientist and is considered to be one of the fathers of Simula and object-oriented programming along with Kristen Nygaard.- Career :...

       and Kristen Nygaard
      Kristen Nygaard
      Kristen Nygaard was a Norwegian computer scientist, programming language pioneer and politician. He was born in Oslo and died of a heart attack in 2002.-Object-oriented programming:...

      ; it is widely considered to be the first example of an object-oriented programming language
      Object-oriented programming language
      This is a list of object-oriented programming programming languages.-Languages with object-oriented features:*ABAP*Ada 95*AmigaE*BETA*Blue*Boo*C++*C#*COBOL*Cobra*ColdFusion*Common Lisp*COOL*CorbaScript*Clarion*CLU*Curl*D*Dylan*E*Eiffel...

      ; Simula also introduced the concept of coroutine
      Coroutine
      Coroutines are computer program components that generalize subroutines to allow multiple entry points for suspending and resuming execution at certain locations...

      s.
    • In 1964, Peter Landin is the first to realize Church
      Alonzo Church
      Alonzo Church was an American mathematician and logician who made major contributions to mathematical logic and the foundations of theoretical computer science. He is best known for the lambda calculus, Church–Turing thesis, Frege–Church ontology, and the Church–Rosser theorem.-Life:Alonzo Church...

      's lambda calculus
      Lambda calculus
      In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus...

       can be used to model programming languages. He introduces the SECD machine
      SECD machine
      The SECD machine is a highly influential virtual machine and abstract machine intended as a target for functional programming language compilers. The letters stand for Stack, Environment, Code, Dump, the internal registers of the machine...

       which "interprets" lambda expressions.
    • In 1965, Landin introduces the J operator, essentially a form of continuation
      Continuation
      In computer science and programming, a continuation is an abstract representation of the control state of a computer program. A continuation reifies the program control state, i.e...

      .
    • In 1966, Landin introduces ISWIM
      ISWIM
      ISWIM is an abstract computer programming language devised by Peter J. Landin and first described in his article, The Next 700 Programming Languages, published in the Communications of the ACM in 1966...

      , an abstract computer programming language
      Programming language
      A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

       in his article The Next 700 Programming Languages. It is influential in the design of languages leading to the Haskell
      Haskell (programming language)
      Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

       programming language.
    • In 1967, Christopher Strachey
      Christopher Strachey
      Christopher Strachey was a British computer scientist. He was one of the founders of denotational semantics, and a pioneer in programming language design...

       publishes his influential set of lecture notes Fundamental Concepts in Programming Languages
      Fundamental Concepts in Programming Languages
      Fundamental Concepts in Programming Languages were an influential set of lecture notes written by Christopher Strachey for the International Summer School in Computer Programming at Copenhagen in August, 1967. It introduced much programming language terminology still in use today, including...

      , introducing the terminology R-value
      R-value
      R-value can refer to:* Properties of materials:**R-value , the efficiency of insulation of a house**R-value , stability of soils and aggregates for pavement construction...

      s
      , L-value
      L-value
      L-value or L value may refer to:* A value that has an address* The value assigned to an L-shell, a particular set of planetary magnetic field lines* A measure of brightness of a lunar eclipse on the Danjon scale...

      s
      , parametric polymorphism
      Parametric polymorphism
      In programming languages and type theory, parametric polymorphism is a way to make a language more expressive, while still maintaining full static type-safety. Using parametric polymorphism, a function or a data type can be written generically so that it can handle values identically without...

      , and ad hoc polymorphism.
    • In 1969, Tony Hoare introduces the Hoare logic
      Hoare logic
      Hoare logic is a formal system with a set of logical rules for reasoning rigorously about the correctness of computer programs. It was proposed in 1969 by the British computer scientist and logician C. A. R. Hoare, and subsequently refined by Hoare and other researchers...

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

      .
    • In 1969, William Alvin Howard
      William Alvin Howard
      William Alvin Howard is a proof theorist best known for his work demonstrating formal similarity between intuitionistic logic and the simply typed lambda calculus that has come to be known as the Curry–Howard correspondence. He has also been active in the theory of proof-theoretic ordinals. He...

       observed that a "high-level" proof system
      Proof calculus
      In mathematical logic, a proof calculus corresponds to a family of formal systems that use a common style of formal inference for its inference rules...

      , referred to as natural deduction
      Natural deduction
      In logic and proof theory, natural deduction is a kind of proof calculus in which logical reasoning is expressed by inference rules closely related to the "natural" way of reasoning...

      , can be directly interpreted in its intuitionistic version as a typed variant of the model of computation
      Model of computation
      In computability theory and computational complexity theory, a model of computation is the definition of the set of allowable operations used in computation and their respective costs...

       known as lambda calculus
      Lambda calculus
      In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus...

      . This became known as the Curry–Howard correspondence.
  • In the 1970s:
    • In 1970, Dana Scott
      Dana Scott
      Dana Stewart Scott is the emeritus Hillman University Professor of Computer Science, Philosophy, and Mathematical Logic at Carnegie Mellon University; he is now retired and lives in Berkeley, California...

       first publishes his work on denotational semantics
      Denotational semantics
      In computer science, denotational semantics is an approach to formalizing the meanings of programming languages by constructing mathematical objects which describe the meanings of expressions from the languages...

      .
    • In 1972, Logic programming
      Logic programming
      Logic programming is, in its broadest sense, the use of mathematical logic for computer programming. In this view of logic programming, which can be traced at least as far back as John McCarthy's [1958] advice-taker proposal, logic is used as a purely declarative representation language, and a...

       and Prolog
      Prolog
      Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of...

       were developed thus allowing computer programs to be expressed as mathematical logic.
    • In 1974, John C. Reynolds
      John C. Reynolds
      John C. Reynolds is an American computer scientist.John Reynolds studied at Purdue University and then earned a PhD in theoretical physics from Harvard University in 1961. He was Professor of Information science at Syracuse University from 1970 to 1986. Since then he has been Professor of Computer...

       discovers System F
      System F
      System F, also known as the polymorphic lambda calculus or the second-order lambda calculus, is a typed lambda calculus that differs from the simply typed lambda calculus by the introduction of a mechanism of universal quantification over types...

      . It had already been discovered in 1971 by the mathematical logician Jean-Yves Girard
      Jean-Yves Girard
      Jean-Yves Girard is a French logician working in proof theory. His contributions include a proof of strong normalization in a system of second-order logic called system F; the invention of linear logic; the geometry of interaction; and ludics...

      .
    • From 1975, Sussman and Steele develop the Scheme programming language, a Lisp dialect incorporating lexical scoping, a unified namespace, and elements from the Actor model
      Actor model
      In computer science, the Actor model is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and...

       including first-class continuation
      Continuation
      In computer science and programming, a continuation is an abstract representation of the control state of a computer program. A continuation reifies the program control state, i.e...

      s.
    • Backus, at the 1977 ACM Turing Award lecture, assailed the current state of industrial languages and proposed a new class of programming languages now known as function-level programming
      Function-level programming
      In computer science, function-level programming refers to one of the two contrasting programming paradigms identified by John Backus in his work on programs as mathematical objects, the other being value-level programming....

       languages.
    • In 1977, Gordon Plotkin
      Gordon Plotkin
      Gordon D. Plotkin, FRS, FRSE is a Scottish computer scientist.Gordon Plotkin is best-known for his introduction of structural operational semantics and his work on denotational semantics. In particular, his notes on A Structural Approach to Operational Semantics of 1981 were very influential...

       introduces Programming Computable Functions, an abstract typed functional language.
    • In 1978, Robin Milner
      Robin Milner
      Arthur John Robin Gorell Milner FRS FRSE was a prominent British computer scientist.-Life, education and career:...

       introduces the Hindley–Milner type inference algorithm for the ML programming language
      ML programming language
      ML is a general-purpose functional programming language developed by Robin Milner and others in the early 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM...

      . Type theory
      Type theory
      In mathematics, logic and computer science, type theory is any of several formal systems that can serve as alternatives to naive set theory, or the study of such formalisms in general...

       became applied as a discipline to programming languages, this application has led to tremendous advances in type theory over the years.
  • In the 1980s:
    • A team of scientists at Xerox PARC
      Xerox PARC
      PARC , formerly Xerox PARC, is a research and co-development company in Palo Alto, California, with a distinguished reputation for its contributions to information technology and hardware systems....

       led by Alan Kay
      Alan Kay
      Alan Curtis Kay is an American computer scientist, known for his early pioneering work on object-oriented programming and windowing graphical user interface design, and for coining the phrase, "The best way to predict the future is to invent it."He is the president of the Viewpoints Research...

       develop Smalltalk
      Smalltalk
      Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...

      , an object-oriented language widely known for its innovative development environment.
    • There emerged process calculi
      Process calculus
      In computer science, the process calculi are a diverse family of related approaches for formally modelling concurrent systems. Process calculi provide a tool for the high-level description of interactions, communications, and synchronizations between a collection of independent agents or processes...

      , such as the Calculus of Communicating Systems
      Calculus of Communicating Systems
      The Calculus of Communicating Systems is a process calculus introduced by Robin Milner around 1980 and the title of a book describing the calculus. Its actions model indivisible communications between exactly two participants. The formal language includes primitives for describing parallel...

       of Robin Milner
      Robin Milner
      Arthur John Robin Gorell Milner FRS FRSE was a prominent British computer scientist.-Life, education and career:...

      , and the Communicating sequential processes
      Communicating sequential processes
      In computer science, Communicating Sequential Processes is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi...

       model of C. A. R. Hoare
      C. A. R. Hoare
      Sir Charles Antony Richard Hoare , commonly known as Tony Hoare or C. A. R. Hoare, is a British computer scientist best known for the development of Quicksort, one of the world's most widely used sorting algorithms...

      , as well as similar models of concurrency such as the Actor model
      Actor model
      In computer science, the Actor model is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and...

       of Carl Hewitt
      Carl Hewitt
      Carl Hewitt is Board Chair of the International Society for Inconsistency Robustness. He has been a Visiting Professor at Stanford University and the University of Keio. In 2000, he became emeritus in the EECS department at MIT....

      .
    • In 1985, The release of Miranda sparks an academic interest in lazy-evaluated pure 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
      Bertrand Meyer
      Bertrand Meyer is an academic, author, and consultant in the field of computer languages. He created the Eiffel programming language.-Education and academic career:...

       created the methodology Design by contract
      Design by contract
      Design by contract , also known as programming by contract and design-by-contract programming, is an approach to designing computer software...

       and incorporated it into the Eiffel programming language
      Eiffel (programming language)
      Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...

      .
  • In the 1990s:
    • Gregor Kiczales
      Gregor Kiczales
      Gregor Kiczales is a professor of computer science at the University of British Columbia in Canada. His best known work is on Aspect-oriented programming and the AspectJ extension for Java at Xerox PARC. He has also contributed to the design of the Common Lisp Object System, and is the author of...

      , Jim Des Rivieres and Daniel G. Bobrow
      Daniel G. Bobrow
      Daniel Gureasko Bobrow is a Research Fellow in the Intelligent Systems Laboratory of the Palo Alto Research Center, and is amongst other things known for creating an oft-cited artificial intelligence program STUDENT, with which he earned his PhD....

       published the book The Art of the Metaobject Protocol
      The Art of the Metaobject Protocol
      The Art of the Metaobject Protocol is a 1991 book by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow on metaobject protocol...

      .
    • Eugenio Moggi
      Eugenio Moggi
      Eugenio Moggi is a professor of computer science at the University of Genoa, Italy.He first described the general use of monads to structure programs.- Biography :Academic qualifications:* Ph.D...

       and Philip Wadler
      Philip Wadler
      Philip Wadler is a computer scientist known for his contributions to programming language design and type theory. In particular, he has contributed to the theory behind functional programming and the use of monads in functional programming, the design of the purely functional language Haskell, and...

       introduced the use of monads
      Monads in functional programming
      In functional programming, a monad is a programming structure that represents computations. Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model...

       for structuring programs written in functional programming languages.

Sub-disciplines and related fields

There are several fields of study which 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
Mathematics
Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...

, including computability theory
Computability theory
Computability theory, also called recursion theory, is a branch of mathematical logic that originated in the 1930s with the study of computable functions and Turing degrees. The field has grown to include the study of generalized computability and definability...

, category theory
Category theory
Category theory is an area of study in mathematics that examines in an abstract way the properties of particular mathematical concepts, by formalising them as collections of objects and arrows , where these collections satisfy certain basic conditions...

, and set theory
Set theory
Set theory is the branch of mathematics that studies sets, which are collections of objects. Although any type of object can be collected into a set, set theory is applied most often to objects that are relevant to mathematics...

.

Formal semantics

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
Denotational semantics
In computer science, denotational semantics is an approach to formalizing the meanings of programming languages by constructing mathematical objects which describe the meanings of expressions from the languages...

, operational semantics
Operational semantics
In computer science, operational semantics is a way to give meaning to computer programs in a mathematically rigorous way. Operational semantics are classified into two categories: structural operational semantics formally describe how the individual steps of a computation take place in a...

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

.

Type theory

Type theory is the study of type system
Type system
A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...

s; which are "tractable syntactic method(s) for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute." (Types and Programming Languages, MIT Press, 2002). Many programming languages are distinguished by the characteristics of their type systems.

Program analysis and transformation

Program analysis is the general problem of examining a program and determining key characteristics (such as the absence of classes of program errors
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...

). 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 programming languages into different types based on their characteristics; broad categories of programming languages are often known as programming paradigm
Programming paradigm
A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a...

s.

Generic and metaprogramming

Metaprogramming
Metaprogramming
Metaprogramming is the writing of computer programs that write or manipulate other programs as their data, or that do part of the work at compile time that would otherwise be done at runtime...

 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 languages constructed to efficiently solve problems in a particular problem domain.

Compiler construction

Compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 theory is the theory of writing compilers (or more generally, translators); programs which translate a program written in one language into another form. The actions of a compiler are traditionally broken up into syntax analysis (scan
Scan
Scan may refer to:Acronyms:*Schedules for Clinical Assessment in Neuropsychiatry , a psychiatric diagnostic tool developed by WHO*Shared Check Authorization Network , a database of bad check writers and collection agency for bad checks...

ning and parsing
Parsing
In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...

), semantic analysis (determining what a program should do), optimization
Compiler optimization
Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...

(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
Instruction set
An instruction set, or instruction set architecture , is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O...

 of a CPU).

Run-time systems

Runtime systems
Run-time system
A run-time system is a software component designed to support the execution of computer programs written in some computer language...

 refers to the development of programming language runtime environments and their components, including virtual machine
Virtual machine
A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...

s, garbage collection
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...

, and foreign function interface
Foreign function interface
A foreign function interface is a mechanism by which a program written in one programming language can call routines or make use of services written in another. The term comes from the specification for Common Lisp, which explicitly refers to the language features for inter-language calls as...

s.

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), Conference on Programming Language Design and Implementation (PLDI), the International Conference on Functional Programming
International Conference on Functional Programming
The International Conference on Functional Programming is an annual academic conference in the field of computer science sponsored by the ACM SIGPLAN, in association with IFIP Working Group 2.8 ....

 (ICFP), and the International Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA
OOPSLA
OOPSLA is an annual ACM research conference. OOPSLA mainly takes place in the United States, while the sister conference of OOPSLA, ECOOP, is typically held in Europe...

).

Notable journals that publish PLT research include the ACM Transactions on Programming Languages and Systems
ACM Transactions on Programming Languages and Systems
The ACM Transactions on Programming Languages and Systems is a bimonthly peer-reviewed scientific journal on programming languages published by the Association for Computing Machinery since 1979. The current editor-in-chief is Jens Palsberg...

(TOPLAS), Journal of Functional Programming
Journal of Functional Programming
The Journal of Functional Programming is a peer-reviewed scientific journal covering the design, implementation, and application of functional programming languages, spanning the range from mathematical theory to industrial practice...

, Journal of Functional and Logic Programming, and Higher-Order and Symbolic Computation
Higher-Order and Symbolic Computation
Higher-Order and Symbol Computation is a computer science journal published by Springer Science+Business Media. It focusses on programming concepts and abstractions and programming language theory.- Editors :Former editors-in-chief of the journal have been:* Richard P...

.

The Lambda Symbol

An unofficial symbol of the field of programming language theory is the lowercase Greek
Greek alphabet
The Greek alphabet is the script that has been used to write the Greek language since at least 730 BC . The alphabet in its classical and modern form consists of 24 letters ordered in sequence from alpha to omega...

 letter λ (lambda
Lambda
Lambda is the 11th letter of the Greek alphabet. In the system of Greek numerals lambda has a value of 30. Lambda is related to the Phoenician letter Lamed . Letters in other alphabets that stemmed from lambda include the Roman L and the Cyrillic letter El...

). This usage derives from the lambda calculus
Lambda calculus
In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus...

, a computational model
Computational model
A computational model is a mathematical model in computational science that requires extensive computational resources to study the behavior of a complex system by computer simulation. The system under study is often a complex nonlinear system for which simple, intuitive analytical solutions are...

 widely used by programming language researchers. Many texts and papers on programming and programming languages utilize the lambda in some fashion. It graces the cover of the classic text Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs is a textbook published in 1984 about general computer programming concepts from MIT Press written by Massachusetts Institute of Technology professors Harold Abelson and Gerald Jay Sussman, with Julie Sussman...

, and the title of many of the so-called Lambda Papers, written by Gerald Jay Sussman
Gerald Jay Sussman
Gerald Jay Sussman is the Panasonic Professor of Electrical Engineering at the Massachusetts Institute of Technology . He received his S.B. and Ph.D. degrees in mathematics from MIT in 1968 and 1973 respectively. He has been involved in artificial intelligence research at MIT since 1964...

 and Guy Steele, the developers of the Scheme programming language. A popular website on programming language theory is called Lambda the Ultimate, in honor of Sussman and Steele's work.

See also

  • SIGPLAN
    SIGPLAN
    SIGPLAN is the Association for Computing Machinery's Special Interest Group on programming languages.- Conferences :* Principles of Programming Languages * Programming Language Design and Implementation...

  • Timeline of programming languages
    Timeline of programming languages
    This is a timeline of historically important programming languages.Legend-Pre-1950:-1950s:-1960s:-1970s:-1980s:-1990s:-2000s:- 2010s :-See also:* Programming language* Timeline of computing...

  • Very high-level programming language
    Very high-level programming language
    A very high-level programming language is a programming language with a very high level of abstraction, used primarily as a professional programmer productivity tool....


Further reading

  • Abadi, Martín
    Martín Abadi
    Martín Abadi is an argentinian computer scientist, currently working at the University of California, Santa Cruz and Microsoft Research. He earned his Ph.D...

     and Cardelli, Luca
    Luca Cardelli
    Luca Cardelli is an Italian computer scientist who is currently an Assistant Director at Microsoft Research in Cambridge, UK. Cardelli is well-known for his research in type theory and operational semantics. Among other contributions he implemented the first compiler for the functional programming...

    . A Theory of Objects. Springer-Verlag.
  • Michael J. C. Gordon
    Michael J. C. Gordon
    Michael John Caldwell Gordon, British computer scientist .Mike Gordon led the development of the HOL theorem prover. The HOL system is an environment for interactive theorem proving in a higher-order logic. Its most outstanding feature is its high degree of programmability through the meta-language...

    . Programming Language Theory and Its Implementation. Prentice Hall.
  • Gunter, Carl and Mitchell, John C.
    John C. Mitchell
    John Clifford Mitchell is professor of computer science and electrical engineering at Stanford University. He has published in the area of programming language theory and computer security....

     (eds.). Theoretical Aspects of Object Oriented Programming Languages: Types, Semantics, and Language Design. MIT Press.
  • Harper, Robert
    Robert Harper (computer scientist)
    Robert "Bob" William Harper, Jr. is a computer science professor at Carnegie Mellon University who works in programming language research. He made major contributions to the design of the Standard ML programming language and the LF logical framework....

    . Practical Foundations for Programming Languages. Draft version.
  • Knuth, Donald E.
    Donald Knuth
    Donald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...

     (2003). Selected Papers on Computer Languages. Stanford, California: Center for the Study of Language and Information.
  • Mitchell, John C.
    John C. Mitchell
    John Clifford Mitchell is professor of computer science and electrical engineering at Stanford University. He has published in the area of programming language theory and computer security....

    . Foundations for Programming Languages.
  • Mitchell, John C.
    John C. Mitchell
    John Clifford Mitchell is professor of computer science and electrical engineering at Stanford University. He has published in the area of programming language theory and computer security....

    . Introduction to Programming Language Theory.
  • O'Hearn, Peter. W. and Tennent, Robert. D. (1997). Algol-like Languages. Progress in Theoretical Computer Science. Birkhauser, Boston.
  • Pierce, Benjamin C.
    Benjamin C. Pierce
    Benjamin Crawford Pierce is an American professor of computer science at the University of Pennsylvania. Pierce joined Penn in 1998 from Indiana University and held research positions at the University of Cambridge and the University of Edinburgh. He received his Ph.D. from Carnegie Mellon...

     (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.

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
    Benjamin C. Pierce
    Benjamin Crawford Pierce is an American professor of computer science at the University of Pennsylvania. Pierce joined Penn in 1998 from Indiana University and held research positions at the University of Cambridge and the University of Edinburgh. He received his Ph.D. from Carnegie Mellon...

    .
  • Programming Language Research. Directory by Mark Leone.
  • Programming Language Theory Texts Online. At Utrecht University
    Utrecht University
    Utrecht University is a university in Utrecht, Netherlands. It is one of the oldest universities in the Netherlands and one of the largest in Europe. Established March 26, 1636, it had an enrollment of 29,082 students in 2008, and employed 8,614 faculty and staff, 570 of which are full professors....

    .
  • Grand Challenges in Programming Languages. Panel session at POPL
    POPL
    The annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages is an academic conference in the field of computer science, with focus on fundamental principles in the design, definition, analysis, and implementation of programming languages, programming systems, and programming...

    2009.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK