Your SlideShare is downloading. ×
0
Erlang 101
Istanbul Hacker Space
https://istanbulhs.org/
25 Kasim 2012
Gokhan Boranalp
gokhan@zetaops.com
● Nereden nereye.
○ Tarihçe ve şimdiki durum.
● Dil
● Önemli Noktalar
● Kullananlar
● Made with Erlang
● Sorular
Tarihçe
● SHARED MEMORY WITH LOCKS
● SOFTWARE TRANSACTIONAL MEMORY
(STM)
● FUTURES, PROMISES, AND SIMILAR
● MESSAGE PASSING
Proces...
Karakteristik Özellikler
■ Message Passing
■ Dynamic typed
■ Actor model
■ Share Nothing
■ Immutable Objects
Dil
1> io:format("Naber dunya~n").
Naber dunya
ok
2> io:format("Naber, ~s!~n", [kanka]).
Naber, kanka!
ok
- ~s = %s printf...
Dil
Atoms
- true, false, test_me, kunthar@local, 'EXIT'
Integers
- 10, -200, 12345678909999999999999999999
- 16#FFffFFff=4...
Dil
Tuples
- {1, 2, 3}
{bir, iki, uc, dort} {buradan, "IHS", "sizi selamlar"}
{complex, {nested, "structure", {here}}}
Lis...
Dil
String (list of ASCII codes)
"merhaba" = [$m, $e, $r, $h, $a, $b, $a] = [109,101,114,104,97,98,97]
Binaries
<<0, 1, 2,...
Dil
Pids (Process Identifiers)
self().
<0.31.0>
Ports
#Port<0.472>.
References
5> make_ref().
#Ref<0.0.0.42>
Noktalama
○ (.) when hariç herşeyi sonlandir
○ (;) koşulu sonlandır
○ (,) ifadeyi (expressions) sonlandır
List Comprehensions
{2n : n in L}
in Erlang:
○ brackets ({}) become square brackets ([]),
○ the colon (:) becomes two pipe...
List Operations
List Operations
Anonymous Functions
Functions
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
spawn ile yeni bir process yaratmak
Pid = spawn(ex3,activity,[Joe,75,1024])
activity(Joe,75,1024)
Asenkron mesajlar
hard core concurrency
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
process creation times
message passing times
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
process'ler birbirine bağlı çalışabilir!
proses hata kontrolü
- Proses sonlandığında, bağlı tüm proseslere exit sinyali
gönderilir.
hata kontrolü (2)
- Exit sinyalleri "tuzaklanarak" (trap) messages şeklinde alınabilir.
Supervisors & Workers
Error handling
● No global variables -- fewer side-effects
● No direct memory access -- no pointer errors
● No malloc/free...
Debugging and Profiling Support
● Symbolic crash reports
○ Usually sufficient info to locate bugs within minutes
● Built-i...
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
Transparent Distribution
- başka bir bilgisayara prosesler arası mesaj gönderimi, aynı
bilgisayarda mesaj gönderimi kadar ...
Simple RPC
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● Exter...
Systems Overview
Erlang/OTP (Open Telecom Platform)
● Middleware for Erlang development
● Designed for fault tolerance and portability
● Be...
OTP Behaviors
● "A formalization of design patterns"
○ A framework + generic code to solve a common problem
○ Built-in sup...
Büyük Projelerde Erlang
● Easy to build a first runnable application
● Easy to debug
● Easy to maintain
● Very strong supp...
Kullananlar
● Amazon Web Servisleri - SQS ve SimpleDB
● Facebook, chat
● Twitter
● Mochimedia
● del.icio.us / Yahoo
● T-Mo...
Made with Erlang
○ Apache CouchDB – document-based DB with REST
○ Disco – Map/Reduce framework for Erlang
○ Fuzed – Generi...
Good fit for
● Irregular concurrency
○ Task-level parallelism
○ Fine-grained parallelism
● Network servers
● Distributed s...
Kaynaklar
http://en.wikipedia.org/wiki/Abstraction_%28computer_science%29
http://is.gd/xHWvZ3
http://www.erlang.org
http:/...
Upcoming SlideShare
Loading in...5
×

erlang 101

659

Published on

Erlang 101 giriş semineri istanbul hackerspace

Published in: Technology, News & Politics
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
659
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "erlang 101"

  1. 1. Erlang 101 Istanbul Hacker Space https://istanbulhs.org/ 25 Kasim 2012 Gokhan Boranalp gokhan@zetaops.com
  2. 2. ● Nereden nereye. ○ Tarihçe ve şimdiki durum. ● Dil ● Önemli Noktalar ● Kullananlar ● Made with Erlang ● Sorular
  3. 3. Tarihçe
  4. 4. ● SHARED MEMORY WITH LOCKS ● SOFTWARE TRANSACTIONAL MEMORY (STM) ● FUTURES, PROMISES, AND SIMILAR ● MESSAGE PASSING Process Modelleri
  5. 5. Karakteristik Özellikler ■ Message Passing ■ Dynamic typed ■ Actor model ■ Share Nothing ■ Immutable Objects
  6. 6. Dil 1> io:format("Naber dunya~n"). Naber dunya ok 2> io:format("Naber, ~s!~n", [kanka]). Naber, kanka! ok - ~s = %s printf C - ~n = n
  7. 7. Dil Atoms - true, false, test_me, kunthar@local, 'EXIT' Integers - 10, -200, 12345678909999999999999999999 - 16#FFffFFff=4294967295 - 16#FF= 255 - $A = 65 (ASCII kod A) Floats 3.14 -0.123 299792458.0 6.022137e23 6.6720e-11
  8. 8. Dil Tuples - {1, 2, 3} {bir, iki, uc, dort} {buradan, "IHS", "sizi selamlar"} {complex, {nested, "structure", {here}}} Lists [] [1, 2, 3] [bir, iki, uc] [[1,2,3],[4,5,6]] [{yarin, "biraz oku"}, {sonra, "yuruyus yap"}, {enson, "otur da yaz"}]
  9. 9. Dil String (list of ASCII codes) "merhaba" = [$m, $e, $r, $h, $a, $b, $a] = [109,101,114,104,97,98,97] Binaries <<0, 1, 2, ..., 255>> <<109,101,114,104,97,98,97>> = <<"merhaba">> Binaries with Bit Syntax <<1:1,32787:15>> = 2#1111111111111111 Diger Data Tipleri Funs (lambda expression or closure) Function-as-data-object
  10. 10. Dil Pids (Process Identifiers) self(). <0.31.0> Ports #Port<0.472>. References 5> make_ref(). #Ref<0.0.0.42>
  11. 11. Noktalama ○ (.) when hariç herşeyi sonlandir ○ (;) koşulu sonlandır ○ (,) ifadeyi (expressions) sonlandır
  12. 12. List Comprehensions {2n : n in L} in Erlang: ○ brackets ({}) become square brackets ([]), ○ the colon (:) becomes two pipes (||) ○ and the word 'in' becomes the arrow (<-). 1> [2*N || N <- [1,2,3,4]]. [2,4,6,8]
  13. 13. List Operations
  14. 14. List Operations
  15. 15. Anonymous Functions
  16. 16. Functions
  17. 17. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Functional programming language ○ High abstraction level ○ Pattern matching ○ Readable programs
  18. 18. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Solid concurrency model ○ Scales to handle complex concurrency ○ Simple abstractions Örnekler
  19. 19. spawn ile yeni bir process yaratmak Pid = spawn(ex3,activity,[Joe,75,1024]) activity(Joe,75,1024)
  20. 20. Asenkron mesajlar
  21. 21. hard core concurrency
  22. 22. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Lightweight processes ○ Fast message passing ○ Response times in the order of milliseconds efficient garbage collection Oynat Uğurcuğum
  23. 23. process creation times
  24. 24. message passing times
  25. 25. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Simple and consistent error recovery ○ Supervision hierarchies Örnekler
  26. 26. process'ler birbirine bağlı çalışabilir!
  27. 27. proses hata kontrolü - Proses sonlandığında, bağlı tüm proseslere exit sinyali gönderilir.
  28. 28. hata kontrolü (2) - Exit sinyalleri "tuzaklanarak" (trap) messages şeklinde alınabilir.
  29. 29. Supervisors & Workers
  30. 30. Error handling ● No global variables -- fewer side-effects ● No direct memory access -- no pointer errors ● No malloc/free bugs ● Solid concurrency model -- reduces synchronization problems, reduces the state space (simpler programs) ● Fault isolation -- memory-protected lightweight processes ● Built-in error recovery support -- more consistency Concurrency & Fault Tolerance were designed into the language from the start!
  31. 31. Debugging and Profiling Support ● Symbolic crash reports ○ Usually sufficient info to locate bugs within minutes ● Built-in trace support ○ Function calls (ability to filter on module name, function and args) ○ Messages (+ sequence trace) ○ Process events (context switch, spawn, link, exit) ○ Garbage collections ○ Optionally with timestamps (can be used for profiling, benchmarks) ○ Trace to process, file, or port (network socket) ○ Also available on live systems
  32. 32. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Explicit or transparent distribution ○ Network-aware runtime system Örnekler
  33. 33. Transparent Distribution - başka bir bilgisayara prosesler arası mesaj gönderimi, aynı bilgisayarda mesaj gönderimi kadar kolaydır.
  34. 34. Simple RPC
  35. 35. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Easily change code in a running system ○ Enables non-stop operation ○ Simplifies testing
  36. 36. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Ports to the outside world ○ behave as Erlang processes - Erlang Port Drivers
  37. 37. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Any UNIX ○ Windows ○ VxWorks etc.
  38. 38. Systems Overview
  39. 39. Erlang/OTP (Open Telecom Platform) ● Middleware for Erlang development ● Designed for fault tolerance and portability ● Behaviors: A formalization of design patterns ● Components ○ Error handling, reporting and logging ○ Mnesia, distributed real-time database management system CORBA, IDL Compiler, Java & C Interface Support ○ HTTP Server + Client, FTP Client ○ SNMP Agent + ASN.1 Compiler ○ H.248 ○ XML ○ ...
  40. 40. OTP Behaviors ● "A formalization of design patterns" ○ A framework + generic code to solve a common problem ○ Built-in support for debugging and software upgrade ○ Makes it easier to reason about the behavior of a program ● Examples of OTP behaviors application defines how an application is implemented supervisor used to write fault-tolerant supervision trees gen_server for writing client-server applications gen_event for writing event handlers gen_fsm for finite state machine programming
  41. 41. Büyük Projelerde Erlang ● Easy to build a first runnable application ● Easy to debug ● Easy to maintain ● Very strong support for fault tolerance ● Suitable for large systems/projects ● Great for prototyping ● Impressive performance/scalability in real applications Outstanding tool for test automation ● High programmer satisfaction
  42. 42. Kullananlar ● Amazon Web Servisleri - SQS ve SimpleDB ● Facebook, chat ● Twitter ● Mochimedia ● del.icio.us / Yahoo ● T-Mobile ● Telia ● Bluetail/Alteon/Nortel ● Github
  43. 43. Made with Erlang ○ Apache CouchDB – document-based DB with REST ○ Disco – Map/Reduce framework for Erlang ○ Fuzed – Generic clustering framework (Powerset) ○ Mochiweb – Fast lightweight web server framework (like Java Servlets for Erlang) ○ DHT – Distributed Key/Value Stores – 90% of all implementations in Erlang – Dynomite, Scalaris, etc. ○ Yaws web server ○ Cowboy ○ Nitrogen ○ RabbitMQ ○ Riak
  44. 44. Good fit for ● Irregular concurrency ○ Task-level parallelism ○ Fine-grained parallelism ● Network servers ● Distributed systems ● Middleware: ○ Parallel databases ○ Message Queue servers ● Soft Real-Time / Embedded applications ● Monitoring, control and testing tools
  45. 45. Kaynaklar http://en.wikipedia.org/wiki/Abstraction_%28computer_science%29 http://is.gd/xHWvZ3 http://www.erlang.org http://learnyousomeerlang.com/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×