클로저 프로그래밍의 즐거움, 2판
저자 마이클 포거스, 크리스 하우저
역자 김선호
출판사 비제이퍼블릭
출간일 2016년 3월 4일 (금)
정가 35,000원
페이지 628
판형 188 * 245
ISBN 979-11-86697-12- 2(93000)
원서정보 The Joy of Clojure, 2nd edition
책 소개
클로저의 도(道)를 가르친다. 그런데 너무 재미있어서 손에서 놓을 수가 없다.
- 바이샴페얀 고세, Helpshift 공동창립자 & CTO
클로저 프로그래밍의 즐거움을 깊이 탐구해보자!
클로저 프로그래밍 언어는 리습의 방언으로 훌륭한 성능, 강력한 표현력, 설계 안정성을 제공하며 자바 가상 머신과 자바스크립트 런 타임에서 동작하는 함수형 프로그래밍 언어다. 클로저는 동시성 지원을 내장하고 있으며 불변 객체의 정밀도를 예측할 수 있고 영속적 데이터 구조도 제공한다. 그리고 정말 빠르다. 자바나 루비의 긴 블록들을 클로저 몇 줄로 대체하는 것을 보는 순간 왜 이 책의 저자들이 클로저 언어를 "즐겁다"고 하는지 깨닫게 될 것이다. 스테이플스(Staples)와 같은 큰 회사가 인프라를 클로저로 구성하려 하는 것도 어떻게 보면 당연하다.
『클로저 프로그래밍의 즐거움, 2판』은 클로저 언어를 깊이 탐구한다. 클로저 1.8 버전까지 업데이트하여 작성한 이 책은 문법을 넘어 클로저 코드를 어떻게 능숙하게 작성할 수 있는지 잘 보여준다. 독자들은 함수형과 선언형 프로그래밍 접근 방식을 학습하게 될 것이고, 클로저를 우아하면서도 효율적으로 작성하는 기법에도 숙달하게 될 것이다. 이 책을 통해 동시성, 상호운용성, 성능 등의 어려운 문제를 어떻게 해결할 수 있는지 또 클로저 방식의 사고가 얼마나 큰 위력을 갖고 있는지 이해하게 될 것이다.
이 책에서 다루는 내용
-클로저 스크립트를 사용하여 웹 애플리케이션 구성하기
-함수형 프로그래밍 기법 숙달하기
-동시성 단순화하기
-클로저 1.8의 기준으로 작성된 예제들
독자대상
중급
저자 소개
마이클 포거스
분산 시뮬레이션, 머신 비전, 전문가 시스템 구축의 경험을 가진 클로저와 클로저스크립트에 핵심적으로 기여한 전문가다.
크리스 하우저
클로저와 클로저스크립트의 많은 기능을 구현하는 데 핵심적으로 기여한 전문가다.
역자 소개
김선호
학부 및 석사 연구 주제로 한의학 진단 알고리즘 관련 연구를 수행하던 중 국내에는 첫발을 디디던 시기의 시맨틱 기술을 접하면서 인공 지능 관련 기술들에 관심을 가지게 된지 햇수로 어느덧 15년이 된 연구개발자다. 시맨틱 기술의 전문성을 보유한 솔트룩스에 입사하여 관련 연구와 유럽 협력 프로젝트들을 수행하고 있으며 ODI(Open Data Institute) Seoul의 디렉터와 Open Knowledge Korea의 코어팀 멤버로 활동하고 있다.
목차
1부. 클로저의 기초
1장. 클로저의 기본철학
1.1 클로저의 사고방식
1.2 리습이 왜 또 필요한가?
1.3 함수형 프로그래밍
1.4 클로저는 왜 객체 지향이 아닐까?
1.5 요약
2장. 클로저, 집중적으로 맛보기
2.1 스칼라: 기본 데이터 타입
2.2 한 데 묶어두기: 컬렉션
2.3 동작 수행하기: 함수 호출
2.4 Var는 변수가 아니다
2.5 함수
2.6 로컬, 반복, 블록
2.7 문제 발생 방지하기: 인용
2.8 호스트 라이브러리 사용하기
2.9 예외 상황
2.10 네임스페이스로 코드 모듈화하기
2.11 정리
3장. 클로저에 발 담그기
3.1 참
3.2 nil의 중의성에 주의하자
3.3 구조분해
3.4 REPL 다뤄보기
3.5 정리
2부. 데이터 타입
4장. 스칼라
4.1 정밀도 이해하기
4.2 유리수 사용하기
4.3 키워드의 용도
4.4 심벌 이해하기
4.5 정규 표현식 – 제2의 문제
4.6 정리
5장. 컬렉션 타입
5.1 영속성, 시퀀스, 복잡성
5.2 벡터: 다양한 방법으로 생성하고 사용하기
5.3 리스트: 클로저의 코드-구문 데이터 구조
5.4 영속성 큐 사용 방법
5.5 영속적 셋
5.6 맵으로 생각하기
5.7 종합하기: 시퀀스에서 아이템 위치 찾기
5.8 정리
3부. 함수형 프로그래밍 기법
6장. 지연과 불변성
6.1 불변성
6.2 구조적 공유: 영속적 구조
6.3 지연
6.4 종합하기: 지연 퀵 정렬
6.5 정리
7장. 함수형 프로그래밍
7.1 함수 구문의 종류
7.2 클로저(closure)
7.3 재귀적으로 생각하기
7.4 종합하기: A* 경로 탐색
7.5 정리
4부. 대규모 시스템 설계
8장. 매크로
8.1 데이터는 코드가 데이터다
8.2 제어 구조 정의
8.3 구문 결합 매크로
8.4 매크로를 사용하여 구문 변경하기
8.5 매크로로 심벌릭 레졸루션 타임 제어하기
8.6 매크로로 리소스 관리하기
8.7 종합하기: 함수를 리턴하는 매크로
8.8 정리
9장. 데이터와 코드의 결합
9.1 네임스페이스
9.2 보편적 디자인 패턴의 클로저 멀티메서드 탐구
9.3 타입, 프로토콜, 레코드
9.4 종합하기: 체스 말 이동을 위한 플루언트 빌더
9.5 정리
10장. 가변성과 동시성
10.1 ref는 언제 사용하는가
10.2 ref로 리팩토링하기
10.3 에이전트는 언제 사용하는가
10.4 애텀은 언제 사용하는가
10.5 언제 락을 사용하는가
10.6 var와 동적 바인딩
10.7 정리
11장. 병렬성
11.1 퓨처는 언제 사용하는가
11.2 프로미스는 언제 사용하는가
11.3 병렬 연산
11.4 간단한 reduce/fold 소개
11.5 정리
5부. 호스트 공생
12장. Java.next
12.1 프록시로 상황에 맞는 객체 만들기
12.2 클로저 gen-class와 GUI 프로그래밍
12.3 클로저와 자바 배열 간의 관계
12.4 모든 클로저 함수들이 구현하고 있는 인터페이스
12.5 자바 API에서 클로저 데이터 구조 사용하기
12.6 definterface 매크로
12.7 예외를 주의하자
12.8 정리
13장. 왜 클로저스크립트인가?
13.1 구현 vs. 인터페이스
13.2 컴파일러 들여다보기: 분석 vs. 배출
13.3 컴파일 타임 vs. 런 타임
13.4 정리
6부. 기타 고려 사항들
14장. 데이터 지향 프로그래밍
14.1 코드로서의 코드, 데이터로서의 데이터
14.2 데이터로서의 데이터
14.3 코드로서의 데이터
14.4 코드로서의 데이터로서의 코드(code as data as code)
14.5 정리
15장. 성능
15.1 타입 힌트
15.2 트랜션트
15.3 청크 시퀀스
15.4 메모이제이션
15.5 강제 변환 이해하기
15.6 Reducible
15.7 정리
16장. 생각하는 프로그램
16.1 검색 문제
16.2 데이터 단일화 고려하기
16.3 core.logic 소개
16.4 제약
16.5 정리
17장. 생각하는 방법을 바꿔주는 클로저
17.1 도메인 내에서 생각하기
17.2 테스트
17.3 보이지 않는 디자인 패턴
17.4 에러 처리와 디버깅
17.5 이 책을 마무리하며
출판사 리뷰
이 책은 클로저 프로그래밍 언어에 대한 책이다. 구체적으로 클로저 코드를 '클로저스럽게' 작성하는 방법에 대한 책이다. 조금 더 구체적으로는 클로저 프로그래머가 어떻게 클로저 코드를 성공적으로 작성하고, 어떻게 클로저 언어 자체가 소프트웨어를 개발하는 데 영향을 주는지를 경험하도록 하는 책이다.
클로저가 다른 언어에는 없는 무엇을 제공하고 있을까? 간단하게 말해서, 만일 독자들이 클로저의 본질을 이해하고 이에 조화되는 코드를 작성할 수 있게 되면 프로그래밍 기술과 시스템 구축에 대한 새로운 관점이 열릴 것이다. 그러므로 클로저가 다른 언어로는 할 수 없는 무엇을 제공하는가에 대한 답변은 말하자면 '계몽 운동'과 같은 것이다.
클로저가 다른 언어 설계의 영역에 미치는 영향력 외에도 많은 개발자들이 매일 클로저를 사용하고 있다. 해결하기 어려운 문제를 해결하기 위해 클로저로 시스템을 개발하는 사례들과 클로저 사용 빈도가 하루가 다르게 증가하고 있다. 실질적인 관점에선 초판이 여전히 의미 있는 책이긴 하지만, 개정판은 클로저라는 탁월한 언어를 전문적으로 경험하면서 얻게 된 교훈들을 담고 있다고 생각한다. 이 책의 어떤 부분도 이론만을 내세우고 있지 않다. 대신 실제 시스템의 문제를 해결에 필요한 데이터 지향 설계를 위해 core.logic으로 환원 가능한 모든 기술과 라이브러리를 동원해 사용한다.
이 책은 클로저를 매일 사용하면서 그 본질과 특징을 오랫동안 깊이 고민해 온 두 개발자가 저술한, 클로저의 사고 방식(the Way of Clojure)을 설명하는 책이다. 우리는 독자들이 이 책의 내용을 깊이 있게 음미하여 클로저의 힘과 중요성을 인식할 수 있게 되기를 바란다.
자바 성능 튜닝 (1) | 2016.03.11 |
---|---|
저전력 블루투스 (6) | 2016.02.02 |
고성능 .NET 코드 프로그래밍 (0) | 2016.01.18 |
댓글 영역