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
- Programação orientada à gramática
- Dialeto
- Linguagem específica de domínio
- Programação extensível
- Programação intencional
Referências
- ^ 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.
- ^ 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 .
- ^ Dunlavey (1994). Construindo Melhores Aplicações: uma Teoria de Desenvolvimento de Software Eficiente . International Thomson Publishing . ISBN 0-442-01740-5.
- ^ Fowler, Martin (12 de junho de 2005). "Language Workbenches: The Killer-App for Domain Specific Languages?" . Recuperado em 14 de abril de 2015 .
- ^ 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 .
Links externos
- 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