Jakub Gutkowski PRO
Dad, husband, blogger, developer, geek. Loves to play with novelties, learn new languages and libraries, avid conference attender, passionate about meeting new people, always willing to help.
|> Jakub Gutkowski
kuba@gutek.pl
// 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
BEAM
|> Wymyślony dla centralek telefonicznych
|> Sprawdzony w boju
|> Wykorzystywany przez:
|> Amazon (SimpleDB)
|> FB (messages)
|> WhatsApp (FB)
|> Ericsson | T-Mobile | Motorola
|> RabbitMQ
|> CouchDB
|> Riak
|> 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...
WSZYSTKO
Open Telecom Platform
|> Zbiór bibliotek
|> Zbiór narzędzi
|> Zbiór modułów
brew update
brew install elixir
cinst elixir
|> scaffolding
|> a la yeoman
|> a la dotnet (core)
REPL
|> cokolwiek lub
|> Atom
|> VS Code
|> Sublime
|> Vim
|> Emacs
czyli to co mogło mi być powiedziane i byłoby pozamiatane
photo: Shane Willis
Metaprogramming
które musiałem zrozumieć i wyciągnąć przed nawias, a które spowalniały moją naukę (zakręty)
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
|> 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ć)
By Jakub Gutkowski
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.
Dad, husband, blogger, developer, geek. Loves to play with novelties, learn new languages and libraries, avid conference attender, passionate about meeting new people, always willing to help.