Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Welcome to Erlang

Slide 3

Slide 3 text

cystbear Erlanger Symfony expert MongoDB adept OSS doer https://twitter.com/1cdecoder https://github.com/cystbear http://trinity.ck.ua/

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

HOTCODE 2013 https://twitter.com/5ht https://synrc.com/ Maxim Sokhatskiy

Slide 6

Slide 6 text

Time to change something

Slide 7

Slide 7 text

History

Slide 8

Slide 8 text

History https://www.youtube.com/watch?

Slide 9

Slide 9 text

Specific use cases Non OOP paradigm Naive syntax No so big community Lack of libs Pros / Cons https://www.erlang-solutions.com/ https://synrc.com/ https://github.com/tapsters https://github.com/erlangbureau

Slide 10

Slide 10 text

Low level thinking! Functional Fast Robust Expressive syntax Endless running apps Update code on a fly Own Scheduler Processes based architecture Supervisor tree No shared memory Pros / Cons

Slide 11

Slide 11 text

Hey, did you heard about FP?

Slide 12

Slide 12 text

High order functions Lambda functions Separation data and functions Immutable Lazy Tail recursion Algebraic data types Pattern matching Functional https://twitter.com/nikitonsky http://tonsky.me/talks/2015-frontendconf/ http://tonsky.me/talks/2015-codefest/

Slide 13

Slide 13 text

Performance http://slides.com/maximsokhatsky/n2o

Slide 14

Slide 14 text

Scheduler http://habrahabr.ru/post/128772/ http://habrahabr.ru/post/260065/

Slide 15

Slide 15 text

Basics Integer 42 Float 4.2 aka double Atom ok Binary <<"Erlang-powa">> Reference #Ref<0.0.0.29> Pid <0.0.42> Port #Port<0.42> Fun #Fun

Slide 16

Slide 16 text

Basics2 List [<<42,1,0,90>>, 1, ok] Tuple {<0.0.16>, 107, 42, ["madness", true]} we can force lists type and typify turples named tuples =:= records

Slide 17

Slide 17 text

Example -module(fib). -export([fib/1]). fib(0) -> 0; fib(1) -> 1; fib(N) -> fib(N - 1) + fib(N - 2).

Slide 18

Slide 18 text

Example -module(fib). -export([fib/1]). fib(N) when N > 0 -> fib(N, 1, 0, 1). fib(1, _, _, _) -> 1; fib(2, _, _, _) -> 1; fib(N, N, _, Prev) -> Prev; fib(N, C, Prev2, Prev) -> fib(N, C+1, Prev, Prev2+Prev).

Slide 19

Slide 19 text

Example QuickSort qsort([]) -> []; qsort([X|Xs]) -> qsort([Y || Y<-Xs, Y <= X]) ++ [X] ++ qsort([Y || Y<-Xs, Y > X]).

Slide 20

Slide 20 text

Application Examples Web Sites Rest Services Video Streaming Chats RabbitMQ Riak, CouchDB, Hibari, KAI, LeoFS, Mnesia ejabberd Cowboy Wings 3D PrivatBank Github Pages / Gist

Slide 21

Slide 21 text

Companies

Slide 22

Slide 22 text

Future

Slide 23

Slide 23 text

Cherkassy –> fprog https://www.facebook.com/groups/Cherkassy.fprog/

Slide 24

Slide 24 text

No content