Teoria da linguagem de programação - Programming language theory

A letra grega minúscula λ ( lambda ) é um símbolo não oficial do campo da teoria da linguagem de programação. Esse uso deriva do cálculo lambda , um modelo de computação introduzido por Alonzo Church na década de 1930 e amplamente usado por pesquisadores de linguagens de programação. Ele estampa a capa do clássico texto Structure and Interpretation of Computer Programs , e o título dos chamados Lambda Papers de 1975 a 1980, escritos por Gerald Jay Sussman e Guy Steele , os desenvolvedores da linguagem de programação Scheme .

A teoria da linguagem de programação ( PLT ) é um ramo da ciência da computação que lida com o projeto, implementação, análise, caracterização e classificação de linguagens formais conhecidas como linguagens de programação e de seus recursos individuais . Ela se enquadra na disciplina de ciência da computação, dependendo e afetando matemática , engenharia de software , lingüística e até mesmo ciências cognitivas . Tornou-se um ramo bem conhecido da ciência da computação e uma área de pesquisa ativa, com resultados publicados em inúmeras revistas dedicadas à PLT, bem como em publicações de ciência da computação e engenharia em geral.

História

De certa forma, a história da teoria da linguagem de programação antecede até mesmo o desenvolvimento das próprias linguagens de programação. O cálculo lambda , desenvolvido por Alonzo Church e Stephen Cole Kleene na década de 1930, é considerado por alguns como a primeira linguagem de programação do mundo, embora tivesse a intenção de modelar computação em vez de ser um meio para os programadores descreverem algoritmos para um sistema de computador . Muitas linguagens de programação funcional modernas foram descritas como fornecendo um "verniz fino" sobre o cálculo lambda, e muitas são facilmente descritas em termos dele.

A primeira linguagem de programação a ser inventada foi Plankalkül , projetada por Konrad Zuse na década de 1940, mas não conhecida publicamente até 1972 (e não implementada até 1998). A primeira linguagem de programação de alto nível amplamente conhecida e bem - sucedida foi a Fortran , desenvolvida de 1954 a 1957 por uma equipe de pesquisadores da IBM liderada por John Backus . O sucesso do FORTRAN levou à formação de um comitê de cientistas para desenvolver uma linguagem de computador "universal"; o resultado de seu esforço foi ALGOL 58 . Separadamente, John McCarthy, do MIT, desenvolveu o Lisp , a primeira linguagem com origem na academia a ter sucesso. Com o sucesso desses esforços iniciais, as linguagens de programação se tornaram um tópico ativo de pesquisa na década de 1960 e além.

Alguns outros eventos importantes na história da teoria da linguagem de programação desde então:

Década de 1950

  • Noam Chomsky desenvolveu a hierarquia de Chomsky no campo da linguística, uma descoberta que impactou diretamente a teoria da linguagem de programação e outros ramos da ciência da computação.

Década de 1960

Década de 1970

Década de 1980

Década de 1990

Subdisciplinas e campos relacionados

Existem vários campos de estudo que estão dentro da teoria da linguagem de programação, ou que têm uma profunda influência sobre ela; muitos deles têm uma sobreposição considerável. Além disso, o PLT faz uso de muitos outros ramos da matemática , incluindo a teoria da computabilidade , a teoria das categorias e a teoria dos conjuntos .

Semântica formal

A semântica formal é a especificação formal do comportamento de programas de computador e linguagens de programação. Três abordagens comuns para descrever a semântica ou "significado" de um programa de computador são semântica denotacional , semântica operacional e semântica axiomática .

Teoria de tipo

A teoria dos tipos é o estudo dos sistemas de tipos ; que são "um método sintático tratável para provar a ausência de certos comportamentos de programa, classificando frases de acordo com os tipos de valores que elas calculam". Muitas linguagens de programação são diferenciadas pelas características de seus sistemas de tipos.

Análise e transformação do programa

A análise do programa é o problema geral de examinar um programa e determinar as características principais (como a ausência de classes de erros de programa ). A transformação do programa é o processo de transformar um programa de uma forma (linguagem) para outra.

Análise comparativa de linguagem de programação

A análise comparativa de linguagens de programação busca classificar as linguagens de programação em diferentes tipos com base em suas características; categorias amplas de linguagens de programação são freqüentemente conhecidas como paradigmas de programação .

Genérico e metaprogramação

Metaprogramação é a geração de programas de ordem superior que, quando executados, produzem programas (possivelmente em um idioma diferente ou em um subconjunto do idioma original) como resultado.

Linguagens específicas de domínio

Linguagens específicas de domínio são linguagens construídas para resolver com eficiência problemas de uma parte específica do domínio.

Construção do compilador

A teoria do compilador é a teoria de escrever compiladores (ou, mais geralmente, tradutores ); programas que traduzem um programa escrito em um idioma para outro formato. As ações de um compilador são tradicionalmente divididas em análise de sintaxe ( varredura e análise ), análise semântica (determinando o que um programa deve fazer), otimização (melhorando o desempenho de um programa conforme indicado por alguma métrica; normalmente velocidade de execução) e geração de código (geração e saída de um programa equivalente em algum idioma de destino; geralmente o conjunto de instruções de uma CPU).

Sistemas de tempo de execução

Os sistemas de tempo de execução referem-se ao desenvolvimento de ambientes de tempo de execução de linguagem de programação e seus componentes, incluindo máquinas virtuais , coleta de lixo e interfaces de função externa .

Revistas, publicações e conferências

As conferências são o principal local para apresentar pesquisas em linguagens de programação. As conferências mais conhecidos incluem o Simpósio sobre Princípios de Linguagens de Programação (popl), Programação Design Língua e Implementação (PLDI), a Conferência Internacional sobre a programação funcional (ICFP), a Conferência Internacional sobre Programação Orientada a Objetos, Sistemas, Linguagens e Aplicações ( OOPSLA) e a Conferência Internacional sobre Suporte Arquitetônico para Linguagens de Programação e Sistemas Operacionais (ASPLOS) .

Periódicos notáveis ​​que publicam pesquisas PLT incluem o ACM Transactions on Programming Languages ​​and Systems (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming e Higher-Order and Symbolic Computation .

Veja também

Referências

Leitura adicional

links externos