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
100
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
86
Keep It Simple Security (Symfony Cafe 28-01-2016)
cystbear
0
130
Erlang (GeekTalks)
cystbear
0
82
Clojure basics
cystbear
0
89
Erlang/N2O KNPMeetup
cystbear
0
170
Symfony Best Practices and beyond
cystbear
1
240
DDD on example of Symfony (SymfonyCamp UA 2014)
cystbear
3
930
MongoDB KNPLabs GeekTime
cystbear
1
95
DDD in PHP, on example of Symfony
cystbear
10
4.6k
Other Decks in Programming
See All in Programming
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
770
1B+ /day規模のログを管理する技術
broadleaf
0
120
A2UI という光を覗いてみる
satohjohn
1
170
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
Lessons from Spec-Driven Development
simas
PRO
0
230
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.4k
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
400
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
610
Oxcを導入して開発体験が向上した話
yug1224
4
350
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
370
How STYLIGHT went responsive
nonsquared
100
6.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
It's Worth the Effort
3n
188
29k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Navigating Team Friction
lara
192
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Music & Morning Musume
bryan
47
7.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
230
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
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