DSL Quebre a barreira entre desenvolvimento e negócios
Leonardo OttoPrefácio
Quando comecei a programar — e isso já faz algum tempo —, sempre procurei novas e melhores formas de me expressar em termos de linguagens. Tentava torcer a linguagem de modos novos para extrair formas mais elegantes e eficientes. Já falhei miseravelmente. Confundi mais que esclareci. Mas apesar de tudo, obtive alguns sucessos. Consegui modelar minhas ideias em forma de linguagem de forma ótima.
Trabalhamos essencialmente com ideias e linguagem, e limitações nestas áreas são nossos paradoxos. Vivemos dentro de nossos paradoxos de como as coisas devem ser. E pior ainda, vivemos dentro de um paradoxo de como pensar para resolver nossos problemas.
O paradoxo é quebrado quando encontramos novas formas de pensar, novos algoritmos, novos métodos e, sobretudo, novas linguagens.
São as linguagens, principalmente, que fazem você pensar diferente. Sua linguagem nativa (por exemplo, o português ou o inglês) é mais complexa e flexível em várias ordens de grandeza do que uma linguagem de programação, mas ela também tem suas limitações. Você só descobre que estas limitações existem quando aprende uma nova língua.
Existe um ponto de vista que diz que a profissão de programação é uma profissão de tradução. Estamos sempre traduzindo o que os especialistas estão dizendo para uma língua que os computadores entendam. Ou seja, capturamos as ideias de especialistas, as completamos (pois normalmente eles eliminam detalhes) e traduzimos para outra linguagem.
Manter o código o mais próximo dos conceitos dos especialistas é um passo importante, mas este pode ser expandido ainda mais com o uso de Linguagens Específicas de Domínio (DSLs). Aprendendo como construí-las, ganhamos a capacidade criar softwares mais simples, mais comunicativos e com uma melhor manutenção.
Este livro vai lhe ensinar como utiliza e criar DSLs internas para obter o código mais expressivo possível. A comunicação com os especialistas de domínio se tornará um desafio muito mais interessante depois de conhecer estas técnicas.
Em muitas áreas, e principalmente em tecnologia, não existe uma teoria completa. Este livro não é o mais completo guia sobre DSLs, se é que algum dia algum livro vai estar totalmente completo.
É um livro focado, e introdutório, a um assunto fascinante, que são DSLs. É um passeio guiado em um lugar totalmente novo. E espero que você volte muitas vezes a ele.
A quem se destina este livro?
Este livro se destina principalmente a desenvolvedores de software com experiência intermediária e/ou avançada. Desenvolvedores que desejam entrar no mundo das DSLs internas e também adicionar mais uma ferramenta de expressão ao seu trabalho.
Ele é particularmente útil para desenvolvedores que querem melhorar suas APIs, usuários do domínio que queiram se comunicar melhor com os times de desenvolvimento, como também para desenvolvedores que queiram verificar, de uma forma mais clara, se as implementações de regras de negócios estão corretas.
Se o leitor já tiver uma formação acadêmica relacionada ou alguma experiência em compiladores, terá uma visão adicional sobre o conteúdo.
Os exemplos do livro utilizam as linguagens de programação Java e Scala. É necessário apenas ter uma experiência intermediária com a linguagem Java, mas não é necessário ter experiência prévia com Scala. É necessário também ter conhecimento básico da linguagem XML.
O livro possui um apêndice demostrando as principais características da linguagem Scala, e esta demonstração já é suficiente para aproveitar os exemplos. Devido a algumas similaridades entre a linguagem Java e a Scala, o leitor vai sentir uma transição suave quando começar a desenvolver utilizando Scala. Se o leitor já tiver experiência em Scala, pode pular este apêndice sem problemas.
Sumário
- 1 Batendo uma bola com sua DSL
- 1.1 Copa do mundo dos programadores
- 1.2 Um modelo para o problema
- 1.3 Java e Scala
- 1.4 Utilizando o modelo
- 1.5 Foco nas DSLs internas
- 1.6 E agora?
- 2 Adentrando nas DSLs
- 2.1 Modelo de domínio
- 2.2 Modelo semântico
- 2.3 Uma DSL para cada problema
- 2.4 Definições
- 2.5 Devo utilizar uma DSL?
- 2.6 Como implementar DSLs internas
- 2.7 Variações de DSLs
- 2.8 Qual técnica utilizar para construir sua DSL
- 2.9 BNF
- 2.10 E agora?
- 3 Encadeamento de métodos e Composite
- 3.1 Encadeamento de métodos
- 3.2 Composite or don't Composite?
- 3.3 Interfaces progressivas
- 3.4 Game of life
- 3.5 E agora?
- 4 Sequência de funções e funções aninhadas
- 4.1 Sequência de funções
- 4.2 Funções aninhadas
- 4.3 Refine
- 4.4 E agora?
- 5 Outras técnicas
- 5.1 Símbolos
- 5.2 Parâmetros nomeados
- 5.3 Anotações
- 5.4 Closures
- 5.5 Extensão de literais
- 5.6 Recepção dinâmica
- 5.7 Testes
- 5.8 Migrando DSL internas
- 5.9 Modelos alternativos
- 5.10 E agora?
- 6 Conclusão
- 7 Apêndice - Scala
- 7.1 Funcionalidades
- 7.2 E agora?
- 8 Referências bibliográficas
Dados do produto
- Número de páginas:
- 172
- ISBN:
- 978-85-5519-282-1
- Data publicação:
- 06/2017