Desenvolvendo DSLs em
                 Python


          Rodrigo S. Manhães
  Núcleo de Pesquisa em Sistemas de Informaçã...
domain specific language
make


     CSS


     SQL


   Django *


Ruby on Rails *
concisão
concisão




fluência
Django
concisão




   fluência




expressividade
unittest




should-dsl
should-dsl



   expectativas para testes e
  especificações automatizadas



http://github.com/hugobr/should-dsl
O que
é isso?   e isso?
sobrecarga de operadores
sobrecarga de operadores
...entre outros
ops!
operadores invertidos




  ...entre outros
__ror__
__ror__   __or__
objeto   atributo
e se eu quiser outros matchers?
matchers customizados
concisão


    fluência


 expressividade


extensibilidade
atributo??
Python decorators
classe Should
respondendo a mensagens perdidas
classe Should
__ror__   __or__
E isso foi só o começo...



  inspect e frame objects
  http://github.com/hugobr/pyhistorian
  http://github.com/nsigusta...
De onde vêm as imagens
(4) http://www.flickr.com/photos/clover_1/176047283/

(5) http://www.flickr.com/photos/ysc/21797981...
Alguns exemplos extraídos de



http://media.brianbeck.com/files/Python_DSLs_I.pdf
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
Upcoming SlideShare
Loading in …5
×

Desenvolvendo DSLs Em Python

1,219 views

Published on

Palestra "relâmpago" (15 min) mostrando alguns detalhes de construção de DSLs em Python: decorators, sobrecarga de operadores, __getattr__, utilizando como exemplo a biblioteca de expectations e matchers Should-DSL (http://github.com/hugobr/should-dsl)

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,219
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
36
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Desenvolvendo DSLs Em Python

  1. 1. Desenvolvendo DSLs em Python Rodrigo S. Manhães Núcleo de Pesquisa em Sistemas de Informação/IFF Laboratório de Ciências Matemáticas/UENF Gerência de Recursos Computacionais/UENF
  2. 2. domain specific language
  3. 3. make CSS SQL Django * Ruby on Rails *
  4. 4. concisão
  5. 5. concisão fluência
  6. 6. Django
  7. 7. concisão fluência expressividade
  8. 8. unittest should-dsl
  9. 9. should-dsl expectativas para testes e especificações automatizadas http://github.com/hugobr/should-dsl
  10. 10. O que é isso? e isso?
  11. 11. sobrecarga de operadores
  12. 12. sobrecarga de operadores
  13. 13. ...entre outros
  14. 14. ops!
  15. 15. operadores invertidos ...entre outros
  16. 16. __ror__
  17. 17. __ror__ __or__
  18. 18. objeto atributo
  19. 19. e se eu quiser outros matchers?
  20. 20. matchers customizados
  21. 21. concisão fluência expressividade extensibilidade
  22. 22. atributo??
  23. 23. Python decorators
  24. 24. classe Should
  25. 25. respondendo a mensagens perdidas
  26. 26. classe Should
  27. 27. __ror__ __or__
  28. 28. E isso foi só o começo... inspect e frame objects http://github.com/hugobr/pyhistorian http://github.com/nsigustavo/ludibrio codecs e tokenize http://github.com/fmeyer/yeti
  29. 29. De onde vêm as imagens (4) http://www.flickr.com/photos/clover_1/176047283/ (5) http://www.flickr.com/photos/ysc/2179798100/ (25) http://www.flickr.com/photos/jasperdeboer/15346117/ (37) http://www.flickr.com/photos/waldopepper/3424717308/ (38) http://www.flickr.com/photos/lwr/12364944/
  30. 30. Alguns exemplos extraídos de http://media.brianbeck.com/files/Python_DSLs_I.pdf

×