Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
87
Keep It Simple Security (Symfony Cafe 28-01-2016)
cystbear
0
140
Erlang (GeekTalks)
cystbear
0
82
Clojure basics
cystbear
0
91
Erlang/N2O KNPMeetup
cystbear
0
170
Symfony Best Practices and beyond
cystbear
1
250
DDD on example of Symfony (SymfonyCamp UA 2014)
cystbear
3
930
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
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.6k
XHTMLが残したもの
yosuke_furukawa
PRO
2
450
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
130
ソフトウェアラスタライザ
fadis
1
790
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
560
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
Intent as Code
shoppingjaws
2
370
アクセシビリティから考える情報設計
high_g_engineer
0
310
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
業務時間外もAIに働いてもらう話
colorful12
3
10k
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
880
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
870
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Claude Code のすすめ
schroneko
67
230k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building Adaptive Systems
keathley
44
3.2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
How to make the Groovebox
asonas
2
2.4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
340
Large-scale JavaScript Application Architecture
addyosmani
515
110k
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