Linguagem de programação concatenativa

Linguagem de programação concatenativa é uma linguagem de programação na qual todas as construções válidas, ou termos, correspondem a uma função e a sobreposição de termos denota composição de função.[1] A combinação de uma semântica de composição com uma sintaxe que a reflete faz as linguagens concatenativas bastante adequadas para manipulação algébrica e análise formal, defendem alguns pesquisadores.[2]

Muito da pesquisa original sobre a teoria das linguagens concatenativas foi feito por Manfred von Thun.

Propriedades

As propriedades das linguagens concatenativas são o resultado de sua sintaxe e semântica composicional:

  • Linguagens concatenativas são necessaramente livre de pontos, posto que permitir aos termos denotar variáveis violaria a regra de que todos os termos denotam funções.
  • A redução de qualquer expressão é a simplificação de uma função para outra; nunca é necessário lidar com a aplicação de funções a objetos.[3]*
  • Qualquer subexpressão pode ser substituída com um nome que a represente. A comunidade concatenativa chama isso de fatoração; isto é largamente usado para simplificar programas em partes menores.
  • A sintaxe e a semântica das lingaugens concatenativas formam um monoide.[4]
  • Linguagens concatenativas podem ser adequadas para uma implementação de "lógica linear", o que significa que nenhum lixo é gerado.[5]

Implementações

A primeira linguagem concatenativa foi Forth, embora Joy tenha sido a primeira linguagem a ser denominada concatenativa. Outras linguagens concatenativas são Cat, Enchilada, Factor, Onyx, PostScript, RPL, Stappl, and XY.

A maior parte das linguagens concatenativas existentes são baseadas em pilha - não só a implementação como também a semântica é expressa em termos de stacks. Isto não é um requerimento, e outros modelos foram propostas. Linguagens concatenativas são usadas em sistemas embarcados, aplicativos e aplicações web, como linguagens para código intermediário e em pesquisas. A maior parte das linguagens concatenativas são dinamicamente tipadas, embora Cat seja estaticamente tipada.

Referências

  1. Christopher Diggins (1º de janeiro de 2009). «What is a concatenative language». Dr. Dobbs Journal (em inglês). Consultado em 30 de novembro de 2009  !CS1 manut: Língua não reconhecida (link)
  2. Manfred von Thun (2009). «Rationale for Joy, a functional language». Synopsis of Joy, a functional language (em inglês). Consultado em 30 de novembro de 2009. Arquivado do original em 15 de janeiro de 2011  !CS1 manut: Língua não reconhecida (link)
  3. Manfred von Thun (2009). «Joy compared with other functional languages.». Synopsis of Joy, a functional language (em inglês). Consultado em 30 de novembro de 2009. Arquivado do original em 9 de maio de 2009  !CS1 manut: Língua não reconhecida (link)
  4. Manfred von Thun (2009). «von Thun, Manfred: Mathematical foundations of Joy». Synopsis of Joy, a functional language (em inglês). Consultado em 30 de novembro de 2009. Arquivado do original em 31 de julho de 2010  !CS1 manut: Língua não reconhecida (link)
  5. Henry G. Baker (1993). «Linear Logic and Permutation Stacks — The Forth Shall Be First» (em inglês). Consultado em 30 de novembro de 2009  !CS1 manut: Língua não reconhecida (link)
  • Este artigo foi inicialmente traduzido, total ou parcialmente, do artigo da Wikipédia em inglês cujo título é «Concatenative programming language», especificamente desta versão.

Ver também

Ligações externas

  • «Manfred von Thun's Joy and concatenative theory website» (em inglês) 
  • «concatenative.org: A wiki about concatenative languages» (em inglês) 
  • «Why Concatenative Programming Matters» (em inglês). Um tutorial que explica, de maneira compreensiva, para quem não conhece o conceito, o que é programação concatenativa, como funciona e qual é sua relevância 
Procurar imagens disponíveis
  • v
  • d
  • e
Paradigma
Nível
Geração
Relacionado
  • Não-baseadas em inglês
  • Visual