Elixir Miłości

|> Jakub Gutkowski

Jakub Gutkowski

kuba@gutek.pl

wiele pytań, mało odpowiedzi

Co to jest Elixir?

to co ja wiedziałem:

it's bjutiful

// lisp
(defun fibonacci (n &optional (a 0) (b 1) (acc ()))
  (if (zerop n)
      (nreverse acc)
      (fibonacci (1- n) b (+ a b) (cons a acc))))

// clojure
(def fib-seq 
  ((fn rfib [a b] 
     (lazy-seq (cons a (rfib b (+ a b)))))
   0 1))

// JavaScript ---- simple... but worst possible solution :)
function fibonacci(num) {
  if (num <= 1) return 1;

  return fibonacci(num - 1) + fibonacci(num - 2);
}

// elixir
defmodule Fib do 
  def fib(0) do 0 end
  def fib(1) do 1 end
  def fib(n) do fib(n-1) + fib(n-2) end
end

a tego już nie koniecznie wiedziałem:

dynamiczny

funkcyjny

ruby syntax like

język programowania

bazujący na maszynie

wirtualnej Erlanga

BEAM

Erlang?

to co ja wiedziałem:

|> Wymyślony dla centralek telefonicznych

|> Sprawdzony w boju

|> Wykorzystywany przez:

      |> Amazon (SimpleDB)

      |> FB (messages)

      |> WhatsApp (FB)

      |> Ericsson | T-Mobile | Motorola

      |> RabbitMQ

      |> CouchDB

      |> Riak

to co chciałbym wiedzieć:

30 lat na rynku

|> Odśmiecanie pamięci

|> Podmianę kodu w locie, bez zatrzymywania systemu

|> Obliczenia rozproszone (distributed computing)

|> Przetważanie współbieżne (concurrency)

|> Dużą dostępność, aplikacje działające non stop

|> Fault tolerant

|> W zależności od źródeł: Aktor Model || a la Aktor Model

 

PS.: Aplikacje dążą do tego by mieć taki mikroservice model jak ma erlang, a dokłądniej, każdy soft co chce mieć microservices implementuje tak jakby erlanga...

Oferuje

Co z tego ma Elixir?

WSZYSTKO

OTP?

Open Telecom Platform

to co ja sądziłem:

|> Zbiór bibliotek

|> Zbiór narzędzi

|> Zbiór modułów

to czym to jest:

Framework o niefortunej nazwie

Jak rozpocząć zabawę z Elixir?

mac

win

brew update
brew install elixir
cinst elixir

mix

|> scaffolding

|> a la yeoman

|> a la dotnet (core)

iex

REPL

jest i debugger

jest i diagnostyka

edytory

|> cokolwiek lub

|> Atom

|> VS Code

|> Sublime

|> Vim

|> Emacs

3 Cechy Elixira

czyli to co mogło mi być powiedziane i byłoby pozamiatane

photo: Shane Willis

Metaprogramming

pattern matching

==

(JavaScript)

(Elixir)

3 Zasady

które musiałem zrozumieć i wyciągnąć przed nawias, a które spowalniały moją naukę (zakręty)

rekurencja wszędzie

brzydki kod? coś nie tak

if(x > 100) do
    "old"
else
    if(x > 80) do
        "quite old"
    else
        if(x > 60) do
            "still young"
        else
            if(x > 40) do
                "young"
            else
                if(x > 20) do
                    "almost young"
                else
                    if(x > 10) do
                        "teenage"
                    else
                        "ekhm"
                    end
                end
            end
        end
    end
end

DEMA

=

pattern matching

immutability

podstawy

conditional

pipeline

wszystko coś zwraca

rekurencja

3 Idee

#1 Every day code simple and readable

#2 Explicit is better than Implicit

#3 Clear Code is better than concise code

Zasoby

Podsumowanie

|> język na bazie 30 lat doświadczenia Erlanga

|> wymaga zmiany sposobu myślenia

|> 3 cechy: immutability, meta, pattern matching

|> 3 zasady: no return, rekurencja, przejrzysty kod

|> jest śliczny

|> niski poziom wejścia w język (łatwo się zakochać)

Elixir Miłości v5

By Jakub Gutkowski

Elixir Miłości v5

Elixir oczami programisty JavaScript i C# - jaki jest tajemny przepis na zrozumienie języka, nauczenie się go i zakochanie się w nim. A wszystko dzięki 1 godzinie tygodniowo. Na sesji pokarzę na co zwrócić uwagę, co można pominąć a co koniecznie poznać. Oraz zademonstruje dlaczego Elixir jest narcyzem wśród języków programowania.

  • 1,031