devfest

F14a1fcb0bd63f3d1a999844fd32a263?s=47 Anna Bulenkova
October 19, 2013
210

 devfest

F14a1fcb0bd63f3d1a999844fd32a263?s=128

Anna Bulenkova

October 19, 2013
Tweet

Transcript

  1. Hi

  2. Anna Bulenkova Software Developer JetBrains @povergo

  3. RubyMine project

  4. Surviving Environment Disasters Or how we’re suffering making Ruby support

  5. Ruby & Java

  6. IntelliJ platform

  7. Ruby 1995 vs RubyMine 2009

  8. How to make an IDE?

  9. In fact, forget the editor... •Debugging •VCS •Visualisation •SDK &

    Libraries management •Frameworks •Something cute and sweet
  10. We still need an editor •Find errors •Autocompletion •Resolve •Find

    usages •Rename
  11. Good editor

  12. Roots of evil?

  13. Open Source

  14. Dynamic typing

  15. Errors •Syntax •Everything else

  16. Errors •Syntax - lexer & parser •Lexer - JFlex •Parser

    - yourself or GrammarKit •Everything else - need to know what it is
  17. Syntax tree AST + PSI

  18. Syntax tree

  19. Errors •Syntax - lexer & parser •Everything else - need

    to know what it is
  20. 42

  21. 42

  22. Indexing: file- & stub- based •External libraries •Internal content

  23. References •Regular •Multi-resolve

  24. It’s easy. Sometimes

  25. Where to go?

  26. FQN? Haven’t heard of it.

  27. It’s more or less fine if we know the class

  28. Even this is ok

  29. Reassignments

  30. Join types

  31. class_eval

  32. Class eval

  33. Class eval

  34. Class eval

  35. instance_eval

  36. Instance eval

  37. Instance eval

  38. Instance eval: go to declaration

  39. method_missing and friends

  40. Not even an option

  41. Have we met before?

  42. But how?

  43. undef_method and friends

  44. DSLs They are full of evil

  45. DSLs They are full of eval

  46. DSLs They are full of evil

  47. We hardcode

  48. With our own DSL

  49. Hiding-places •Docs •Annotations •Naming conventions •Runtime

  50. Runtime

  51. SLOW

  52. Choose the lesser of two evals

  53. Choose the lesser of two evils

  54. With or without IDE?

  55. @povergo anna@bulenkova.com speakerdeck.com/boogiecat/devfest