Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Embedded DSLs em Python - Python Sudeste 02/092016
Search
Elias Tandel
September 02, 2016
Programming
0
52
Embedded DSLs em Python - Python Sudeste 02/092016
Elias Tandel
September 02, 2016
Tweet
Share
More Decks by Elias Tandel
See All by Elias Tandel
Intensivão de Encoding
etandel
0
37
Medindo distâncias astronômicas
etandel
0
35
Embedded DSLs em Python - PythonRio 28/05/2016
etandel
0
89
Software Livre
etandel
0
30
Other Decks in Programming
See All in Programming
Claude Codeログ基盤の構築
giginet
PRO
7
3.3k
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
480
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
410
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
110
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
120
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
110
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
140
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
220
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
950
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
160
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
440
「抽象に依存せよ」が分からなかった新卒1年目の私が Goのインターフェースと和解するまで
kurogenki
0
120
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
52k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
110
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
150
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
71
New Earth Scene 8
popppiees
1
1.7k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
400
How to Think Like a Performance Engineer
csswizardry
28
2.5k
KATA
mclloyd
PRO
35
15k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
EDSLs em Python Elias Tandel (@etandel) Python Sudeste 02/09/2016
DSL?
DSL? • Linguagem formal
DSL? • Linguagem formal • Não necessariamente de programação
DSL? • Linguagem formal • Não necessariamente de programação •
Geralmente não turing-completa
DSL? • Linguagem formal • Não necessariamente de programação •
Geralmente não turing-completa • Focada em um tipo de problema (domínio)
DSL? • Linguagem formal • Não necessariamente de programação •
Geralmente não turing-completa • Focada em um tipo de problema (domínio) • Simples?
Exemplos
Pros vs Cons • Validação a nível de domínio •
Abstração otimizada para o problema • Custo de aprendizado • Custo de manutenção
Embedded vs External
Embedded vs External • Se utiliza da sintaxe de uma
linguagem de propósito geral (host) • Criada do zero: parser, compiler / interpreter etc.
Embedded vs External • Se utiliza da sintaxe de uma
linguagem de propósito geral (host) • Preso à sintaxe do host • Criada do zero: parser, compiler / interpreter etc. • Extremamente flexível
Embedded vs External • Se utiliza da sintaxe de uma
linguagem de propósito geral (host) • Preso à sintaxe do host • Reutiliza ferramental do host • Criada do zero: parser, compiler / interpreter etc. • Extremamente flexível • Ferramentas também devem ser criadas do zero
Embedded • Rápido de prototipar
Embedded • Rápido de prototipar • Você provavelmente já usou
pelo menos uma: ORM
Embedded • Rápido de prototipar • Você provavelmente já usou
pelo menos uma: ORM • Diferença para lib / framework não é clara
Embedded • Rápido de prototipar • Você provavelmente já usou
pelo menos uma: ORM • Diferença para lib / framework não é clara • “Torce” a sintaxe
Python? • Sintaxe pouco flexível: – Chamadas sempre com ()
vs Ruby – Operadores fixos vs Haskell
Python? • Sintaxe pouco flexível: – Chamadas sempre com ()
vs Ruby – Operadores fixos vs Haskell • Objetos muito flexíveis: – Metaclasses – Meta-object protocol
DEMO • Patterns - https://github.com/etandel/pattern- matching-dsl • JSONBender - https://github.com/Onyo/jsonbender
Resumo • EDSLs podem ajudar muito • Não tenha medo
de usar o que python te oferece – Sobrecarga de operadores – Decorators – Metaclasses – Descriptors – Context managers
Obrigado https://etandel.xyz
[email protected]
[email protected]