Escolar Documentos
Profissional Documentos
Cultura Documentos
Descrição:
No mundo real da programação, programadore usam o que chamamos de mainstream programming language
para trabalhar em um domínio geral. Entretanto, essas linguagens de propósito geral podem nao oferecer algum
mecanismo que seja necessário o uso de uma linguagem de domínio específica [domain specific language].
Por exemplo, a linguagem mainstream Java não oferece um mecanismo expressive para trabalhar com contratos
(do inglês: Design by Contract (DbC)) [1], na qual é um método de desenvolvimento de software como meio de
construir sistemas orientado a objetos mais confiáveis. Portanto, faz-se necessário a inclusão de uma linguagem
de domínio específica para resolver esse problema, como JML ou AspectJML [3, 4]. Outro exemplo, Java não
oferece suporte para modularização de feature entrecortantes (do inglês: crosscutting), sendo assim espalhados
e entrelaçados por vários módulos de um sistema. A programação orientada a aspectos (POA) [2], proposta na
segunda metade dos anos 90, surgiu como uma forma de modularizar conceitos entrecortantes, como tratamento
de erros, logging, transação, etc. Sendo assim, outra DSL tem de ser incluida para dar suporte a POA, e assim
por diante.
Dada a questão acima, este projeto tem por objetivo explorar a ideia emergente de programação orientada a
linguagens (do inglês: language oriented programming, or LOP), na qual, o programador possa desenvolver
uma linguagem que ofereça um projeto orientado a linguagens; ou seja, que facilite a inclusão ou extensão de
uma nova linguagem DSL. Nessa direção, temos um projeto chamado Orpheus que seguirá as premissas de um
projeto LOP bem conhecido, chamado Racket [https://racket-lang.org/]. A linguagem base para o Orpheus será
a linguagem AspectJML [5], na qual, dentre várias outras coisas, acrescenta a Java uma forma de
desenvolvimento modular de contratos de software de forma a obter um aumento significativo de produtividade.
Referências Bibliográficas: