쪽수
ISBN
브랜드
객체지향과 함수형 사이에 놓인 늪을 건너는 방법
객체지향 언어에 길든 개발자들에게 예제를 통해 함수형으로 ‘생각’하는 법을 깨닫게 해주는 책. 스칼라 같은 함수형 언어의 수요가 늘고 있지만 자바 같은 객체지향에 익숙한 개발자들은 함수형 패러다임으로 넘어가는 데 어려움을 겪고 있다. 단순히 새 언어 문법을 익히는 것이 아니라 사고방식 자체를 바꿔야 하기 때문이다. 이 책은 자바 8, 스칼라, 클로저, 그루비 예제를 통해 객체지향 개발자가 함수형으로 사고를 전환하고 시야를 넓히는 일을 돕는다. 익숙한 사고방식을 바꾸려 노력하는 자바 개발자에게 소중한 디딤돌이 될 것이다.
새로운 패러다임으로 사고의 전환을 이끄는 함수형 프로그래밍 안내서
스칼라나 클로저에 관심이 없고, 지금 사용하는 언어로 앞으로 평생 개발해도 상관없다고 생각한다면 오산이다. 언어는 우리가 의식하든 하지 못하든 이미 함수형으로 바뀌고 있다. 자바마저 람다 블록 등 함수형 패러다임을 도입했으며 이러한 움직임은 앞으로도 가속화할 것이다.
새로운 패러다임의 언어를 배울 때 문제점은 문법을 익히는 데 있지 않다. 다른 방식으로 사고하는 법을 배우는 것이 진짜 문제다. 이에 자바 같은 객체지향 언어에 길든 개발자들이 함수형으로 ‘생각’하는 법을 깨닫게 해주는 이 책이 나왔다. 자바 8, 스칼라, 클로저, 그루비 예제를 통해 객체지향 개발자가 함수형으로 사고를 전환하고 시야를 넓히는 일을 도와준다.
기존 자바 개발자들을 염두에 두고 점차적으로 사고를 바꿔나가는 구성으로서, 단어 수 세기, 자연수 분류 등 잘 알려진 문제들에 대한 함수형과 객체지향의 해법을 비교해본다. 필터, 맵, 폴드, 메모이제이션 등 함수형 프로그래밍에서 사용되는 알쏭달쏭한 용어들의 개념도 확실히 잡고, 객체지향의 관점에서 나온 GoF 디자인 패턴이 함수형에서는 어떻게 바뀌는지도 살펴본다. 익숙한 사고방식을 바꾸려 노력하는 자바 개발자에게 이 책은 소중한 디딤돌이 될 것이다. 특히 한국어 번역판은 원서의 오류를 바로잡고, 실습이 용이하도록 예제 번호에 맞춰 정리한 소스 파일을 제공한다.
책의 주요 내용
- 많은 객체지향 언어에 함수형 기능이 추가되는 이유를 이해한다.
- 잘 알려진 문제들에 대해 함수형과 객체지향의 해답을 비교해본다.
- 필터, 맵, 폴드/리듀스 등 함수형 프로그래밍만의 용어를 명쾌하게 설명한다.
- 틀에 박힌 잡일은 런타임이 제어하도록 양도하는 방법을 살펴본다.
- 메모이제이션과 게으른 평가를 사용해 수작업을 없애는 법을 배운다.
- 함수형 아키텍처 및 웹 프레임워크 등 함수형 사고의 실제 사례를 본다.
- 여러 패러다임이 혼재하는 시대에 산다는 것의 장단점을 알아본다.
CHAPTER 1 왜
__1.1 패러다임 전환
__1.2 언어 트렌드에 발맞추기
__1.3 언어/런타임에 제어를 양도하기
__1.4 간결함
CHAPTER 2 전환
__2.1 일반적인 예제
____2.1.1 명령형 처리
____2.1.2 함수형 처리
__2.2 사례 연구: 자연수의 분류
____2.2.1 명령형 자연수 분류
____2.2.2 조금 더 함수적인 자연수 분류기
____2.2.3 자바 8을 사용한 자연수 분류기
____2.2.4 함수형 자바를 사용한 자연수 분류기
__2.3 공통된 빌딩블록
____2.3.1 필터
____2.3.2 맵
____2.3.3 폴드/리듀스
__2.4 골치 아프게 비슷비슷한 이름들
____2.4.1 필터
____2.4.2 맵
____2.4.3 폴드/리듀스
CHAPTER 3 양도하라
__3.1 반복 처리에서 고계함수로
__3.2 클로저
__3.3 커링과 부분 적용
____3.3.1 정의와 차이점
____3.3.2 재귀
__3.4 스트림과 작업 재정렬
CHAPTER 4 열심히보다는 현명하게
__4.1 메모이제이션
____4.1.1 캐싱
____4.1.2 메모이제이션의 첨가
__4.2 게으름
____4.2.1 자바의 게으른 반복자
____4.2.2 토털리 레이지 자연수 분류기
____4.2.3 그루비의 게으른 목록
____4.2.4 게으른 목록 만들기
____4.2.5 게으름의 이점
____4.2.6 게으른 필드 초기화
CHAPTER 5 진화하라
__5.1 적은 수의 자료구조, 많은 연산자
__5.2 문제를 향하여 언어를 구부리기
__5.3 디스패치 다시 생각하기
____5.3.1 그루비로 디스패치 개선하기
____5.3.2 클로저 언어 구부리기
____5.3.3 클로저의 멀티메서드와 맞춤식 다형성
__5.4 연산자 오버로딩
____5.4.1 그루비
____5.4.2 스칼라
__5.5 함수형 자료구조
____5.5.1 함수형 오류 처리
____5.5.2 Either 클래스
____5.5.3 옵션 클래스
____5.5.4 Either 트리와 패턴 매칭
CHAPTER 6 전진하라
__6.1 함수형 언어의 디자인 패턴
__6.2 함수 수준의 재사용
____6.2.1 템플릿 메서드
____6.2.2 전략
____6.2.3 플라이웨이트 디자인 패턴과 메모이제이션
____6.2.4 팩토리와 커링
__6.3 구조형 재사용과 함수형 재사용
____6.3.1 구조물을 사용한 코드 재사용
CHAPTER 7 실용적 사고
__7.1 자바 8
____7.1.1 함수형 인터페이스
____7.1.2 옵셔널
____7.1.3 자바 8 스트림
__7.2 함수형 인프라스트럭처
____7.2.1 아키텍처
____7.2.2 웹 프레임워크
____7.2.3 데이터베이스
CHAPTER 8 폴리글랏과 폴리패러다임
__8.1 함수형과 메타프로그래밍의 결합
__8.2 메타프로그래밍을 통한 자료형의 매핑
____8.2.1 함수형 자바와 그루비를 사용한 무한 스트림
__8.3 멀티패러다임 언어의 결과
__8.4 문맥 대 구성
__8.5 함수형 피라미드
전체 평점
4.3
표기 오류
4번째 줄
표기 오류
맨 아래 줄
표기 오류
액세스에 적용한 디츨러의 법칙 박스 안 2행
표기 오류
최종 일관성 박스 안 6행
표기 오류
마지막 행
18,000원
10%
16,200원