SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
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
Process Modelleri
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 C
- ~n = n
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
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"}]
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
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 pipes (||)
○ and the word 'in' becomes the arrow (<-).
1> [2*N || N <- [1,2,3,4]].
[2,4,6,8]
List Operations
List Operations
Anonymous Functions
Functions
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
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
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
● External Interfaces
● Portability
○ Lightweight processes
○ Fast message passing
○ Response times in the order of
milliseconds efficient garbage
collection
Oynat Uğurcuğum
process creation times
message passing times
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● External Interfaces
● Portability
○ Simple and consistent error
recovery
○ Supervision hierarchies
Örnekler
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 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!
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
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
Transparent Distribution
- başka bir bilgisayara prosesler arası mesaj gönderimi, aynı
bilgisayarda mesaj gönderimi kadar kolaydır.
Simple RPC
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
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
Erlang Önemli Noktalar
● Declarative
● Concurrency
● Soft real-time
● Robustness
● Distribution
● Hot code loading
● External Interfaces
● Portability
○ Any UNIX
○ Windows
○ VxWorks etc.
Systems Overview
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
○ ...
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
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
Kullananlar
● Amazon Web Servisleri - SQS ve SimpleDB
● Facebook, chat
● Twitter
● Mochimedia
● del.icio.us / Yahoo
● T-Mobile
● Telia
● Bluetail/Alteon/Nortel
● Github
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
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
Kaynaklar
http://en.wikipedia.org/wiki/Abstraction_%28computer_science%29
http://is.gd/xHWvZ3
http://www.erlang.org
http://learnyousomeerlang.com/

Contenu connexe

Tendances

Cryptography and secure systems
Cryptography and secure systemsCryptography and secure systems
Cryptography and secure systemsVsevolod Stakhov
 
Benchmarking Apache Samza: 1.2 million messages per sec per node
Benchmarking Apache Samza: 1.2 million messages per sec per nodeBenchmarking Apache Samza: 1.2 million messages per sec per node
Benchmarking Apache Samza: 1.2 million messages per sec per nodeTao Feng
 
Avoiding Data Hotspots at Scale
Avoiding Data Hotspots at ScaleAvoiding Data Hotspots at Scale
Avoiding Data Hotspots at ScaleScyllaDB
 
Samza memory capacity_2015_ieee_big_data_data_quality_workshop
Samza memory capacity_2015_ieee_big_data_data_quality_workshopSamza memory capacity_2015_ieee_big_data_data_quality_workshop
Samza memory capacity_2015_ieee_big_data_data_quality_workshopTao Feng
 
Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...
Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...
Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...Alexander Krizhanovsky
 
On component interface
On component interfaceOn component interface
On component interfaceLaurence Chen
 
Distributed Postgres
Distributed PostgresDistributed Postgres
Distributed PostgresStas Kelvich
 
Experiences with Microservices at Tuenti
Experiences with Microservices at TuentiExperiences with Microservices at Tuenti
Experiences with Microservices at TuentiAndrés Viedma Peláez
 
Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...
Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...
Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...ScyllaDB
 
NPF scripting with Lua by Lourival Vieira Neto
NPF scripting with Lua by Lourival Vieira NetoNPF scripting with Lua by Lourival Vieira Neto
NPF scripting with Lua by Lourival Vieira Netoeurobsdcon
 
Temporal Performance Modelling of Serverless Computing Platforms - WoSC6
Temporal Performance Modelling of Serverless Computing Platforms - WoSC6Temporal Performance Modelling of Serverless Computing Platforms - WoSC6
Temporal Performance Modelling of Serverless Computing Platforms - WoSC6Nima Mahmoudi
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPCGuo Jing
 
A simple tool for debug (tap>)
A simple tool for debug (tap>)A simple tool for debug (tap>)
A simple tool for debug (tap>)Laurence Chen
 
Building your First gRPC Service
Building your First gRPC ServiceBuilding your First gRPC Service
Building your First gRPC ServiceJessie Barnett
 

Tendances (19)

ZFS Log Spacemap - Flushing Algorithm
ZFS Log Spacemap - Flushing AlgorithmZFS Log Spacemap - Flushing Algorithm
ZFS Log Spacemap - Flushing Algorithm
 
Zero mq logs
Zero mq logsZero mq logs
Zero mq logs
 
Cryptography and secure systems
Cryptography and secure systemsCryptography and secure systems
Cryptography and secure systems
 
Benchmarking Apache Samza: 1.2 million messages per sec per node
Benchmarking Apache Samza: 1.2 million messages per sec per nodeBenchmarking Apache Samza: 1.2 million messages per sec per node
Benchmarking Apache Samza: 1.2 million messages per sec per node
 
rspamd-hyperscan
rspamd-hyperscanrspamd-hyperscan
rspamd-hyperscan
 
rspamd-slides
rspamd-slidesrspamd-slides
rspamd-slides
 
Avoiding Data Hotspots at Scale
Avoiding Data Hotspots at ScaleAvoiding Data Hotspots at Scale
Avoiding Data Hotspots at Scale
 
Samza memory capacity_2015_ieee_big_data_data_quality_workshop
Samza memory capacity_2015_ieee_big_data_data_quality_workshopSamza memory capacity_2015_ieee_big_data_data_quality_workshop
Samza memory capacity_2015_ieee_big_data_data_quality_workshop
 
Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...
Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...
Tempesta FW: a FrameWork and FireWall for HTTP DDoS mitigation and Web Applic...
 
ZeroMQ with NodeJS
ZeroMQ with NodeJSZeroMQ with NodeJS
ZeroMQ with NodeJS
 
On component interface
On component interfaceOn component interface
On component interface
 
Distributed Postgres
Distributed PostgresDistributed Postgres
Distributed Postgres
 
Experiences with Microservices at Tuenti
Experiences with Microservices at TuentiExperiences with Microservices at Tuenti
Experiences with Microservices at Tuenti
 
Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...
Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...
Scylla Summit 2018: Rebuilding the Ceph Distributed Storage Solution with Sea...
 
NPF scripting with Lua by Lourival Vieira Neto
NPF scripting with Lua by Lourival Vieira NetoNPF scripting with Lua by Lourival Vieira Neto
NPF scripting with Lua by Lourival Vieira Neto
 
Temporal Performance Modelling of Serverless Computing Platforms - WoSC6
Temporal Performance Modelling of Serverless Computing Platforms - WoSC6Temporal Performance Modelling of Serverless Computing Platforms - WoSC6
Temporal Performance Modelling of Serverless Computing Platforms - WoSC6
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPC
 
A simple tool for debug (tap>)
A simple tool for debug (tap>)A simple tool for debug (tap>)
A simple tool for debug (tap>)
 
Building your First gRPC Service
Building your First gRPC ServiceBuilding your First gRPC Service
Building your First gRPC Service
 

En vedette

Acik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta SistemleriAcik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta SistemleriGokhan Boranalp
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziGokhan Boranalp
 
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Gokhan Boranalp
 
Açık kaynak iş modeli nedir?
Açık kaynak iş modeli nedir?Açık kaynak iş modeli nedir?
Açık kaynak iş modeli nedir?Gokhan Boranalp
 
Comparing Cpp And Erlang For Motorola Telecoms Software
Comparing Cpp And Erlang For Motorola Telecoms SoftwareComparing Cpp And Erlang For Motorola Telecoms Software
Comparing Cpp And Erlang For Motorola Telecoms Softwarel xf
 
Kurumlar icin openstack rehberi
Kurumlar icin openstack rehberi Kurumlar icin openstack rehberi
Kurumlar icin openstack rehberi Gokhan Boranalp
 
Siz değil iş sizi nasıl bulur? GDG İzmir
Siz değil iş sizi nasıl bulur? GDG İzmir Siz değil iş sizi nasıl bulur? GDG İzmir
Siz değil iş sizi nasıl bulur? GDG İzmir Gokhan Boranalp
 

En vedette (8)

Acik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta SistemleriAcik Kaynak Kodlu Kurumsal Eposta Sistemleri
Acik Kaynak Kodlu Kurumsal Eposta Sistemleri
 
Riak ve RiakCS
Riak ve RiakCSRiak ve RiakCS
Riak ve RiakCS
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım Analizi
 
Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?Kak depolama stratejiniz nasıl olmalı?
Kak depolama stratejiniz nasıl olmalı?
 
Açık kaynak iş modeli nedir?
Açık kaynak iş modeli nedir?Açık kaynak iş modeli nedir?
Açık kaynak iş modeli nedir?
 
Comparing Cpp And Erlang For Motorola Telecoms Software
Comparing Cpp And Erlang For Motorola Telecoms SoftwareComparing Cpp And Erlang For Motorola Telecoms Software
Comparing Cpp And Erlang For Motorola Telecoms Software
 
Kurumlar icin openstack rehberi
Kurumlar icin openstack rehberi Kurumlar icin openstack rehberi
Kurumlar icin openstack rehberi
 
Siz değil iş sizi nasıl bulur? GDG İzmir
Siz değil iş sizi nasıl bulur? GDG İzmir Siz değil iş sizi nasıl bulur? GDG İzmir
Siz değil iş sizi nasıl bulur? GDG İzmir
 

Similaire à Erlang 101 for Istanbul Hacker Space

An End to Order (many cores with java, session two)
An End to Order (many cores with java, session two)An End to Order (many cores with java, session two)
An End to Order (many cores with java, session two)Robert Burrell Donkin
 
PGConf APAC 2018 - High performance json postgre-sql vs. mongodb
PGConf APAC 2018 - High performance json  postgre-sql vs. mongodbPGConf APAC 2018 - High performance json  postgre-sql vs. mongodb
PGConf APAC 2018 - High performance json postgre-sql vs. mongodbPGConf APAC
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional ProgrammerDave Cross
 
Languages formanandmachine
Languages formanandmachineLanguages formanandmachine
Languages formanandmachineGireesh Punathil
 
Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages
Sînică Alboaie - Programming for cloud computing Flows of asynchronous messagesSînică Alboaie - Programming for cloud computing Flows of asynchronous messages
Sînică Alboaie - Programming for cloud computing Flows of asynchronous messagesCodecamp Romania
 
Tips and Tricks for Increased Development Efficiency
Tips and Tricks for Increased Development EfficiencyTips and Tricks for Increased Development Efficiency
Tips and Tricks for Increased Development EfficiencyOlivier Bourgeois
 
Reactive Software Systems
Reactive Software SystemsReactive Software Systems
Reactive Software SystemsBehrad Zari
 
Benchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbersBenchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbersJustin Dorfman
 
Benchmarks, performance, scalability, and capacity what s behind the numbers...
Benchmarks, performance, scalability, and capacity  what s behind the numbers...Benchmarks, performance, scalability, and capacity  what s behind the numbers...
Benchmarks, performance, scalability, and capacity what s behind the numbers...james tong
 
Ledingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @LendingkartLedingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @LendingkartMukesh Singh
 
Testing data streaming applications
Testing data streaming applicationsTesting data streaming applications
Testing data streaming applicationsLars Albertsson
 
Bsdtw17: george neville neil: realities of dtrace on free-bsd
Bsdtw17: george neville neil: realities of dtrace on free-bsdBsdtw17: george neville neil: realities of dtrace on free-bsd
Bsdtw17: george neville neil: realities of dtrace on free-bsdScott Tsai
 
High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbWei Shan Ang
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsZhenxiao Luo
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
Erlang: Software for a Concurrent world
Erlang: Software for a Concurrent worldErlang: Software for a Concurrent world
Erlang: Software for a Concurrent worldArjan
 

Similaire à Erlang 101 for Istanbul Hacker Space (20)

Erlang OTP
Erlang OTPErlang OTP
Erlang OTP
 
An End to Order (many cores with java, session two)
An End to Order (many cores with java, session two)An End to Order (many cores with java, session two)
An End to Order (many cores with java, session two)
 
An End to Order
An End to OrderAn End to Order
An End to Order
 
PGConf APAC 2018 - High performance json postgre-sql vs. mongodb
PGConf APAC 2018 - High performance json  postgre-sql vs. mongodbPGConf APAC 2018 - High performance json  postgre-sql vs. mongodb
PGConf APAC 2018 - High performance json postgre-sql vs. mongodb
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
 
Languages formanandmachine
Languages formanandmachineLanguages formanandmachine
Languages formanandmachine
 
Full stack development
Full stack developmentFull stack development
Full stack development
 
Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages
Sînică Alboaie - Programming for cloud computing Flows of asynchronous messagesSînică Alboaie - Programming for cloud computing Flows of asynchronous messages
Sînică Alboaie - Programming for cloud computing Flows of asynchronous messages
 
Tips and Tricks for Increased Development Efficiency
Tips and Tricks for Increased Development EfficiencyTips and Tricks for Increased Development Efficiency
Tips and Tricks for Increased Development Efficiency
 
Introdução à Elixir
Introdução à ElixirIntrodução à Elixir
Introdução à Elixir
 
Reactive Software Systems
Reactive Software SystemsReactive Software Systems
Reactive Software Systems
 
Benchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbersBenchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbers
 
Benchmarks, performance, scalability, and capacity what s behind the numbers...
Benchmarks, performance, scalability, and capacity  what s behind the numbers...Benchmarks, performance, scalability, and capacity  what s behind the numbers...
Benchmarks, performance, scalability, and capacity what s behind the numbers...
 
Ledingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @LendingkartLedingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @Lendingkart
 
Testing data streaming applications
Testing data streaming applicationsTesting data streaming applications
Testing data streaming applications
 
Bsdtw17: george neville neil: realities of dtrace on free-bsd
Bsdtw17: george neville neil: realities of dtrace on free-bsdBsdtw17: george neville neil: realities of dtrace on free-bsd
Bsdtw17: george neville neil: realities of dtrace on free-bsd
 
High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodb
 
Machine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systemsMachine learning and big data @ uber a tale of two systems
Machine learning and big data @ uber a tale of two systems
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Erlang: Software for a Concurrent world
Erlang: Software for a Concurrent worldErlang: Software for a Concurrent world
Erlang: Software for a Concurrent world
 

Plus de Gokhan Boranalp

Zetaops ZOPS presentation
Zetaops ZOPS presentationZetaops ZOPS presentation
Zetaops ZOPS presentationGokhan Boranalp
 
Google Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGoogle Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGokhan Boranalp
 
ZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed SystemsZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed SystemsGokhan Boranalp
 
Zops intelligent platform
Zops intelligent platformZops intelligent platform
Zops intelligent platformGokhan Boranalp
 
Scrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimiScrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimiGokhan Boranalp
 

Plus de Gokhan Boranalp (10)

Zkernel
ZkernelZkernel
Zkernel
 
Zetaops ZOPS presentation
Zetaops ZOPS presentationZetaops ZOPS presentation
Zetaops ZOPS presentation
 
Gdg izmir kubernetes
Gdg izmir kubernetesGdg izmir kubernetes
Gdg izmir kubernetes
 
Google Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTEGoogle Cloud Platform Kubernetes Workshop IYTE
Google Cloud Platform Kubernetes Workshop IYTE
 
ZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed SystemsZCloud Consensus on Hardware for Distributed Systems
ZCloud Consensus on Hardware for Distributed Systems
 
Zops intelligent platform
Zops intelligent platformZops intelligent platform
Zops intelligent platform
 
Git 101
Git 101Git 101
Git 101
 
Scrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimiScrum ve Redmine ile yazılım projesi yönetimi
Scrum ve Redmine ile yazılım projesi yönetimi
 
Nosql veritabanlari
Nosql veritabanlariNosql veritabanlari
Nosql veritabanlari
 
Erlang web-frameworks
Erlang web-frameworksErlang web-frameworks
Erlang web-frameworks
 

Dernier

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Dernier (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Erlang 101 for Istanbul Hacker Space

  • 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
  • 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
  • 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]
  • 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)
  • 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
  • 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.
  • 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.
  • 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.
  • 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