Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
51
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
35
Medindo distâncias astronômicas
etandel
0
34
Embedded DSLs em Python - PythonRio 28/05/2016
etandel
0
87
Software Livre
etandel
0
29
Other Decks in Programming
See All in Programming
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
120
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
600
認証・認可の基本を学ぼう後編
kouyuume
0
250
SwiftUIで本格音ゲー実装してみた
hypebeans
0
470
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.2k
gunshi
kazupon
1
110
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.4k
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
180
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
130
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
200
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
410
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
110
Featured
See All Featured
The Language of Interfaces
destraynor
162
25k
Un-Boring Meetings
codingconduct
0
160
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
110
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
200
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
0
99
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Everyday Curiosity
cassininazir
0
110
The Limits of Empathy - UXLibs8
cassininazir
1
190
Writing Fast Ruby
sferik
630
62k
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]