메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

함수형 사고

객체지향 개발자에서 함수형 개발자로 거듭나기

한빛미디어

집필서

판매중

  • 저자 : 닐 포드
  • 번역 : 김재완
  • 출간 : 2016-06-23
  • 페이지 : 200 쪽
  • ISBN : 9788968482960
  • 물류코드 :2296
초급 초중급 중급 중고급 고급
4.3점 (3명)
좋아요 : 47

객체지향과 함수형 사이에 놓인 늪을 건너는 방법 

 

객체지향 언어에 길든 개발자들에게 예제를 통해 함수형으로 ‘생각’하는 법을 깨닫게 해주는 책. 스칼라 같은 함수형 언어의 수요가 늘고 있지만 자바 같은 객체지향에 익숙한 개발자들은 함수형 패러다임으로 넘어가는 데 어려움을 겪고 있다. 단순히 새 언어 문법을 익히는 것이 아니라 사고방식 자체를 바꿔야 하기 때문이다. 이 책은 자바 8, 스칼라, 클로저, 그루비 예제를 통해 객체지향 개발자가 함수형으로 사고를 전환하고 시야를 넓히는 일을 돕는다. 익숙한 사고방식을 바꾸려 노력하는 자바 개발자에게 소중한 디딤돌이 될 것이다.

 

detail.png

 

 

저자

닐 포드

Neal Ford

글로벌 IT 컨설턴트 업체 소트워크스(ThoughtWorks)의 디렉터, 아키텍트, 밈 랭글러. 소트워크스 입사 전에는 DSW 그룹의 CTO로 재직했다. 조지아 주립 대학교에서 컴퓨터과학 학위를 땄으며 언어, 컴파일러, 통계분석을 공부했다. 다수의 애플리케이션을 설계하고 개발했으며, 여러 교육 자료, 기고문, 비디오 연설로도 유명하다. 국제적으로 명망 있는 강연자로서, 수많은 세계 개발자 콘퍼런스에서 발표한 바 있다. 대규모 기업 애플리케이션 설계 및 구축에 관해 주로 컨설팅하고 있다. 저서 중 국내 번역서로는 『능률적인 프로그래머』(지앤선, 2009), 『프레젠테이션 교과서』(위키북스, 2014 ) 등이 있다. 웹사이트 http://www.nealford.com을 운영한다.

역자

김재완

미국 블룸버그 사에서 금융시장을 대상으로 한 시스템의 개발을 주도하는 개발자다. 서울대학교와 플로리다 주립 대학교에서 물리학을 공부한 후에, 썬 마이크로시스템즈, 버라이즌 커뮤니케이션스, 딜로이트 컨설팅 등에서 IT 컨설턴트로 활동하였다. 분산 컴퓨팅을 사용하는 시스템을 개발하는 과정에서 함수형 언어들의 발전상에 관심을 갖게 되었고, 그 실용성과 논리성에 개발자로서 행복을 느끼게 되었다. 현재 미국 펜실베이니아에 거주 중이며, 맨체스터 유나이티드를 좋아한다.

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 함수형 피라미드  

 

새로운 패러다임으로 사고의 전환을 이끄는 함수형 프로그래밍 안내서

스칼라나 클로저에 관심이 없고, 지금 사용하는 언어로 앞으로 평생 개발해도 상관없다고 생각한다면 오산이다. 언어는 우리가 의식하든 하지 못하든 이미 함수형으로 바뀌고 있다. 자바마저 람다 블록 등 함수형 패러다임을 도입했으며 이러한 움직임은 앞으로도 가속화할 것이다.

새로운 패러다임의 언어를 배울 때 문제점은 문법을 익히는 데 있지 않다. 다른 방식으로 사고하는 법을 배우는 것이 진짜 문제다. 이에 자바 같은 객체지향 언어에 길든 개발자들이 함수형으로 ‘생각’하는 법을 깨닫게 해주는 이 책이 나왔다. 자바 8, 스칼라, 클로저, 그루비 예제를 통해 객체지향 개발자가 함수형으로 사고를 전환하고 시야를 넓히는 일을 도와준다. 

기존 자바 개발자들을 염두에 두고 점차적으로 사고를 바꿔나가는 구성으로서, 단어 수 세기, 자연수 분류 등 잘 알려진 문제들에 대한 함수형과 객체지향의 해법을 비교해본다. 필터, 맵, 폴드, 메모이제이션 등 함수형 프로그래밍에서 사용되는 알쏭달쏭한 용어들의 개념도 확실히 잡고, 객체지향의 관점에서 나온 GoF 디자인 패턴이 함수형에서는 어떻게 바뀌는지도 살펴본다. 익숙한 사고방식을 바꾸려 노력하는 자바 개발자에게 이 책은 소중한 디딤돌이 될 것이다. 특히 한국어 번역판은 원서의 오류를 바로잡고, 실습이 용이하도록 예제 번호에 맞춰 정리한 소스 파일을 제공한다.

 

책의 주요 내용

- 많은 객체지향 언어에 함수형 기능이 추가되는 이유를 이해한다.

- 잘 알려진 문제들에 대해 함수형과 객체지향의 해답을 비교해본다.

- 필터, 맵, 폴드/리듀스 등 함수형 프로그래밍만의 용어를 명쾌하게 설명한다.

- 틀에 박힌 잡일은 런타임이 제어하도록 양도하는 방법을 살펴본다.

- 메모이제이션과 게으른 평가를 사용해 수작업을 없애는 법을 배운다.

- 함수형 아키텍처 및 웹 프레임워크 등 함수형 사고의 실제 사례를 본다.

- 여러 패러다임이 혼재하는 시대에 산다는 것의 장단점을 알아본다.

 

  • 1. 함수형 언어를 사용해보기 전에(함수형 사고에 익숙해지기전에) 이 책을 봤을땐 내용을 거의 이해할 수 없었다. 자바 8스트림, 스칼라를 쓰면서 익숙해지고나니 내용이 이해되기 시작했다. 그래도 여전히 클로저 코드는 외계어 수준이다.

     

    2. Groovy 예제가 상당히 많다. 테스트코드 짤 때만 써서 함수형 언어로 쓸 수 있는 부분은 잘 몰랐는데 이번 기회에 많이 알게 됐다. 그렇지만 API 이름이 기존 함수형 언어의 그것들과 달라서 좀 불편하다. 그래서 나는 스칼라를 더 선호한다.

     

    3. 복잡한 부분/움직이는 부분/상태를 최소화해서 코드 이해를 돕는다는 부분은 마음에 든다. 하지만 런타임이나 언어 기능으로 프로그래머가 제어해야했던 부분을 맡기는 것은 조금 불안하다. JAVA의 GC를 처음 본 C언어 개발자가 느꼈던 불안감과 비슷하지 않을까? 아마 미래에는 이런 것이 자연스러워질 것이다.

     

    4. 문제를 푸는 방식이 달라졌다. 대표적인 예로 나오는 리스트 순회나 함수를 파라미터로 넣어 동작을 파라미터화 하는 방법 등으로 명령형 프로그래밍보다 간결하게 문제를 풀 수 있게 됐다. 하지만 엔터프라이즈급 애플리케이션을 설계에서는 객체지향적 설계 방법이 가지는 지위가 워낙 견고해서 큰 그림을 그리는 방법은 크게 바뀌지 않을 것 같다.

     

    책 제목에서 기대하는 것처럼 함수형 사고와 친해지기는 힘들었다. 기존 패러다임에 익숙하고, 실제로 코딩을 안해봐서 그런것 같다. 우리가 처음 코딩을 배울때처럼 한줄 씩 써보면서 익힌 후 다시 그 의미를 이해하는 용도로 이 책을 읽어보면 더 도움이 될 것 같다.

  • 한빛미디어 한빛리더스 3기 활동의 두 번째 도서는 닐 포드의 <함수형 사고(Functional Thinking)>라는 200쪽의 얇은 도서였다.

    이 책은 표지에 나온 것처럼 객체지향 패러다임에 익숙한 독자에게 함수형 패러다임으로 생각할 수 있는 방법을 설명한다. 책의 시작은 '왜(Why)' 함수형 언어를 배워야 하는지부터 시작한다. 그리고 함수형 언어에서 공통적으로 사용하는 맵, 피터, 리듀스 또는 폴드와 메모이제이션(Memorization) 등을 설명한다. 끝으로 최근 JDK 8에 도입된 함수형 기능을 Stream API와 폴리글랏 그리고 폴리패러다임에 대해 설명한다.

    함수형 패러다임을 익히고자 하는 사람에게 이 책은 적어도 아래 세 가지 이유 때문에 추천하고 싶다.

    1. 자연스러운 흐름 - 익숙한 Java 코드를 통한 객체지향적 문제해결방법에서 독자가 배우고자 하는 함수형 패러다임으로 코드를 재작성하는 설명 방식은 이해하기 쉽고 설득력이 있다.
    2. 친절한 설명 - 역자가 책 중간에 적어놓은 설명이 책을 읽는 데 큰 도움이 된다. 만약 번역서가 아니라 원서를 바로 봤다면 책을 이해하는 데 좀 더 어려웠을 것이다.
    3. 깔끔한 번역 - 종종 번역서에 오타나 어색한 번역이 많이 있는데 이 책은 심각한 오타나 어색한 번역이 거의 없어서 읽는 데 큰 불편함이 없었다.

    이 책의 한 가지 단점이라면 익숙하지 않은 함수형 언어에 대한 설명이 거의 없는 상태에서 코드가 나온다는 것이다. 본인은 최근에 함수형 언어 코드를 눈으로 조금이나마 봐서 코드를 읽는 게 가능했지만 처음 보는 사람에게는 약간의 좌절감을 줄 수도 있을 것 같다.

    국내에서는 함수형 프로그래밍에 대한 열풍이 아직까지는 불고 있지 않는 것 같다. 그러나 멀지 않은 미래에 Node.js 처럼 갑작스럽게 수요가 있을 것으로 생각한다. 미래는 준비하는 자의 것이다. 다른 사람들이 명령형 혹은 객체지향 패러다임으로만 문제를 바라볼 때, 조금만 더 노력해서 함수형 패러다임으로도 문제를 바라볼 수 있는 능력을 갖추는 것은 어떨까? 한빛미디어에서 번역한 <함수형 사고(Functional Thinking)>는 객체지향 개발자에서 함수형 개발자로 거듭나는 데 필요한 레시피를 제공하는 훌륭한 책이다.

    KakaoTalk_Photo_2016-10-04-07-51-18.jpeg

     

    KakaoTalk_Photo_2016-10-04-07-50-56.jpeg

     

    undefined

     

    KakaoTalk_Photo_2016-10-04-07-50-05.jpeg

     

  • 서평을 시작하기 전 잡담 - 

     개인적으로 오렐리에서 나오는 책은 실무에서는 아무 쓸모가 없다고 생각한다.

    하지만 어떤 개념이나 흐름을 설명하는 것에 있어서는 오렐리에서 나오는

    책보다 더 나은 책은 없다고 생각한다.

    그리고 프로그래머가 직업이거나 배우는 사람치고 오렐리 스펠링이 박힌

    책이 없는 사람은 없지 않을까 한다.

    각설하고 일단 오렐리의 책은 프로그래머라면 지나가면서라도 펴봐야한다고 생각한다.

     

    책 설명 - 

     책은 200페이지 정도로 상당히 얇은 축에 속하고 이 책을 살만한 가치가 있느냐라고

    묻는다면 난 당연히 물론이라고 대답할 것이다.

    프로그래머라면 꼭 봐라.

    미래를 보여주는 책이다.

     

    책의 아름다운 모습 - 

    책 표지에 희안한 동물이 있다. +_+

    따람쥐인가?

    크기변환_1.jpg

    어려운 내용도 그림을 통하면 한층 쉬워진다.
    크기변환_2.jpg

    자바를 오랫동안 공부한 입장에서는 희안한 코드가 많았다.
    크기변환_3.jpg

    패러다임은 언제 바뀔지 모른다.

    크기변환_4.jpg

     

     

    서평 - 

     함수형사고라는 제목을 보았을 때 머릿속에 떠올린 것은 객체지향적 사고였다.

    프로그램을 처음 배울 때의 패러다임은 순차적 사고였고

    그 후에는 프로그래밍의 대상이 되는 모든 것을 객체로 나누어 생각하는 객체지향적 사고로 이어졌다.

    객체지향적 사고의 중심에는 현재 가장 많이 사용되는 언어인 자바가 있다.

    프로그래머인 사람치고 자바를 모르는 사람은 없을거라고 생각이 된다.

     

     현재의 프로그래밍 생태계는 객체지향적 언어인 자바가 전 세계를 지배하고 있다.

    하지만 그 이전의 프로그래밍 언어들을 돌이켜보면 프로그래밍 언어의 중심은 어느 순간 대체되는 것을 알 수 있다.

    실제로 자바가 범용적인 프로그래밍 언어로 사용된 것은 십년도 되지 않았다.

    무거운 인터프리터 때문에 다른 언어에 비해 처리속도가 뒤떨어졌었지만

    하드웨어의 발달에 편승하여 자바가 전 세계를 지배하게 되었다.

     

     하지만 어느 순간 자바를 대체하는 획기적인 언어가 나온다면?

    가뜩이나 유행을 빨리 타는 웹프로그래머인 나는 항상 그런 불안에 떨어야했다.

    지난 15년 정도를 돌이켜보면 웹프로그래밍 언어는 php, asp, .net, java 로

    휙휙 바뀌었고 언제 바뀔지는 예상조차 되지 않는다.

     

     이 책은 함수형사고에 기반한 언어의 바이블은 절대 아니다.

    실무에서 사용할려고 보는 책이 아니라 객체지향적 사고에 굳어져버린

    프로그래머들을 위한 예언서 같은 존재가 아닐까하는 생각이 든다.

     

    서평을 마치며 - 

     책을 읽다보면 저자는 패러다임이 바뀔것이라고 확신하는 듯 하다.

    객체지향 사고를 넘어선 인간적인 프로그래밍에 가까운 함수형 사고는 조만간 우리 앞에 펼쳐질 것이고

    이미 자바8에서는 함수형사고들에 의한 문법들이 제공되고 있는 것을 확인할 수 있다.

     

     하지만 나의 경우에는 아직 10년 정도는 객체지향 개념에서 확 바뀔수 없다는 생각이 든다.

    자바8은 2014년에 발표되었지만 내가 프리랜서로 일하며 다녀본 곳에서는 아직까지도 자바7을 사용하고 있다.

    얼마전에도 해쉬맵의 정렬을 하려고 방법을 살펴보던 중 못보던 것이 있어 사용을 해보려고 하였는데

    자바8에서만 가능한 방법이어서 따로 클래스를 만들어 해결했다.

    아직까지 자바8로 바꾸지 않는 이유는 잘 돌아가고 있는 시스템을 업그레이드했을때

    발생되는 문제의 책임을 질려고 하지 않기 때문이 아닐까.

    그로 인해 책에서 보여주는 새로운 패러다임의 시대가 오려면 10년은 더 있어야 한다는 생각이 든다.

     

     

     

     

    하지만 객체지향적 사고에 얽매인 프로그래머라면 꼭 읽어봐야 할 책으로 추천해본다.
     

부록/예제소스
자료명 등록일 다운로드
예제소스 2016-08-25 다운로드
결재하기
• 문화비 소득공제 가능
• 배송료 : 0원배송료란?

배송료 안내

  • 책, 아이템 등 상품을 3만원 이상 구매시 무료배송
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
함수형 사고
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
함수형 사고
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
함수형 사고
구입처*
구입일*
부가기호*
부가기호 안내

* 회원가입후 도서인증을 하시면 마일리지 500점을 드립니다.

* 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한됩니다.

* 절판도서, eBook 등 일부 도서는 도서인증이 제한됩니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실