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 &
ELIXIR
Established
and
Emerging
Languages in
the Erlang
Ecosystem
Let’s talk about computers.
many
processors
in a
network
inside an
even
bigger
network
and none
of it’s
reliable
and also
it’s spread
across the
globe
Our challenge as
engineers is to hide
the complicated
details of all of this.
Let’s talk about Erlang.
BEAM
Bogdan/jörn’s
Erlang
Abstract
Machine
Concurrent
Concurrent
Soft Real-Time
Concurrent
Soft Real-Time
Throughput Optimized
Concurrent
Soft Real-Time
Throughput Optimized
Embeddable
So we should all
start using Erlang
right away, yes?
Well…
Let’s talk about style.
Miles Davis
Miles Davis
cool
Miles Davis
cool
spare
Miles Davis
cool
spare
deliberate
Miles Davis
cool
spare
deliberate
flawless
Miles Davis
Sought to make
an individual,
new sound.
John
Coltrane
John
Coltrane
avant guard
John
Coltrane
avant guard
complex
John
Coltrane
avant guard
complex
chaotic
John
Coltrane
avant guard
complex
chaotic
blemished
John
Coltrane
Sought the
transcendent
through music.
Thelonious
Monk
Thelonious
Monk
unorthodox
Thelonious
Monk
unorthodox
eccentric
Thelonious
Monk
unorthodox
eccentric
discordant
Thelonious
Monk
unorthodox
eccentric
discordant
perfect
Thelonious
Monk
Made music
like a fish
swims in
water
I’m going to
compare
programming
languages.
These
languages
are not so
dissimilar.
This is not a
life or death
matter.
This is a
matter of right
tool, right job.
Every language has an intrinsic
philosophy of “good software”.
The language
designers’ choices
influence what a
language is most
naturally useful for.
Sometimes a design
goal is explicit.
Erlang
Soft real-time,
concurrent and
fault tolerant
systems.
Subsystems may
fail but the
service as a
whole remains
online.
Failures cause
sub-system
restarts.
Restarts put the
system back in a
well-known state:
prefer faults over
error handling.
Let it crash!
Language features make
crashes more likely.
Pattern Matching
No assignments:
Failed matches
cause crashes.
Process
Linking
Faults cascade up the
process hierarchy.
Traps exist to survive
child crashes but they
are not on by default.
Strict process
isolation.
State changes are effected
only through message
passing.
Processes are sequential
internally, concurrent to one
another.
LFELisp Flavored Erlang
Maintains
semantic
equivalence to
Erlang.
Lisp-2, Macros
&
Homoiconicity
A REPL,
not just a
shell.
Erlang,
in Lisp
Clothing
Let it crash!
Joxa
Lisp-1, Macros
&
Homoiconicity
A lisp that
happens
to run on
BEAM
Elixir
Solves the
“Expression”
problem
Protocols
Streams /
Iterables
Infix
Operators
Multiple function
invocation styles
Metaprogramming
Multi-Assignments
Pattern Matching is non-
default. Must use a prefix
character to match.
Defaults
callbacks
for OTP
Behaviours
Which of these languages
are production ready?
What’s your risk
tolerance?
LFE
367 commits
August 22, 2008
updated weekly
14 contributors
Joxa
470 commits
November 25, 2011
updated monthly
8 contributors
Elixir
7618 commits
January 9, 2011
updated daily
168 contributors
Erlang
14,273 commits
Estd.1986
updated daily
227 contributors
Complexity
Complexity
Erlang
Complexity
Erlang LFE
Complexity
Erlang ElixirLFE
Software projects go
through three stages:
!
• exploration
• stable development
• maintenance
Experimentation
Stable Development
Maintenance
Different phases
of the life-cycle
express different
needs.
Experimental:
“Move fast,
break stuff.”
Stable:
“Go fast and
mostly work.”
Maintenance:
“Move slow,
build things.”
“Expressivity”,
which is a boon while
prototyping, can be
a curse in more
stable environments.
“Intentional”
languages may be
too cumbersome in
an environment of
complete unknowns.
Complexity
Erlang ElixirLFE
C++
Erlang
ElixirLFE
None of the BEAM
languages abandon
what makes Erlang
great (especially
not Erlang).
Elixir targets the
experimental,
very beginnings
of stable.
LFE targets the
tail end of
experimental,
beginning to mid of
stable.
Erlang is a stable
and maintenance
stage sort of
language.
Experimentation
Stable Development
Maintenance
Elixir
LFE
Erlang
Questions?
<3
Thank you!
@bltroutwine
Upcoming SlideShare
Loading in …5
×

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

7,587 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
  • Be the first to comment

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

×