Teoria da linguagem de programação

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar
A letra grega minúscula λ ( lambda ) é um símbolo não oficial do campo da teoria da linguagem de programação. [ citação necessário ] Este uso deriva do cálculo lambda , um modelo de computação introduzido por Alonzo Church na década de 1930 e amplamente utilizado por pesquisadores de linguagem de programação. Ela enfeita a capa [ carece de fontes ] do texto clássico 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 . [ jargão ]

A teoria das linguagens de programação ( PLT ) é um ramo da ciência da computação que trata do 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 , linguística e até mesmo ciência cognitiva . Tornou-se um ramo bem reconhecido da ciência da computação e uma área de pesquisa ativa, com resultados publicados em vários periódicosdedicado ao 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 das linguagens 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 tenha a intenção de modelar a computação em vez de ser um meio para os programadores descreverem algoritmos para um sistema de computador . Muitas linguagens de programação funcionais modernas têm sido descritas como fornecendo um "revestimento fino" sobre o cálculo lambda, [1] e muitas são facilmente descritas em termos dele.

A primeira linguagem de programação a ser inventada foi Plankalkül , que foi 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 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 língua com origens na academia a ser bem sucedida. 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

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 destes têm 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

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 dos tipos

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 do programa classificando frases de acordo com os tipos de valores que elas computam". [3] Muitas linguagens de programação se distinguem pelas características de seus sistemas de tipos.

Análise e transformação de programas

A análise de programa é o problema geral de examinar um programa e determinar características-chave (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 forma.

Análise comparativa de linguagens de programação

A análise comparativa de linguagens de programação busca classificar linguagens de programação em diferentes tipos com base em suas características; amplas categorias de linguagens de programação são frequentemente 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 uma linguagem diferente ou em um subconjunto da linguagem original) como resultado.

Idiomas específicos do domínio

As linguagens específicas de domínio são linguagens construídas para resolver de forma eficiente os 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 uma linguagem para outra forma. As ações de um compilador são tradicionalmente divididas em análise de sintaxe ( varredura e análise sintática ), 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 alguma linguagem 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 estrangeira .

Revistas, publicações e conferências

As conferências são o principal local para apresentação de pesquisas em linguagens de programação. As conferências mais conhecidas incluem o Symposium on Principles of Programming Languages (POPL), Programming Language Design and Implementation (PLDI), a International Conference on Functional Programming (ICFP), a International Conference on Object Oriented Programming, Systems, Languages ​​and Applications ( 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 sobre 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

  1. ^ http://www.c2.com/cgi/wiki?ModelsOfComputation
  2. ^ C. Böhm e W. Gross (1996). Introdução ao CUCH. Em ER Caianiello (ed.), Automata Theory , p. 35-64/
  3. ^ Benjamin C. Pierce. 2002. Tipos e Linguagens de Programação . MIT Press, Cambridge, Massachusetts, EUA.

Leitura adicional

Links externos