Programação orientada a linguagem

Programação orientada a linguagem ( LOP ) [1] é um paradigma de desenvolvimento de software onde "linguagem" é um bloco de construção de software com o mesmo status que objetos, módulos e componentes, [2] e ao invés de resolver problemas em linguagens de programação de uso geral , o programador cria primeiro uma ou mais linguagens específicas de domínio (DSLs) para o problema e resolve o problema nessas linguagens. A programação orientada à linguagem foi descrita pela primeira vez em detalhes no artigo de Martin Ward de 1994, Language Oriented Programming , [1] publicado em Software - Concepts and Tools , Vol.15, No.4, pp 147–161, 1994.

Conceito

O conceito de programação orientada a linguagem adota a abordagem de capturar os requisitos nos termos do usuário e, em seguida, tentar criar uma linguagem de implementação o mais isomórfica possível às descrições do usuário, de modo que o mapeamento entre requisitos e implementação seja o mais direto possível. Uma medida da proximidade desse isomorfismo é a "redundância" da linguagem, definida como o número de operações de edição necessárias para implementar uma mudança autônoma nos requisitos. Não se assume a priori qual é a melhor linguagem para implementar a nova linguagem. Em vez disso, o desenvolvedor pode escolher entre as opções criadas pela análise dos fluxos de informações – quais informações são adquiridas, qual é sua estrutura, quando são adquiridas, de quem e o que é feito com elas. [3]

Desenvolvimento

A linguagem de programação Racket foi projetada para oferecer suporte à programação orientada à linguagem. [2] Outras ferramentas de ambiente de trabalho de linguagem [4] como JetBrains MPS , Kermeta ou Xtext fornecem as ferramentas para projetar e implementar DSLs e programação orientada a linguagem. [ citação necessária ]

Veja também

Referências

  1. ^ ab Ward, Martin (1994). "Programação Orientada à Linguagem" (PDF) . Software - Conceitos e Ferramentas . 15 (4): 147–161. doi : 10.1007/978-1-4302-2390-0_12. ISBN 978-1-4302-2389-4. Acesso em 15 de maio de 2019 .
  2. ^ ab Felleisen, Matthias; Findler, Robert Bruce; Flatt, Mateus; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (março de 2018). "Uma linguagem de programação programável". Comunicações da ACM . 61 (3): 62–71. doi : 10.1145/3127323. S2CID  3887010 . Acesso em 15 de maio de 2019 .
  3. ^ Dunlavey (1994). Construindo Melhores Aplicações: uma Teoria do Desenvolvimento de Software Eficiente . Publicação Thomson Internacional . ISBN 0-442-01740-5.
  4. ^ Fowler, Martin (12 de junho de 2005). "Language Workbenches: The Killer-App para idiomas específicos de domínio?" . Acesso em 14 de abril de 2015 .

links externos

  • Programação Orientada à Linguagem: O Próximo Paradigma de Programação Artigo de Sergey Dmitriev que explorou ainda mais o tópico.
  • Programação Orientada à Linguagem no MetaLisp Gyuri Lajos's thesis 1992 University of Leeds O sistema usou o mesmo algoritmo Top Down Parsing Language que alimentou o Tree-Meta