taming javascript with cloud9 ide a tale of tree hugging
play

Taming JavaScript with Cloud9 IDE: a Tale of Tree Hugging Zef Hemel - PowerPoint PPT Presentation

Taming JavaScript with Cloud9 IDE: a Tale of Tree Hugging Zef Hemel (@zef) .js browser.js db.js server.js *.js ~140,000 Tooling matters JavaScript Developer HTML CSS JavaScript HTML5 Client CSS3 JavaScript HTML5 Client CSS3


  1. Taming JavaScript with Cloud9 IDE: a Tale of Tree Hugging Zef Hemel (@zef)

  2. .js

  3. browser.js

  4. db.js

  5. server.js

  6. *.js

  7. ~140,000

  8. Tooling matters

  9. JavaScript Developer

  10. HTML CSS JavaScript

  11. HTML5 Client CSS3 JavaScript

  12. HTML5 Client CSS3 JavaScript Node.js Server Redis

  13. HTML5 Client CSS3 JavaScript XMLHttpRequest HTML5 WebSockets Node.js Server Redis

  14. Mozilla Bespin

  15. Mozilla Bespin Canvas

  16. Browser Wars 2.0

  17. DOM

  18. Sidebar

  19. Sidebar

  20. Sidebar

  21. Sidebar

  22. Sidebar

  23. Sidebar

  24. Sidebar

  25. Sidebar

  26. JavaScript Scala Lua HTML SCSS Java C/C++ Markdown Closure SQL PHP SVG Perl C# Ruby CSS Textile CoffeeScript JSON Coldfusion Scad OCaml Groovy XML LaTeX

  27. ~240,000

  28. Component Systems Decoupling Message Queues

  29. Tooling matters especially for JavaScript

  30. Unleash the awesome power of...

  31. tatic

  32. program analysis

  33. Iterating using undeclared variable

  34. Warning: you are in an anonymous inner function with its own “this” pointer

  35. Did you mean “length”?

  36. “The most important thing I have done as a programmer in recent years is to aggressively pursue static code analysis.” John Carmack

  37. How?

  38. Parse Analyze

  39. Parser Code AST

  40. Abstract Syntax Tree Op Parser “*” a * 10 Var Num “a” “10”

  41. Zeon Narcissus UglifyJS language.js Esprima

  42. performance (speed/memory) AST datastructure traversal tools

  43. JavaScript specific performance (speed/memory) AST datastructure traversal tools

  44. treehugger.js

  45. “The JQuery of AST analysis.”

  46. treehugger.js

  47. Generic AST Data structure treehugger.js

  48. Generic AST Data structure treehugger.js Generic Traversals

  49. Generic AST Data structure treehugger.js DSL with Pattern Matching Generic Traversals

  50. Generic AST Data structure treehugger.js DSL with Language- Pattern Specific Parsers Matching Generic Traversals

  51. Generic AST Data structure treehugger.js DSL with Language- Pattern Specific Parsers Matching JavaScript (UglifyJS-based) Generic Traversals

  52. Generic AST Data structure DSL with treehugger.js Language- Pattern Specific Parsers Matching JavaScript (UglifyJS-based) Generic Traversals

  53. Op a * 10 “*” Var Num “a” “10”

  54. Op Op("*", Var("a"), “*” Var Num Num("10")) “a” “10”

  55. Op ATerm Op("*", Var("a"), “*” Var Num Num("10")) “a” “10”

  56. Var(_) Constructors Lists [_, _] "hello" Strings Placeholders x

  57. let’s play

  58. What can you do with it?

  59. Low-level tooling

  60. Intelligent code completion

  61. Complex refactoring

  62. Cloud

  63. Big data

  64. What if...

  65. Project 4 Project 5 Project 1 Project 3 Project 2 Project 6

  66. Your (dev) environment matters use static analysis tools

  67. @zef http://github.com/ajaxorg/treehugger http://c9.io

Recommend


More recommend