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
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
33
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 Past, Present, and Future of Enterprise Java
ivargrimstad
0
550
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
5
2.8k
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
330
Cursorハンズオン実践!
eltociear
2
1.2k
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
150
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
190
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
33k
iOSでSVG画像を扱う
kishikawakatsumi
0
150
EMこそClaude Codeでコード調査しよう
shibayu36
0
320
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
780
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
260
CSC509 Lecture 07
javiergs
PRO
0
240
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
49
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Producing Creativity
orderedlist
PRO
347
40k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
What's in a price? How to price your products and services
michaelherold
246
12k
Building Applications with DynamoDB
mza
96
6.7k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Designing Experiences People Love
moore
142
24k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
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]