Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Welcome to Erlang
Search
Oleg Zinchenko
June 25, 2015
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Welcome to Erlang
My First Erlang talk dedicated to beginners
Oleg Zinchenko
June 25, 2015
More Decks by Oleg Zinchenko
See All by Oleg Zinchenko
ORO Meetup #4
cystbear
0
88
Keep It Simple Security (Symfony Cafe 28-01-2016)
cystbear
0
140
Erlang (GeekTalks)
cystbear
0
89
Clojure basics
cystbear
0
93
Erlang/N2O KNPMeetup
cystbear
0
180
Symfony Best Practices and beyond
cystbear
1
250
DDD on example of Symfony (SymfonyCamp UA 2014)
cystbear
3
940
MongoDB KNPLabs GeekTime
cystbear
1
98
DDD in PHP, on example of Symfony
cystbear
10
4.6k
Other Decks in Programming
See All in Programming
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
golang-bob.pdf
iwatsukayura
0
130
Next.js: The final boss of Web Performance
guaca
0
210
SREの越境 / SRE Collaboration
y0hgi
2
310
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5k
AWSに止められる覚悟してますか?
morizo_1984
2
530
ChromeでローカルLLM
ryu1013
0
140
sbt 2.0: takeoff
eed3si9n
0
160
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
ActionController meets Protocol Buffers
sorah
0
440
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
490
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.6k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
HDC tutorial
michielstock
2
960
So, you think you're a good person
axbom
PRO
2
2.2k
The Pragmatic Product Professional
lauravandoore
37
7.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
Building the Perfect Custom Keyboard
takai
2
900
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Transcript
Welcome to Erlang
cystbear Erlanger Symfony expert MongoDB adept OSS doer https://twitter.com/1cdecoder https://github.com/cystbear
http://trinity.ck.ua/
None
HOTCODE 2013 https://twitter.com/5ht https://synrc.com/ Maxim Sokhatskiy
Time to change something
History
History https://www.youtube.com/watch?
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
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
Hey, did you heard about FP?
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/
Performance http://slides.com/maximsokhatsky/n2o
Scheduler http://habrahabr.ru/post/128772/ http://habrahabr.ru/post/260065/
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<erl_eval.6.82930912>
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
Example -module(fib). -export([fib/1, tail_fib/1]). fib(0) -> 0; fib(1) -> 1;
fib(N) -> fib(N - 1) + fib(N - 2).
Example tail_fib(N)-> tail_fib(N, 0, 0, 0). tail_fib(N, Acc, Prev, PrevPrev)
-> case Acc of N -> Prev + PrevPrev; 0 -> tail_fib(N, Acc + 1, 0, 0); 1 -> tail_fib(N, Acc + 1, 1, 0); _ -> tail_fib(N, Acc + 1, Prev + PrevPrev, Prev) end.
Example QuickSort qsort([]) -> []; qsort([X|Xs]) -> qsort([Y || Y<-Xs,
Y <= X]) ++ [X] ++ qsort([Y || Y<-Xs, Y > X]).
Application Examples Web Sites Rest Services Video Streaming Chats RabbitMQ
Riak, CouchDB, Hibari, KAI, LeoFS, Mnesia ejabberd Cowboy Wings 3D PrivatBank Github Pages / Gist
Future
Functional Thursday
None