Tradução - Programação Orientada a Linguagem: um passo evolucionário além de orientação a objetos?
Posted on September 19, 2007

Pra variar, estou muito atarefado (ainda tenho um artigo que está no forno faz dias para eu terminar), mesmo assim achei este artigo interessante e – para variar – me deu vontade de traduzí-lo aqui. Tem uma discussão no site do TSS também. O Artigo original está na InfoQ, por Sadek Drobi, publicado agora há pouco. Lá vai:
No evento da TSS em Barcelona, Martin Fowler e Neal Ford deram uma palestra sobre programação orientada a linguagem, resumida aqui. Em seu artigo anterior, Fowler definiu esse conceito como ‘o estilo geral de desenvolvimento que opera sobre a idéia de construir software ao redor de um conjunto de linguagens específicas de domínio’. Fowler e Ford desenvolvem algumas idéias apresentadas por Fowler na JAOO 2006 e questionam a eventualidade de um “passo evolucionário além de programação orientada a objetos”.

Programação Orientada a Objetos dão um paradigma de modelagem útil baseado em hierarquia e abstrações em forma de árvore. A realidade, no entanto, nem sempre é hierárquica, enfatiza Neal Ford. Seus “galhos enroscados e interconexões” são difíceis de modelar com figuras idealizadas de árvores. E o resultado é o uso generalizado de Aspectos e XML que eventualmente adicionam complexidade destruindo o propósito inicial da abstração. Para remediar esse problema o nível de abstração deve ser atualizado e para isso, sugere Ford, usar linguagens em vez de hierarquias como mecanismos de modelagem.
De acordo com Martin Fowler modelagem de domínios orientados a objetos permitem “construir um vocabulário” mas a gramática – maneiras de combinar esse vocabulário – não está definido; DSLs adicionam esse lado de gramática. Portanto programação orientada a linguagens induzem “esta mudança de mover do pensamento sobre vocabulário, que são objetos, para a noção de uma linguagem que combina vocabulário e gramática”.
Para Neal Ford, o que torna torna o uso de DSLs como um novo mecanismo de abstração interessante é sua habilidade de dar contexto. Em um ambiente livre de contexto alguém precisa “iniciar no nível mais baixo possível do entendimento e ter que explicar cada detalhe”. Essa é maneira que falamos com APIs e frameworks porque eles não tem “nenhum tipo de contexto embutido” neles. Logo o código é cheio de contextos repetidos normalmente percebidos como ‘barulho’. DSLs, ao contrário, “sempre tem um contexto implícito que mostram ou nada, ou de uma maneira muito, muito leve ou normalmente apenas uma vez no máximo.” Esse contexto não precisar se dado repetidamente, o que torna o código mais legível e mais expressivo.
Tanto Fowler quanto Ford estressam quão crítico a legibilidade é. Eles insistem que o propósito das DSLs é normalmente mal-entendido. Não é para tornar possível que analistas de negócios escrevam código, mas para tornar possível a eles ler e revisar, de forma a diminuir a distância separando desenvolvedores e pessoal de negócios.
Alguns são relutantes em usar o estilo de programação orientada a linguagens por causa de possíveis problemas de manutenção e aumento considerável da curva de aprendizagem, especialmente dada a falta de IDEs ricas para o DSL puro-texto. Fowler, que argumentou em seu artigo recenete que frameworks maiores […] apresentam tanto desafio para aprender quanto uma linguagem, enfatiza novamente a complexidade de projetos escritos em uma única linguagem. Mais do que isso, Neal Ford estressa que se uma DSL é difícil de ler então ela foi muito pobremente desenhada porque “um dos objetivos [de usar uma DSL é] criar código mais legível”.
Sobre suporte de IDEs de hoje pelo menos três grandes fornecedores oferecem suporte a esse tipo de programação orientada a linguagens: Intentional Software desenvolvido por Charles Simonyi, Software Factory da Microsoft, Meta Programming System desenvolvido pela JetBrains. Essas ferramentas, referidas como Workbenches de Linguagens por Martin Fowler, tornam mais fácil desenhar e então usar DSLs. Isso aumenta a vantagem competitiva do estilo de programação orientada a linguagem mesmo que Fowler acredite que isso “vai levar alguns anos para que a maioria das pessoas possam pensar em usar [Workbench de Linguagens] para projetos reais”.
Qual sua opinião? Programação Orientada a Linguagens tem alguma chance de se tornar a “próxima grande coisa”? E até que ponto a disponibilidade de ferramentas workbenches de linguagens poderiam afetar sua decisão em usar DSLs em seus projetos?
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




