서브메뉴

본문

프로그래밍 얼랭(Programming Erlang)
프로그래밍 얼랭(Programming Erlang)
저자 : Joe Armstrong
출판사 : Insight (인사이트)
출판년 : 2008
정가 : 28000, ISBN : 9788991268401

책소개


얼랭(Erlang)은 당신을 위한 언어다!

* 멀티코어 컴퓨터에서 실행할 때 훨씬 빠르게 실행되는 프로그램을 작성하고 싶다!
* 서비스 중단 없이도 변경할 수 있는 무정지(fault-tolerent) 애플리케이션을 만들고 싶다!
* ‘함수형 언어’에 관해 들어 보긴 했다. 그런데 그게 진짜로 작동하는지 궁금하다!
* 실제 대규모 산업용 제품에서 실전 테스트된, 방대한 라이브러리와 활발한 사용자 커뮤니티가 있는 언어를 사용하고 싶다!
* 나는 엄청난 분량의 코드를 타이핑하느라 손가락이 닳고 싶지 않다!

1980년대 등장한 얼랭은 함수형 언어 가운데 산업에서 쓰이는 유일한 언어이며, 분산적인 프로그래밍, 동시성, 병렬적인 처리가 가장 큰 특징이다. 최근 멀티 코어(multicore) 시스템의 확산으로 각광받고 있으며 기존 순차적 프로그래밍 언어가 맞닥뜨리는 속도와 과부하 문제를 탁월하게 해결한다.
얼랭 창시자이기도 한 저자 조 암스트롱은 『프로그래밍 얼랭』에서 얼랭 시스템 설치부터 셸 사용법, 파일 실행과 컴파일, 병행 프로그래밍, 분산 프로그래밍, OTP, Mnesia, 멀티코어 CPU 프로그래밍까지 얼랭에 대한 모든 것을 다루었다.
독자가 쉽게 이해할 수 있도록 활용 가능한 많은 예제 코드와 두 가지 완전한 애플리케이션의 소스코드를 수록했으며, 특히 색인 엔진의 경우 멀티코어 CPU에서 어떻게 하면 처리량을 극대화할 수 있는지를 시원하게 보여줄 것이다.

이 책에 담긴 얼랭 애플리케이션:
. 음악을 스트리밍하는 SOUTcast 서버
. 기가바이트급 데이터를 색인 처리할 수 있는 전문 색인과 검색 엔진

목차


1장 출발
1.1 로드맵
1.2 다시 출발

2장 시작
2.1 개관
2.2 얼랭 설치하기
2.3 이 책의 코드
2.4 셸 시작하기
2.5 간단한 정수 연산
2.6 변수
2.7 부동 소수점 수
2.8 애텀
2.9 튜플
2.10 리스트
2.11 문자열
2.12 패턴 매칭 다시 한번

3장 순차 프로그래밍
3.1 모듈
3.2 쇼핑으로 돌아가서
3.3 이름은 같고 애리티가 다른 함수
3.4 펀
3.5 간단한 리스트 처리
3.6 리스트 해석
3.7 산술 식
3.8 가드
3.9 레코드
3.10 case와 if 식
3.11 정상 순서로 리스트 구성하기
3.12 누산기

4장·예외
4.1 예외(Exceptions)
4.2 예외 발생시키기
4.3 try...catch
4.4 catch
4.5 오류 메시지 개선하기
4.6 try...catch 프로그래밍 스타일
4.7 가능한 모든 예외를 잡기
4.8 구식과 신식 예외 처리 스타일
4.9 스택 추적

5장 고급 순차 프로그래밍
5.1 BIF
5.2 바이너리
5.3 비트 구문
5.4 나머지 짧은 주제들

6장 프로그램 컴파일하고 실행하기
6.1 얼랭 셸 시작하고 중지하기
6.2 개발 환경 수정하기
6.3 프로그램을 실행하는 다른 방법들
6.4 Makefile로 컴파일 자동화하기
6.5 얼랭 셸에서 명령 편집하기
6.6 고민거리 떨쳐버리기
6.7 뭔가 잘못되었을 때
6.8 도움 받기
6.9 환경 개조하기
6.10 크래시 덤프(Crash Dump)

7장 병행성(Concurrency)

8장 병행 프로그래밍
8.1 병행성 프리미티브
8.2 간단한 예제
8.3 클라이언트-서버 개론
8.4 프로세스를 생성하는 데 걸리는 시간은?
8.5 타임아웃이 있는 receive
8.6 선택적 수신(Selective Receive)
8.7 등록된 프로세스
8.8 병행 프로그램을 작성하는 법
8.9 꼬리 재귀에 관한 한마디
8.10 MFA로 띄우기
8.11 과제

9장 병행 프로그램과 오류
9.1 프로세스 연결하기
9.2 on_exit 핸들러
9.3 오류의 원격 처리
9.4 오류 처리 상세
9.5 오류 처리 기본명령
9.6 연결된 프로세스 집합
9.7 모니터
9.8 계속 살아 있는 프로세스

10장 분산 프로그래밍
10.1 이름 서버
10.2 분산 프리미티브
10.3 분산 프로그래밍용 라이브러리
10.4 쿠키 보호 시스템
10.5 소켓-기반 분산

11장 IRC Lite
11.1 메시지 시퀀스 다이어그램
11.2 사용자 인터페이스
11.3 클라이언트 측 소프트웨어
11.4 서버 측 소프트웨어
11.5 애플리케이션 실행하기
11.6 채팅 프로그램 소스코드
11.7 연습

12장 인터페이스 기법
12.1 포트
12.2 외부 C 프로그램과 인터페이스하기
12.3 open_port
12.4 링크인 드라이버
12.5 노트

13장 파일 프로그래밍
13.1 라이브러리의 구성
13.2 파일을 읽는 여러 방법
13.3 파일에 쓰는 여러 방법
13.4 디렉터리 조작
13.5 파일에 관한 정보 찾기
13.6 파일 복사하고 지우기
13.7 잡동사니
13.8 Find 유틸리티

14장 소켓 프로그래밍
14.1 TCP 사용하기
14.2 제어 이슈
14.3 그 접속은 어디서부터 왔는가?
14.4 소켓과 오류 처리
14.5 UDP
14.6 여러 머신으로 동보하기
14.7 SHOUTcast 서버
14.8 더 깊이 들어가기

15장 ETS와 DETS: 대량 데이터 저장소 메커니즘
15.1 테이블에 대한 기본 조작
15.2 테이블의 유형
15.3 ETS 테이블 효율성 고려 사항
15.4 ETS 테이블 생성하기
15.5 ETS 예제 프로그램
15.6 DETS
15.7 아직도 못 다한 말?
15.8 코드 내역

16장 OTP 개론
16.1 제네릭 서버로 가는 길
16.2 gen_server 시작하기
16.3 gen_server의 콜백 구조
16.4 코드와 템플릿
16.5 더 들어가기

17장 Mnesia: 얼랭 데이터베이스
17.1 데이터베이스 질의
17.2 데이터베이스에 데이터 추가하고 제거하기
17.3 Mnesia 트랜잭션
17.4 테이블에 복잡한 데이터 저장하기
17.5 테이블의 유형과 위치
17.6 초기 데이터베이스 생성하기
17.7 테이블 뷰어
17.8 더 들어가기
17.9 코드 내역

18장 OTP로 시스템 구축하기
18.1 범용 이벤트 핸들링
18.2 오류 로거
18.3 알람 관리
18.4 애플리케이션 서버
18.5 슈퍼비전 트리
18.6 시스템 시작하기
18.7 애플리케이션
18.8 파일 시스템 구성
18.9 애플리케이션 모니터
18.10 더 들어가기
18.11 도대체 그 소수는 어떻게 만들었을까?

19장 멀티코어 서곡

20장 멀티코어 CPU 프로그래밍
20.1 멀티코어 CPU에서 효율적으로 실행되는 프로그램을 만들기
20.2 순차 코드 병렬화시키기
20.3 메시지는 작게, 계산은 크게
20.4 mapreduce와 디스크 색인하기
20.5 미래로 성장하기

부록 A 프로그램 문서화(Documentation)
A.1 얼랭 형 표기법
A.2 형을 사용하는 도구들

부록 B 마이크로소프트 윈도와 얼랭
B.1 얼랭
B.2 MinGW 내려 받아 설치
B.3 MSYS 내려 받아 설치
B.4 MSYS 개발자 툴킷 설치(선택)
B.5 이맥스(Emacs)

부록 C 자원(Resources)

부록 D 소켓 애플리케이션

부록 E 나머지 잡다한 것들

부록 F 모듈과 함수 레퍼런스