ERLANG PROGRAMOK TRANSZFORMÁCI CIÓJA ERLANG



Hasonló dokumentumok
KLIENS-SZERVER ALAPÚ ERLANG PROGRAMOK TRANSZFORMÁCIÓJA ERLANG OTP SÉMÁRA

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Oktatási segédlet 2014

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Kommunikáció. 3. előadás

Bevezetés a párhuzamos programozási koncepciókba

Funkcionális nyelvek Király, Roland

Elosztott rendszerekre implementált funkcionális nyelvek - PRML projekt

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék

Operációs rendszerek. Az X Window rendszer

9. MPI

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

alkalmazások az Intelligens otthon témában

Informatika 1 2. el adás: Absztrakt számítógépek

Web-fejlesztés NGM_IN002_1

III. Alapfogalmak és tervezési módszertan SystemC-ben

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Számítógépes Hálózatok. 5. gyakorlat

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Számítógépes Hálózatok GY 4.hét

Dr. Schuster György október 30.

MVC. Model View Controller

Elosztott adatbázis-kezelő formális elemzése

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

CORBA. Mi a CORBA? A CORBA felépítése

Operációs rendszerek. Bemutatkozás

Sony Ericsson X8 (Xperia) (RoadSync) beállítása Virtualoso levelezésre

Osztott rendszer. Osztott rendszer informális definíciója

Komponens modellek. 3. Előadás (első fele)

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

2018, Diszkrét matematika

SAP vállalatirányítási rendszer alapjai

A Flowcytometriás. en. Sinkovichné Bak Erzsébet,

A webhelyhez kötődő szoftverek architektúrája

Programozási nyelvek 6. előadás

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Osztott alkalmazások fejlesztési technológiái Áttekintés

Számítógépes Hálózatok

A Magyar Köztársaság kormánya

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

A Forrás s rendszer sa. GriffSoft Zrt

Tartalomjegyzék. Előszó... 10

Adatszerkezetek 7a. Dr. IványiPéter

Irányítástechnika Elıadás. PLC-k programozása

Vezető Kedvezményezetti Szeminárium IMIR

1. Számoljuk meg egy számokat tartalmazó mátrixban a nulla elemeket!

Számítógépes Hálózatok GY 6.hét

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Számítógépes Hálózatok GY 3-4.hét

Számítógépes Hálózatok. 7. gyakorlat

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET

Folyamatok. 6. előadás

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

Bevezetés Működési elv AJAX keretrendszerek AJAX

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Számítógépes Hálózatok. 5. gyakorlat

Újrakonfigurálható eszközök

Alapszintű formalizmusok

Számítógépes Hálózatok GY 7.hét

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Komputeralgebra Rendszerek

Légiforgalmi irányítás szektorizációs tool munkaterhelés alapú megközelítése Számel Bence Domonkos. Unrestricted

2016, Funkcionális programozás

BioAdmin 4.1 könnyű telepítés csak Kliens használatra

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Párhuzamos és Grid rendszerek

ROBOTIKA. Kürti. Levente

Socket programozás Példák

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Alapszintű formalizmusok

stratégiai kutatási terve

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Vékonykliensek a Sziksziben

A polgármesteri hivatal informatikai rendszere a városirányítás szolgálatában

Programozási technológia 1.

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Debreceni Egyetem Informatikai Kar. Szolgáltatás-orientált programozás az Oracle-ben

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Java Programozó képzés A&K AKADÉMIA 2019.

Eljárások és függvények

The Flooding Time Synchronization Protocol

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

YOUNG PARTNER NAP

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

Szoftver újrafelhasználás

Bevezetés az elosztott rendszerekbe

Ajax és Echo 2. Bokor Attila

access point: homeaut.com

Enterprise JavaBeans 1.4 platform (EJB 2.0)

A GNSS SZOLGÁLTAT LTATÓ. Mnyerczán András FÖMI Kozmikus Geodéziai Obszervatórium. GIS Open, 2007 március 12, Székesfehérvár

Átírás:

KLIENS-SZERVER SZERVER ALAPÚ ERLANG PROGRAMOK TRANSZFORMÁCI CIÓJA ERLANG OTP SÉMÁRAS Király Roland kiralyroland@inf.elte.hu Támogatók: - GVOP-3.2.2 3.2.2-2004-07-0005/3.00005/3.0 ELTE IKKK - Ericsson Hungary

Az előad adás s tartalma Refaktorálás Erlang Erlang kliens-szerver szerver alkalmazások Erlang OTP Transzformáci ció Erlang OTP sémáras

Refaktoring A Refakt ktoring transzformáci ciós s eljárás, mely során n a programok forrásk skódját változtatjuk meg a funkcionalitás megváltoztat ltoztatása nélkn lkül. l. A refaktorálás elvégz gzése előtt analizálni lni kell a kódot, k mert a transzformáci ció nem minden esetben végezhetv gezhető el.

Példa refaktor torálásra Merge subexpression duplicates: -module(refac). -export([foo/2]). foo(a,b) -> pid! {note, A+B}, A+B. -module(refac). -export([foo/2]). foo(a,b) -> V = A+B, pid! {note, V}, V.

Refactoring tool

Az Erlang programozási nyelv Az Erlang funkcionális programozási nyelv, mely alkalmas nagy hibatűrő képességgel rendelkező,, elosztott alkalmazások fejlesztésére. Az Ericsson telekommunikáci ciós rendszerek fejlesztésére használja Közös s memória nélkn lkül, l, üzenetküldésekkel valósítja meg az elosztottságot Támogatja más m s nyelven írt programkomponensek integrálását Rendkívül l gyenge a típusosst pusossága

Erlang elemei Atomok, Számok, Szövegek, VáltozV ltozók Rendezett n-esek n (tuple( tuple) Listák, Halmaz kifejezések Processz ID Függvények user/bif BIF-s Magasabb rendű függvények (HOF) Mintaillesztés Rekurzió Üzenetküldés s (Message( Passing)

Erlang programok szerkezete -module(modulneve). -export([fuggveny_pattern/1]). -import([foo/0]). fuggveny() -> foo(). fuggveny_pattern(param) -> fuggveny_torzs_1; fuggvemy_pattern(param1, Param2) -> fuggveny_torzs_2.

Erlang folyamatok Az Erlang programok modulokból állnak.. A futó erlang programok olyan folyamatok, amelyekek nem használnak nak közös memóri riát. A kommunikáci ciót és s az adatcserét üzenetek küldk ldésével oldják k meg. Az üzenetküldés s lehet szinkron, vagy aszinkron működésű. m

Kliens-szerver szerver erlang programok 1. -module(server). 2. -export([start/0,init/1]). 3. start() -> 4. register(server_,spawn(server, init, [])). 5. init(state)-> loop(state). 7. loop(state) -> 8. receive 9. {client_1, A} -> State1=foo(State, A), loop(state1); 10. {client_3, C, Pid} -> 11. Pid! {server_, ok}, 12. State1=foo(State, C), loop(state1). 13. end.

Állapotátvitelektvitelek State Input Input State1=foo(State) State Output Output

Kliens-szerver szerver alkalmazások hibái Az állapotok átvitele (Finite State) rekurzi zióval oldható meg,, mely rossz kód k d esetén n a verem telítődését okozhatja! A kliens és s a szerver kódokat nehéz z azonosítani Kód módosításakor sakor le kell állítani az alkalmazást A szerver nem írható le általánosan

Rekurziv és s Iteratív v megoldások fact(0) -> 1; fact(n) -> > N * fact(n-1). Az N*fact(N-1) résszel r van a probléma, mivel minden egyes futáskor adatokat kell elhelyezni a verembe. Iteratív megoldás: fact(n) -> fact_x(n, 1). fact_x(0, X) -> > X; fact_x(n, X) -> fact(n-1,, N*X).

Erlang OTP Open Telecom Platform

Supervisor tree Supervisor Worker

Erlang/OTP gen_server gen_event gen_fsm supervisor

Generic Server Kliens szerver folyamatok leírása Magasabb absztrakciós s szintre emeljük k a kódot. k Szét t tudjuk választani v generikus és specifikus részrer A szerverek leírhat rhatóak ak általánosan ugyanaz a kód k d különfk nféle szerverek implementáci ciójára is alkalmas

Hagyományos szerver kódja 1. -module(server). 2. -export([start/0,init/1]). 3. start() -> 4. register(server_,spawn(server, init, [])). 5. init(state)-> loop(state). 7. loop(state) -> 8. receive 9. {client_1, A} -> State1=foo(State, A), loop(state1); 10. {client_3, C, Pid} -> 11. Pid! {server_, ok}, 12. State1=foo(State, C), loop(state1). 13. end.

Szerver callback modul 1. -module(server). 2. -behaviour(gen_server). 5. start() -> 6. gen_server:start_link({local,server}, server, [], []). 7. init(state) -> {ok, server}. 9. handle_cast(_request, State) -> 10. State1=foo(_Request), {noreply, State1}. 11. handle_call(_request, _From, State) -> 12. State1=foo(_Request),{reply, State1, State1}. 13. client_1() -> 14. gen_server:cast(server, {client_1,message1}). 15. client_3() -> 16. gen_server:call(server, {client_3,message3}).

Eredmény loop(state) -> receive {c_1, A} -> State1=foo(State, A), loop(state1); {c_2, B} -> State1=foo(State, B), loop(state1) end helyett a kódban: k handle_cast(_request, State) -> State1=foo(_Request).

Köszönöm m a figyelmet! Kérdések?