Your SlideShare is downloading. ×
erlang 101
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

erlang 101

609
views

Published on

Erlang 101 giriş semineri istanbul hackerspace

Erlang 101 giriş semineri istanbul hackerspace

Published in: Technology, News & Politics

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
609
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
1
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Erlang 101 Istanbul Hacker Space https://istanbulhs.org/ 25 Kasim 2012 Gokhan Boranalp gokhan@zetaops.com
  • 2. ● Nereden nereye. ○ Tarihçe ve şimdiki durum. ● Dil ● Önemli Noktalar ● Kullananlar ● Made with Erlang ● Sorular
  • 3. Tarihçe
  • 4. ● SHARED MEMORY WITH LOCKS ● SOFTWARE TRANSACTIONAL MEMORY (STM) ● FUTURES, PROMISES, AND SIMILAR ● MESSAGE PASSING Process Modelleri
  • 5. Karakteristik Özellikler ■ Message Passing ■ Dynamic typed ■ Actor model ■ Share Nothing ■ Immutable Objects
  • 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. 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. 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. 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. Dil Pids (Process Identifiers) self(). <0.31.0> Ports #Port<0.472>. References 5> make_ref(). #Ref<0.0.0.42>
  • 11. Noktalama ○ (.) when hariç herşeyi sonlandir ○ (;) koşulu sonlandır ○ (,) ifadeyi (expressions) sonlandır
  • 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. List Operations
  • 14. List Operations
  • 15. Anonymous Functions
  • 16. Functions
  • 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. 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. spawn ile yeni bir process yaratmak Pid = spawn(ex3,activity,[Joe,75,1024]) activity(Joe,75,1024)
  • 20. Asenkron mesajlar
  • 21. hard core concurrency
  • 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. process creation times
  • 24. message passing times
  • 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. process'ler birbirine bağlı çalışabilir!
  • 27. proses hata kontrolü - Proses sonlandığında, bağlı tüm proseslere exit sinyali gönderilir.
  • 28. hata kontrolü (2) - Exit sinyalleri "tuzaklanarak" (trap) messages şeklinde alınabilir.
  • 29. Supervisors & Workers
  • 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. 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. 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. Transparent Distribution - başka bir bilgisayara prosesler arası mesaj gönderimi, aynı bilgisayarda mesaj gönderimi kadar kolaydır.
  • 34. Simple RPC
  • 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. 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. Erlang Önemli Noktalar ● Declarative ● Concurrency ● Soft real-time ● Robustness ● Distribution ● Hot code loading ● External Interfaces ● Portability ○ Any UNIX ○ Windows ○ VxWorks etc.
  • 38. Systems Overview
  • 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. 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. 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. Kullananlar ● Amazon Web Servisleri - SQS ve SimpleDB ● Facebook, chat ● Twitter ● Mochimedia ● del.icio.us / Yahoo ● T-Mobile ● Telia ● Bluetail/Alteon/Nortel ● Github
  • 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. 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. Kaynaklar http://en.wikipedia.org/wiki/Abstraction_%28computer_science%29 http://is.gd/xHWvZ3 http://www.erlang.org http://learnyousomeerlang.com/

×