11
Bilgisayar Mühendisliği Bölümü GYTE - Bilgisayar Mühendisliği Bölümü CSE 625 Parallel Computing Uğur Tılıkoğlu 131041018

Erlang - Uğur Tılıkoğlu

Embed Size (px)

Citation preview

Page 1: Erlang - Uğur Tılıkoğlu

Bilgisayar Mühendisliği Bölümü

GYTE - Bilgisayar Mühendisliği Bölümü

CSE 625Parallel Computing

Uğur Tılıkoğlu

131041018

Page 2: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang2

• Erlang– Problem– İhtiyaç– Özellikleri

• Giriş– Shell– Syntax

• Demo

İçerik

Page 3: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Erlang• Problem

– Ericsson AXE santralleri– Harika ürün– Kötü maintainance

3

Page 4: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Erlang• İhtiyaç

– İşlemler makul sürelerde tamamlanmalı– İşlemler birden fazla sistem üzerine dağıtılabilmeli– Sistem sürekliliği yıllarca devam etmeli– Sistem durdurulmadan yazılım bakımı

yapılabilmeli– Fault tolerant olmalı– Çok sayıda concurrent işlemi handle edebilmeli

4

Page 5: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Erlang• Özellikler

– Lightweight concurrency– Async communication– Scalable– No shared data– Immutability– Fault isolation and self healing– Continuos evolution of the system / dynamic code

updating

5

Page 6: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Giriş• Shell

6

Page 7: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Giriş• Shell

– Her komut . (dot) ile sonlanır– Komutu sonlandırmak için CTRL + G– Çıkış q().– Her açılan shell bir node’dur. Node başlarken

konfigüre etmek için erl executeable’ına ilgili parametreler verilir.

7

Page 8: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Giriş• Syntax

– Integers: 12 = 10#12 = 2#1100– Arithmetic: Floating point division: 10 / 3

3.33333~, Integer division: 10 div 3 3– Variable: büyük harfle başlar– Atoms: küçük harfle başlar– Strings: ‘foo bar’– Boolean: andalso, orelse– Equality: == (equal) , /= (not equal), =:= (exactly

equal) , =/= (exactly not equal) 1==1.0 true , 1=:=1.0 false

8

Page 9: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Giriş• Syntax

– Tuples: {a, b, c}– Lists: [a, b, c]– Recursion: List = [Element|List] or []. – Function:

• area({square, Side}) ->

Side * Side;

area({circle, Radius}) ->

math:pi() * Radius * Radius;

area(Other) ->

{error, unknown_object}.

9

Page 10: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Giriş• Syntax

– Module:• .erl extension

• -module(modulename).

• -export([methodname/argcount]). -export([area/1]).• Function list:• area({square, Side}) ->

Side * Side;

area({circle, Radius}) ->

math:pi() * Radius * Radius;

area(Other) ->

{error, unknown_object}

10

Page 11: Erlang - Uğur Tılıkoğlu

GYTE - Bilgisayar Mühendisliği Bölümü CSE625 Parallel Computing - Erlang

Demo• Distributed Environment

– erl -sname mynode1 -setcookie mynode1cookie– cd("C:/moduledirectory").– compile:file(modulename).– net_kernel:connect('node@othernode').– P=module:method('node@othernode').– P ! message

11