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 editar

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 editar

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

Ver também editar

Ligações externas editar