ReloadedStudios Inc. 2008.3Q Study TED Erlang Overview TED likes erlang more than brad? ReloadedStudios Inc. 2008.3Q Study TED
개요 Erlang 을 대강 전체적으로 살펴본다. ‘최신 이슈’ 를 보고 Erlang 의 특징을 알아본다.
순서 최신 이슈 코드 특징 응용 마무리
Intro 동영상 소개
Erlang 함수형 언어 병행 지향적 분산 지향적 무정지 시스템
등장 인물
누가 Joe 일까요?
함수형 언어 경량프로세스 기반 메시지 통신 병행 & 분산 99999999.9
독자들은 서문을 안 읽는다. 서두가 1장! Erlang 을 공부하세요!
최신 이슈 멀티코어 확장성 분산 무정지 시스템
최신 이슈! 정말 중요! 안전성 생존성 재사용성 성능 확장성 멀티쓰레드 프로그래밍의 목적!
분산 처리 무정지 시스템
이 모든 것을 쉽게 할 수 있는 Erlang 을 공부하세요!
코드 5가지 Erlang 기본 문법
For 가 없다
qsort( [Pivot|T]) -> qsort( [X || X <- T, X < Pivot] ) ++ [Pivot] ++ qsort([X || X <- T, X >= Pivot] ); qsort([]) -> [].
변수 & Atom 단일 할당 변수 Atom 은 #define 과 비슷 Single Obejct Pattern Immutable 1> X = 1. 1 2> X = 2. Error 3> hello. hello Atom 은 소문자로 시작! 단일 할당 변수 Single Obejct Pattern Immutable Atom 은 #define 과 비슷
패턴 매칭 = 은 할당 연산이 아니다. 단일 할당이 프로그램을 낫게 만든다. 1> X = (2+4). 6 2> Y = 10. 10 3> X = 6. 4> X = Y. Error 5> Y = 10. 6> Y = X. = 은 할당 연산이 아니다. 단일 할당이 프로그램을 낫게 만든다.
튜플 정해진 수의 항목을 하나의 객체로 그룹핑 한다. struct point { int x; int y; } 생성 : P = { point, 10, 45 } 사용 : { point, X, Y } = P 정해진 수의 항목을 하나의 객체로 그룹핑 한다.
리스트 List 의 앞과 뒤를 얻을 수 있다. 1> List1 = [ 1, 2, 3 ]. [ 1, 2, 3 ] [ 4, 5, 1, 2, 3 ] 3> [ Num | List3 ] = List2 Num 는 4 List3 는 [ 5, 1, 2, 3 ] List 의 앞과 뒤를 얻을 수 있다.
프로세스 Spawn 함수로 프로세스를 생성 & 시작한다. Receive 안에서 메시지를 받는다. 재귀로 작동한다. Pid ! Spawn( Fun 함수 ) loop() -> receive 패턴 매칭 -> DoSomthing(), loop(); void end. Spawn 함수로 프로세스를 생성 & 시작한다. Receive 안에서 메시지를 받는다. 재귀로 작동한다.
이 정도만 알면 병행,분산,무정지 등등을 쉽게 만들 수 있따?
세상은..
특징 함수형 언어 병행지향적 언어 분산 기능 결함 허용/복구
Erlang 함수형 언어 병행 지향적 분산 지향적 무정지 시스템 병행, 분산 Primitives 제공!
함수형 언어 진짜 작동 할까?
For 가 없다 패턴 매칭 & 단일 할당 SideEffect 가 없다!
왜 병행 지향적 언어 라고 하는 걸까?
병행Concurrent 순차Sequential 병렬Parallel 어떠한 순서로 처리하든 상관없게 작업 분할 동시에 [분할 된 독립작업] 처리 순차Sequential 순서대로 [한 개] 처리 병렬Parallel 동시에 [여러 개] 처리
프로세스 간 협업 P P P How? P
메시지 통신 기반 Pid ! Spawn( Fun 함수 ) loop() -> receive 패턴 매칭 -> DoSomthing(), loop(); void end.
Erlang Virtual Machine VM 경량 프로세스 P P P P Erlang Virtual Machine
Thread Local Storage 와 비슷 공유 자원이 없다 Process#1 Process#2 Memory#1 Memory#2 Thread Local Storage 와 비슷
어떻게 분산 기능을 지원 할까?
네트워크 경계를 넘어! 10.1.2.3 100.10.20.30
무정지 시스템은 어떻게 만들 수 있을까?
다중 프로세스 연결 P P 프로세스 이중화? 같이 사는 프로세스
핫스왑 Ver.2 Ver.1 P P
OTP 가져다 쓰기 분산 서버 세계의 .NET Framwork ?
마무리 정리
정리 Erlang 을 대강 전체적으로 살펴본다. ‘최신 이슈’ 를 보고 Erlang 의 특징을 알아본다.
끝 감사합니다. Joonseok.ahn@live.co.kr 2008.10.15 Ted 얼랭과 함께 병행지행적 프로그래밍으로 고고싱! 감사합니다. Joonseok.ahn@live.co.kr 2008.10.15 Ted