Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hack - Why Should I Care?

Joel Clermont
November 07, 2014

Hack - Why Should I Care?

In March, Facebook released a new language called Hack. It adds static typing, generics and lambda expressions on top of the rest of the familiar PHP syntax. In addition, it allows for gradual adoption of these features and continued interoperability with existing PHP code. But why should you care? Do you need to work in a massive environment like Facebook to reap the rewards of learning a new language? I'll make a strong case that Hack (and HHVM) are worth your time, give you a good demo of the language and show you how to get started. I don't work for Facebook, but I dove into Hack the day it was announced and I've continued to follow its development with great interest. I have applications in production running on Hack and I'm eager to show PHP developers of all skill levels why it's worth their time to give Hack a look.

Joel Clermont

November 07, 2014
Tweet

More Decks by Joel Clermont

Other Decks in Technology

Transcript

  1. Hack

    Why Should I Care?
    Joel Clermont

    @jclermont

    View full-size slide

  2. What to expect
    • No insider secrets

    View full-size slide

  3. What to expect
    • No insider secrets
    • High-level tour of Hack’s unique features

    View full-size slide

  4. What to expect
    • No insider secrets
    • High-level tour of Hack’s unique features
    • Make the case why you should try it out

    View full-size slide

  5. What to expect
    • No insider secrets
    • High-level tour of Hack’s unique features
    • Make the case why you should try it out
    • Show you how to get started

    View full-size slide

  6. What to expect
    • No insider secrets
    • High-level tour of Hack’s unique features
    • Make the case why you should try it out
    • Show you how to get started
    • Answer all your questions

    View full-size slide

  7. Quick Tour of Hack

    View full-size slide

  8. Type Annotations

    View full-size slide

  9. Type Annotations

    Where do we need them?

    View full-size slide

  10. Type Annotations

    What do we get out of it?
    • Easier for developers to understand intent

    View full-size slide

  11. Type Annotations

    What do we get out of it?
    • Easier for developers to understand intent
    • Correctness of our type system

    View full-size slide

  12. Type Annotations

    What do we get out of it?
    • Easier for developers to understand intent
    • Correctness of our type system
    • Easier to refactor

    View full-size slide

  13. Doesn’t PHP already
    have type hints?

    View full-size slide

  14. Doesn’t PHP already
    have type hints?
    • Scalar type hints

    View full-size slide

  15. Doesn’t PHP already
    have type hints?
    • Scalar type hints
    • Typed arrays

    View full-size slide

  16. Doesn’t PHP already
    have type hints?
    • Scalar type hints
    • Typed arrays
    • Nullable types

    View full-size slide

  17. Doesn’t PHP already
    have type hints?
    • Scalar type hints
    • Typed arrays
    • Nullable types
    • Function return type hints

    View full-size slide

  18. Doesn’t PHP already
    have type hints?
    • Scalar type hints
    • Typed arrays
    • Nullable types
    • Function return type hints
    • Type checker

    View full-size slide

  19. More useful Hack types

    View full-size slide

  20. Still not convinced?


    DEMO

    View full-size slide

  21. More Cool Features

    View full-size slide

  22. Collections
    Why would I need anything besides an array?

    View full-size slide

  23. Collections
    Anyone know what this is?

    View full-size slide

  24. Collections
    Hack gives us the right tool for each job

    View full-size slide

  25. Collections
    Cleaner API

    View full-size slide

  26. Collections
    Other nice features
    • Familiar interface

    View full-size slide

  27. Collections
    Other nice features
    • Familiar interface
    • OutOfBoundsException

    View full-size slide

  28. Collections
    Other nice features
    • Familiar interface
    • OutOfBoundsException
    • Collections are objects (no more passing by ref)

    View full-size slide

  29. Collections
    Other nice features
    • Familiar interface
    • OutOfBoundsException
    • Collections are objects (no more passing by ref)
    • Immutable collections too

    View full-size slide

  30. Trailing Commas
    You know you want them

    View full-size slide

  31. And more . . .
    • User attributes
    • Enhancements to traits
    • Async / await
    • Constructor promotion
    • Shapes
    • Type aliases . . . .

    View full-size slide

  32. Why should you consider it?
    Safety
    Language Features
    (Developer) Speed

    View full-size slide

  33. Trying out Hack is not scary
    • Gradual process

    View full-size slide

  34. Trying out Hack is not scary
    • Gradual process
    • Full PHP interoperability

    View full-size slide

  35. Trying out Hack is not scary
    • Gradual process
    • Full PHP interoperability
    • Not just for multi-million line codebases

    View full-size slide

  36. Trying out Hack is not scary
    • Gradual process
    • Full PHP interoperability
    • Not just for multi-million line codebases
    • Awesome tooling

    View full-size slide

  37. How to get started
    • Install HHVM (packages available)

    View full-size slide

  38. How to get started
    • Install HHVM (packages available)
    • Convert existing code with hackificator

    View full-size slide

  39. How to get started
    • Install HHVM (packages available)
    • Convert existing code with hackificator
    • Monitor logs for type errors

    View full-size slide

  40. How to get started
    • Install HHVM (packages available)
    • Convert existing code with hackificator
    • Monitor logs for type errors
    • Harden your types over time

    View full-size slide

  41. Resources
    • Conversion guide

    http://docs.hhvm.com/manual/en/install.hack.conversion.php
    • HHVM blog http://hhvm.com/blog
    • IRC channel #hhvm
    • http://hhvm.com/frameworks/
    • https://github.com/facebook/hhvm/wiki/Extensions

    View full-size slide

  42. Feedback please
    @jclermont
    https://joind.in/talk/view/12714

    View full-size slide

  43. Thank you!
    @jclermont


    https://joind.in/talk/view/12714

    View full-size slide