DSLs Python:soluções sob medida para domínios especializados
Quando escrevemos o programa, descobrimos que os problemas que resolvemos pertencem a áreas específicas, também chamadas de domínios, como:
- Um sistema bancário precisa descrever transações e taxas de juros.
- Uma aplicação web precisa definir as rotas, modelos e respostas.
Usando a General Purpose Language (GPL), como Python ou Java, podemos resolver esses problemas, mas o código se torna muito detalhado e repetitivo. Portanto, usaremos o DSL (Domain Specific Language.
DSL - Linguagem Específica de Domínio
A Linguagem Específica de Domínio é uma linguagem de programação ou especificação dedicada a um domínio específico. É diferente da linguagem de uso geral (GPL como Python, C++ ou Java). Eles são de dois tipos:
- DSL externo - É uma linguagem completamente nova com sintaxe e compilador próprios
- Internal DSL (Embedded DSL) - Uma DSL construída dentro da linguagem host, usando sua sintaxe e construções.
DSL externo
Para trabalhar com os bancos de dados, usamos o SQL, em vez de escrever loops para verificar os dados manualmente, simplesmente escrevemos:
09
Para projetar as páginas da web, usamos o HTML. Em vez de gerenciar manualmente as strings de texto e posições, simplesmente declaramos:
18DSL interno
Em Python, a linguagem específica do domínio é construída sobre a sintaxe Python. Frameworks como flask ou Pandas são exemplos de bibliotecas do tipo DSL que ajudam a expressar os problemas com clareza.
26Por que DSLs em Python
Python é a melhor escolha para DSL porque:
- Sua sintaxe é simples e expressiva.
- Ele permite que funções e classes sejam usadas como blocos de construção.
Por exemplo, as estruturas de teste como pytest ou estruturas web como Flask são semelhantes a DSL. Em vez de escrever a lógica de baixo nível, eles deixaram escrever os comandos expressivos.
Vamos mergulhar no exemplo para aprender mais sobre a linguagem específica do domínio.
Exemplo 1
Vejamos o exemplo a seguir, onde vamos abstrair a linguagem matemática nas funções nomeadas.
30
A seguir está a saída do programa acima -
48Exemplo 2
Considere o exemplo a seguir, onde usaremos o DSL nos arquivos de configuração.
57
A saída do programa acima é -
69Exemplo 3
No exemplo a seguir, observaremos o DSL para consulta de dados usando a sintaxe SQL dentro do Python.
71
A seguir está a saída do programa acima -
88
Solução de problemas de vazamento de memória Python:diagnosticar e corrigir problemas de desempenho Perguntas e respostas da entrevista Master Python - seu guia de preparação definitivo
python
- Python JSON:codificar (despejar), decodificar (carregar) e ler arquivo JSON
- O Zen of Python (easter egg PEP-20)
- Funções do Python Lambda com EXEMPLOS
- Python RegEx:re.match(), re.search(), re.findall() com exemplo
- Python - E/S de arquivos
- Tutorial PyTest:O que é, como instalar, estrutura, asserções
- Junte-se à comunidade exclusiva do Real Python Slack para desenvolvedores Python
- Python - Sintaxe Básica
- Manipulação de Exceções do Python Usando a instrução try, except e finally
- Caminhos de aprendizagem acelerados de Python:domine Python do iniciante ao avançado