Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Demystifying the creation of coding tools

107 vues

Publié le

by Javier Gelatti

  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Demystifying the creation of coding tools

  1. 1. Desmitificando la creación de herramientas que interactúan con código Demystifying the creation of coding tools Facundo Javier Gelatti
  2. 2. ¿Cuál es el objetivo de la charla? The Goal Conceptos previos Preliminary concepts Creando una herramienta en vivo Creating a tool, live
  3. 3. ¿Cuál es el objetivo de la charla? The Goal
  4. 4. Herramientas que interactúan con el código Tools that interact with code
  5. 5. ¿Cómo hacemos para crear algo así? How can we create something like this?
  6. 6. ¡Aprendemos con ejemplos! We learn by example!
  7. 7. Resaltar ifs (envíos del mensaje ifTrue:) Highlight ifTrue: message sends
  8. 8. Resaltar ifs (envíos del mensaje ifTrue:) Highlight ifTrue: message sends Pff, eso es fácil! Si el código es texto, buscá las ocurrencias de “ifTrue:” y listo Easy! The code is text, so you can just search for “ifTrue:” and that’s it!
  9. 9. Veamos si era tan fácil... Let’s see if it was that easy...
  10. 10. Veamos si era tan fácil... Let’s see if it was that easy...
  11. 11. Conceptos previos Preliminary concepts
  12. 12. ¿Puede ser el código otra cosa, si no texto? Can code be anything other than text?
  13. 13. Cuando pensamos en código, no pensamos en las letras When we think about code, we don’t think in terms of characters
  14. 14. Árbol de sintaxis abstracta (AST) Abstract Syntax Tree
  15. 15. Method Message #ifTrue:ifFalse: Block Block Return self Message Return self #negated selectorreceptor argumentos receptor selector Message #<self 0 receptor selector argumento
  16. 16. Message #ifTrue:ifFalse: Block Block Return self Message Return self #negated selectorreceptor argumentos receptor selector Message #<self 0 receptor selector argumento Method Block
  17. 17. Parser Nota de color: ¿Cómo se genera el AST? Sidenote: How is the AST generated?
  18. 18. ....
  19. 19. ¿Cómo usamos el AST? How do we use the AST?
  20. 20. Resaltar ifs (envíos del mensaje ifTrue:) Highlight ifTrue: message sends
  21. 21. ¿Cómo recorremos el AST de un método, para buscar los envíos de mensajes ifTrue:? How do we traverse a method’s AST looking for ifTrue: message sends?
  22. 22. Visitor
  23. 23. La estructura del Visitor The structure of the Visitor
  24. 24. ¡Veamos cómo funciona! Let’s see how it works!
  25. 25. Ya sabemos lo que es un AST, y cómo recorrerlo para hacer cosas... Now we know what an AST is, and how to traverse it to do things
  26. 26. ¡Construyamos la herramienta! Let’s build the tool!
  27. 27. Conclusión Conclusion ● Se puede pensar en el código más allá de un simple conjunto de caracteres. ● Podemos entender cómo funcionan las herramientas que usamos, y ver que no hay magia. ● Somos capaces de desarrollar nuestras propias herramientas (¡hay que animarnos a hacerlo!).
  28. 28. CONTACT Facundo Javier Gelatti javiergelatti@gmail.com ¡Gracias! Thank you!

×