Programação orientada a linguagem

A 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 de objetos, módulos e componentes, [2] e em vez de resolver problemas em linguagens de programação de propósito geral , o programador cria uma ou mais linguagens específicas de domínio (DSLs) para o problema primeiro, e resolve o problema nessas linguagens. A programação orientada a linguagem foi descrita pela primeira vez em detalhes no artigo de Martin Ward de 1994, Language Oriented Programming . [1]

Conceito

O conceito de programação orientada a linguagem adota a abordagem de capturar requisitos nos termos do usuário e, então, 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 é assumido a priori qual é a melhor linguagem para implementar a nova linguagem. Em vez disso, o desenvolvedor pode escolher entre 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 e RascalMPL foram projetadas para oferecer suporte à programação orientada a linguagem desde o início. [2] Outras ferramentas de bancada de linguagem [4], como JetBrains MPS , Kermeta ou Xtext, fornecem as ferramentas para projetar e implementar DSLs e programação orientada a linguagem. [5]

Veja também

Referências

  1. ^ sobre
    • Ward, Martin (1994). "Programação Orientada à Linguagem". Software - Conceitos e Ferramentas . 15 (4): 147–161 . Recuperado em 15 de maio de 2019 .
    • Pickering, Robert (2010). "Programação Orientada à Linguagem". Começando em F# . Berkeley: Apress. pp. 327–349. doi :10.1007/978-1-4302-2390-0_12. ISBN 978-1-4302-2389-4.
  2. ^ ab Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (março de 2018). "Uma linguagem de programação programável". Communications of the ACM . 61 (3): 62–71. doi :10.1145/3127323. S2CID  3887010 . Recuperado em 15 de maio de 2019 .
  3. ^ Dunlavey (1994). Construindo Melhores Aplicações: uma Teoria de Desenvolvimento de Software Eficiente . International Thomson Publishing . ISBN 0-442-01740-5.
  4. ^ Fowler, Martin (12 de junho de 2005). "Language Workbenches: The Killer-App for Domain Specific Languages?" . Recuperado em 14 de abril de 2015 .
  5. ^ Erdweg, Sebastian (2013). "O estado da arte em bancadas de trabalho de linguagem". Engenharia de linguagem de software . Anotações de aula em ciência da computação. Vol. 8225. pp. 197–217. doi :10.1007/978-3-319-02654-1_11. ISBN 978-3-319-02653-4. S2CID  5234848 . Recuperado em 4 de julho de 2023 .
  • Programação Orientada a Linguagem: O Próximo Paradigma de Programação Artigo de Sergey Dmitriev que explorou mais profundamente o tópico.
  • O estado da arte em Language Workbenches. Conclusões do Language Workbench Challenge. Em: Anais da 6ª Conferência Internacional sobre Engenharia de Linguagem de Software (SLE'13). 2013.
  • Programação Orientada a Linguagem em MetaLisp Tese de Gyuri Lajos 1992 Universidade de Leeds O sistema usou o mesmo algoritmo de Linguagem de Análise Top Down que alimentava o Tree-Meta
Obtido em "https://pt.wikipedia.org/w/index.php?title=Programação_orientada_a_linguagem&oldid=1216805955"