Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Erlang, LFE, Joxa and Elixir: Established and Emerging Languages in the Erlang Ecosystem

7,666 views

Published on

This is a talk comparing the language philosophies of Erlang, LFE, Joxa and Elixir: the languages which target the erlang virtual machine (BEAM).

Published in: Technology

Erlang, LFE, Joxa and Elixir: Established and Emerging Languages in the Erlang Ecosystem

  1. 1. ERLANG, LFE, JOXA & ELIXIR Established and Emerging Languages in the Erlang Ecosystem
  2. 2. Let’s talk about computers.
  3. 3. many processors
  4. 4. in a network
  5. 5. inside an even bigger network
  6. 6. and none of it’s reliable
  7. 7. and also it’s spread across the globe
  8. 8. Our challenge as engineers is to hide the complicated details of all of this.
  9. 9. Let’s talk about Erlang. BEAM
  10. 10. Bogdan/jörn’s Erlang Abstract Machine
  11. 11. Concurrent
  12. 12. Concurrent Soft Real-Time
  13. 13. Concurrent Soft Real-Time Throughput Optimized
  14. 14. Concurrent Soft Real-Time Throughput Optimized Embeddable
  15. 15. So we should all start using Erlang right away, yes?
  16. 16. Well…
  17. 17. Let’s talk about style.
  18. 18. Miles Davis
  19. 19. Miles Davis cool
  20. 20. Miles Davis cool spare
  21. 21. Miles Davis cool spare deliberate
  22. 22. Miles Davis cool spare deliberate flawless
  23. 23. Miles Davis Sought to make an individual, new sound.
  24. 24. John Coltrane
  25. 25. John Coltrane avant guard
  26. 26. John Coltrane avant guard complex
  27. 27. John Coltrane avant guard complex chaotic
  28. 28. John Coltrane avant guard complex chaotic blemished
  29. 29. John Coltrane Sought the transcendent through music.
  30. 30. Thelonious Monk
  31. 31. Thelonious Monk unorthodox
  32. 32. Thelonious Monk unorthodox eccentric
  33. 33. Thelonious Monk unorthodox eccentric discordant
  34. 34. Thelonious Monk unorthodox eccentric discordant perfect
  35. 35. Thelonious Monk Made music like a fish swims in water
  36. 36. I’m going to compare programming languages.
  37. 37. These languages are not so dissimilar.
  38. 38. This is not a life or death matter.
  39. 39. This is a matter of right tool, right job.
  40. 40. Every language has an intrinsic philosophy of “good software”.
  41. 41. The language designers’ choices influence what a language is most naturally useful for.
  42. 42. Sometimes a design goal is explicit.
  43. 43. Erlang
  44. 44. Soft real-time, concurrent and fault tolerant systems.
  45. 45. Subsystems may fail but the service as a whole remains online.
  46. 46. Failures cause sub-system restarts.
  47. 47. Restarts put the system back in a well-known state: prefer faults over error handling.
  48. 48. Let it crash!
  49. 49. Language features make crashes more likely.
  50. 50. Pattern Matching No assignments:
  51. 51. Failed matches cause crashes.
  52. 52. Process Linking
  53. 53. Faults cascade up the process hierarchy.
  54. 54. Traps exist to survive child crashes but they are not on by default.
  55. 55. Strict process isolation.
  56. 56. State changes are effected only through message passing.
  57. 57. Processes are sequential internally, concurrent to one another.
  58. 58. LFELisp Flavored Erlang
  59. 59. Maintains semantic equivalence to Erlang.
  60. 60. Lisp-2, Macros & Homoiconicity
  61. 61. A REPL, not just a shell.
  62. 62. Erlang, in Lisp Clothing
  63. 63. Let it crash!
  64. 64. Joxa
  65. 65. Lisp-1, Macros & Homoiconicity
  66. 66. A lisp that happens to run on BEAM
  67. 67. Elixir
  68. 68. Solves the “Expression” problem
  69. 69. Protocols
  70. 70. Streams / Iterables
  71. 71. Infix Operators
  72. 72. Multiple function invocation styles
  73. 73. Metaprogramming
  74. 74. Multi-Assignments
  75. 75. Pattern Matching is non- default. Must use a prefix character to match.
  76. 76. Defaults callbacks for OTP Behaviours
  77. 77. Which of these languages are production ready?
  78. 78. What’s your risk tolerance?
  79. 79. LFE 367 commits August 22, 2008 updated weekly 14 contributors
  80. 80. Joxa 470 commits November 25, 2011 updated monthly 8 contributors
  81. 81. Elixir 7618 commits January 9, 2011 updated daily 168 contributors
  82. 82. Erlang 14,273 commits Estd.1986 updated daily 227 contributors
  83. 83. Complexity
  84. 84. Complexity Erlang
  85. 85. Complexity Erlang LFE
  86. 86. Complexity Erlang ElixirLFE
  87. 87. Software projects go through three stages: ! • exploration • stable development • maintenance
  88. 88. Experimentation Stable Development Maintenance
  89. 89. Different phases of the life-cycle express different needs.
  90. 90. Experimental: “Move fast, break stuff.”
  91. 91. Stable: “Go fast and mostly work.”
  92. 92. Maintenance: “Move slow, build things.”
  93. 93. “Expressivity”, which is a boon while prototyping, can be a curse in more stable environments.
  94. 94. “Intentional” languages may be too cumbersome in an environment of complete unknowns.
  95. 95. Complexity Erlang ElixirLFE
  96. 96. C++ Erlang ElixirLFE
  97. 97. None of the BEAM languages abandon what makes Erlang great (especially not Erlang).
  98. 98. Elixir targets the experimental, very beginnings of stable.
  99. 99. LFE targets the tail end of experimental, beginning to mid of stable.
  100. 100. Erlang is a stable and maintenance stage sort of language.
  101. 101. Experimentation Stable Development Maintenance
  102. 102. Elixir LFE Erlang
  103. 103. Questions? <3
  104. 104. Thank you! @bltroutwine

×