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

Why and how to try Elixir and Erlang/OTP?

Why and how to try Elixir and Erlang/OTP?

What is Erlang and Elixir? Why is it worth to at least try them? How to try them and how to learn a new programming language?

Avatar for Szymon Jeż

Szymon Jeż

April 15, 2015
Tweet

More Decks by Szymon Jeż

Other Decks in Programming

Transcript

  1. Erlang (/ˈɜrlæŋ/ ER-lang) is a general-purpose concurrent, garbage-collected programming language

    and runtime system. The sequential subset of Erlang is a functional language, with eager evaluation, single assignment, and dynamic typing. It was designed by Ericsson to support distributed, fault-tolerant, soft-real- time, non-stop applications. It supports hot swapping, so that code can be changed without stopping a system. Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance.
  2. OTP

  3. OTP is set of Erlang libraries and design principles providing

    middle-ware to develop these systems. It includes its own distributed database, applications to interface towards other languages, debugging and release handling tools.
  4. Elixir is a dynamic, functional language designed for building scalable

    and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain. Its principles are compatibility, productivity and extensibility.
  5. „When you find yourself on the side of majority, it's

    time to pause and reflect” — Mark Twain
  6. “Those who know nothing of foreign languages know nothing of

    their own.” ‒ Johann Wolfgang von Goethe
  7. Functional Programming Can make programs easier to write and maintain.

    No loops Few ifs Explicitness Less coupling Problem |> Solution |> Presentation
  8. (...) I know the feeling. Gut feeling precedes logic. I

    know when things are right, I don’t know how or why I know, but the explanation of why things are right often comes weeks or years later. Malcolm Gladwell in his book “Blink: The Power of Thinking Without Thinking” talks about this. Experts in a particular field can often instantly know that something is right, but they can’t explain why. – Joe Armstrong http://joearms.github.io/2013/05/31/a-week- with-elixir.html
  9. Some Numbers 4 years in development 1.0 since IX 2014

    6 books available few more coming 1 conference 2 coming tens of meetups 1M hex downloads rapid growth
  10. For sure get to know Erlang, OTP, EVM (BEAM) to

    be able to work well with Elixir
  11. Selection „Material matters most” What you learn is more important

    than how you learn. Spend time learning about the available material. Find the best book for your level.
  12. Sequencing One thing at a time. Code kata Not to

    complicated, so you cant lose yourself. First the basics. {{theory, exercise} loop, project} loop theory – small chunks, low/mid energy exercise – medium chunks, high energy projects – medium/big hunks, low energy theory – BOOKS, tutorials, videos, articles, presentations, courses, source code I recommend using books. They can do D.S.S. quite good.
  13. Sequencing Examples: · Read one book. Do projects. · Read

    book while doing exercises. Do project. · Do book while doing a project. …Then read more. While learning be notDRY™ Do Repeat Yourself + Get Your Hands Wet
  14. Stakes “Being afraid of loosing something is more motivating than

    the hope of gaining something.” So... put something on stake!
  15. Stakes e.g. “I bet 1000$ that I will finish this

    book this year and do all the exercises and projects.” “Do a talk about Elixir and Erlang every 2 months or donate 100$ somewhere you would better not.”
  16. Aim high => Excitement => Energy => Fail? Failing big

    brings you further than failing small.