Hack - Why Should I Care?

2fe1b2866cfd498a513295d60d5cad0f?s=47 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.

2fe1b2866cfd498a513295d60d5cad0f?s=128

Joel Clermont

November 07, 2014
Tweet

Transcript

  1. Hack
 Why Should I Care? Joel Clermont
 @jclermont

  2. What to expect • No insider secrets

  3. What to expect • No insider secrets • High-level tour

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

    of Hack’s unique features • Make the case why you should try it out
  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
  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
  7. Quick Tour of Hack

  8. Type Annotations

  9. Type Annotations
 Where do we need them?

  10. Type Annotations
 What do we get out of it? •

    Easier for developers to understand intent
  11. Type Annotations
 What do we get out of it? •

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

    Easier for developers to understand intent • Correctness of our type system • Easier to refactor
  13. Doesn’t PHP already have type hints?

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

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

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

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

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

    • Typed arrays • Nullable types • Function return type hints • Type checker
  19. More useful Hack types

  20. Questions?

  21. Still not convinced?
 
 DEMO

  22. More Cool Features

  23. Lambdas

  24. Lambdas

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

  26. Collections Anyone know what this is?

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

  28. Collections Cleaner API

  29. Collections Other nice features • Familiar interface

  30. Collections Other nice features • Familiar interface • OutOfBoundsException

  31. Collections Other nice features • Familiar interface • OutOfBoundsException •

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

    Collections are objects (no more passing by ref) • Immutable collections too
  33. Trailing Commas You know you want them

  34. And more . . . • User attributes • Enhancements

    to traits • Async / await • Constructor promotion • Shapes • Type aliases . . . .
  35. Questions?

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

  37. Trying out Hack is not scary • Gradual process

  38. Trying out Hack is not scary • Gradual process •

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

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

    Full PHP interoperability • Not just for multi-million line codebases • Awesome tooling
  41. How to get started • Install HHVM (packages available)

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

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

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

    Convert existing code with hackificator • Monitor logs for type errors • Harden your types over time
  45. 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
  46. Questions?

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

  48. Thank you! @jclermont
 
 https://joind.in/talk/view/12714