본문내용 바로가기
MD의선택 무료배송 이벤트 사은품 소득공제

순수 함수형 데이터 구조 불변성과 지연 계산을 활용한 함수형 데이터 구조

양장본
크리스 오카사키 지음 | 오현석 옮김 | 에이콘출판 | 2020년 01월 02일 출간 (1쇄 2019년 11월 28일)
  • 정가 : 35,000원
    판매가 : 31,500 [10%↓ 3,500원 할인]
  • 통합포인트 :
    [기본적립] 1,750원 적립 [5% 적립] 안내 [추가적립] 5만원 이상 구매 시 2천원 추가적립 [회원혜택] 우수회원 3만원 이상 구매 시 2~4% 추가적립
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    01월 28일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • IT전문서 올해의 책 후보 발표! 지금 투표해주세요!
    2019.12.13 ~ 2020.01.31
  • 행사도서 포함 IT 분야 3만원 이상 구매시 개발자 텀블러티슈 ..
    2019.11.05 ~ 2020.03.31
  • 에이콘의 도서를 한 눈에 살펴보세요
    2017.11.23 ~ 2020.12.31
상품상세정보
ISBN 9791161753515(1161753516)
쪽수 352쪽
크기 158 * 236 * 28 mm /733g 판형알림
이 책의 원서/번역서 Purely Functional Data Structures/Okasaki, Chris

책소개

이 책이 속한 분야

불변성(immutability)과 지연 계산(laziness)을 활용해 100% 함수적으로 만든 데이터 구조와 알고리즘도 명령형 데이터 구조나 알고리즘만큼 성능이 좋을 수 있다는 것을 보여준다. 그리고 함수형 데이터 구조를 만들기 위한 몇 가지 방법을 제시한다. 함수형 프로그래밍을 공부하는 사람들 사이에서는 일종의 고전으로 자리잡은 중요한 책으로, 데이터 구조만 다루지 않는다. 이 책에서 제시하는 여러 기법을 이용해 직접 코드를 작성하고 분석하다 보면 함수형 프로그래밍 방식에 눈뜰 수 있을 것이다.

저자소개

저자 : 크리스 오카사키

미국 육군사관학교(United States Military Academy)에서 컴퓨터 과학의 부교수로 있으며, 이전에는 콜롬비아 대학교(Columbia University)와 글래스고 대학교(University of Glasgow)에서도 학생들을 가르쳤다.

역자 : 오현석

KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다. 삼성 메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 현재 호주 브리즈번 JNF Soft에서 소프트웨어 개발자 및 컨설턴트로 일하면서 최근에는 블록체인 관련 기반 기술 연구개발과 블록체인을 활용한 서비스 개발에 참여하고 있다. 함수형 프로그래밍을 활용해 오류 발생 가능성이 적으면서 유지 보수가 편한 프로그램을 작성하는 방법과 이를 지원하는 여러 도구를 만드는 일에 관심이 많다. 『Programming in Scala 3/e』(에이콘, 2017), 『Kotlin in Action』(에이콘, 2017), 『엔터프라이즈 자바 마이크로서비스』(한빛미디어, 2019) 등 20여 권의 책을 번역했다.

작가의 말

★ 지은이의 말 ★
나는 1989년 SML 프로그래밍을 처음 시작했다. 데이터 구조를 효율적으로 구현하기를 좋아했기 때문에, 가장 좋아하는 데이터 구조 중 일부를 SML로 포팅하기 시작했다. 몇몇 데이터 구조는 쉽게 포팅할 수 있었으며, 기쁘게도 변환한 결과 코드는 C, 파스칼(Pascal), 에이다(Ada) 등으로 작성했던 코드보다 더 간결하고 깔끔했다. 시간이 지나면서 내가 기존 값을 없애고 내용을 덮어쓰는 파괴적인 메모리 갱신(destructive update)을 사용하고 싶어 한다는 것을 깨달았다. 하지만 SML에서는 그러한 파괴적 메모리 갱신 사용을 권장하지 않고, 그 밖의 여러 함수형 언어는 메모리 갱신 사용을 아예 금지한다. 기존의 책과 논문에서 도움이 될 만한 내용을 찾아봤지만 소수의 논문을 제외하고는 관련 정보가 거의 없었다. 나는 이 분야가 아직 미개척지임을 깨달았고, 데이터 구조를 구현하는 새로운 방법을 탐색하기 시작했다.
8년이 지난 지금도 탐색 중이다. 함수형 언어를 사용해 어떻게 해야 효율적으로 구현할 수 있을지 아직도 잘 모르는 데이터 구조가 많다. 하지만 나는 함수형 언어에서 어떤 것이 작동하는지 많이 배워왔다. 이 책은 내 배움을 코드로 표현하려는 시도다. 이 책이 함수형 프로그래머에게 참고서가 되고, 함수형 환경에서 데이터 구조를 작성하는 법을 배우고 싶은 사람들에게 교과서 역할을 할 수 있기를 바란다.

★ 옮긴이의 말 ★
함수형 프로그래밍이 개발자들 사이에서 기본 교양으로 자리 잡기 시작했지만, 아직도 함수형 언어나 함수형 프로그래밍은 느리다는 편견을 가진 개발자가 많다. 특히 데이터 구조에 있어서는 불변성을 활용한 데이터 구조를 사용하면 제자리에서 데이터를 갱신하면서 최적화된 알고리즘을 사용할 수 있는 명령형 데이터 구조보다 느릴 것이라는 편견이 있는 개발자가 많을 것이다. 실제로 1990년대 중반까지만 하더라도 불변성을 활용한 데이터 구조를 사용하면 명령형 데이터 구조보다 느릴 것이라는 생각은 단순한 편견은 아니었다. 물론 물밑에서는 이 문제를 해결하려는 여러 가지 노력과 연구가 진행되고 있었다. 크리스 오카사키(Chris Okasaki)는 그런 연구 결과를 집약하고 자신의 연구 결과를 덧붙여서 박사 학위 논문을 썼고, 나중에 이를 좀 더 보완해 『Purely Functional Data Structures』라는 이름의 책으로 펴냈다. 이 책은 불변성(immutability)과 지연 계산(laziness)을 활용해 100% 함수적으로 만든 데이터 구조와 알고리즘도 명령형 데이터 구조나 알고리즘만큼 성능이 좋을 수 있다는 사실과 그런 데이터 구조를 만들기 위한 몇 가지 방법을 제시한다. 그리고 함수형 프로그래밍을 공부하는 사람들 사이에서는 일종의 고전으로 자리 잡았다.
비록 책의 제목은 데이터 구조 책처럼 보이지만, 데이터 구조에 대해서만 써놓은 책이 아니다. 이 책에서 제시하는 기수법을 활용한 데이터 구조 개발 방법이나 지연 계산을 활용해 비싼 연산을 분산시켜서 알고리즘의 효율을 높이는 기법 등을 읽어보고, 직접 코드를 작성하고 분석하다 보면 지금까지와는 전혀 다른 사고방식에 눈뜰 수 있을 것이다. 지연 계산을 활용해 연산을 분산시키는 것은 메모리와 실행 시간을 맞바꾸는 전통적인 트레이드오프(trade-off) 관계의 연장선상에 있다고 볼 수 있다. 힙에 맵(또는 딕셔너리) 등을 할당하고 이를 활용해 계산 결괏값을 저장함으로써 알고리즘의 효율을 높였던 방식에서 더 나아가 나중에 수행하거나 분산시켜 수행해야 할 계산을 함숫값(또는 클로저)이나 지연 계산 썽크(thunk) 형태로 저장하고 이를 활용해 효율적인 알고리즘을 개발할 수 있다. 어쩌면 이를 좀 더 확장하면 마이크로서비스 아키텍처 등의 분산 시스템이나 동시성 시스템 기술에 활용할 수 있는 새로운 라이브러리나 기법을 만들 수 있을지도 모른다. 굳이 그런 실무 활용을 고려하지 않더라도, 여러분이 원하는 작업을 처리하는 새로운 방법을 배우고 함수형 사고방식을 연습할 수 있는 교재로도 이 책은 (약간은 어렵겠지만) 훌륭하다. 함수형 프로그래밍 기초 서적을 한 권 정도 마무리하고, 하스켈이나 스칼라 같은 언어 책을 읽은 개발자에게 한 번쯤 도전해보라고 권하고 싶다.
개인적으로는 이런 고전 수준의 책을 번역한다는 것이 상당히 설레면서도 두려웠다. 쉬운 작업은 아니었고 아마 실수한 부분도 있겠지만 그래도 몇 권 안 되는 번역서 중에 이런 책이 추가된 건 큰 행운이라고 생각한다.

목차

1장. 소개
1.1 함수형 데이터 구조와 명령형 데이터 구조 비교
1.2 미리 계산하는 언어와 지연 계산 언어
1.3 용어
1.4 접근 방법
1.5 이 책의 개요

2장. 영속성
2.1 리스트
2.2 이진 검색 트리
2.3 참고사항

3장. 이미 잘 알려져 있는 데이터 구조의 함수형 구현
3.1 레프티스트 힙
3.2 이항 힙
3.3 적흑 트리
3.4 참고사항

4장. 지연 계산
4.1 $ 표기법
4.2 스트림
4.3 참고사항

5장. 분할 상환 기초
5.1 분할 상환 분석 기법들
5.2 큐
5.3 이항 힙
5.4 스플레이 힙
5.5 페어링 힙
5.6 나쁜 소식
5.7 참고사항

6장. 지연 계산을 통해 분할 상환과 영속성을 동시에 달성하기
6.1 실행 트레이스와 논리적 시간
6.2 영속성과 분할 상환 사이를 중재하기
6.2.1 지연 계산의 역할
6.2.2 지연 계산 데이터 구조를 분석하기 위한 프레임워크
6.3 은행원 기법
6.3.1 은행원 기법의 정당성
6.3.2 예제: 큐
6.3.3 부채 상속
6.4 물리학자 기법
6.4.1 예제: 이항 힙
6.4.2 예제: 큐
6.4.3 예제: 공유를 사용하는 상향식 병합 정렬
6.5 지연 계산 페어링 힙
6.6 참고사항

7장. 분할 상환 없애기
7.1 스케줄링
7.2 실시간 질의
7.3 이항 힙
7.4 공유를 사용한 상향식 병합 정렬
7.5 참고사항

8장. 지연 재구축
8.1 일괄 재구축
8.2 전역 재구축
8.2.1 예제: 후드-멜빌 실시간 큐
8.3 지연 재구축
8.4 양방향 큐
8.4.1 출력이 제한된 데크
8.4.2 은행원의 데크
8.4.3 실시간 데크
8.5 참고사항

9장. 수치적 표현
9.1 위치에 기반한 수 체계
9.2 이진수
9.2.1 이진 임의 접근 리스트
9.2.2 영이 없는 표현들.
9.2.3 지연 계산 표현
9.2.4 조각을 사용하는 표현
9.3 치우친 이진수
9.3.1 치우친 이진 임의 접근 리스트
9.3.2 치우친 이항 힙.
9.4 삼진수와 사진수
9.5 참고사항

10장. 데이터 구조적 부트스트래핑
10.1 구조적 분해
10.1.1 비균일 재귀와 SML
10.1.2 이진 임의 접근 리스트 다시 보기
10.1.3 부트스트랩으로 만든 큐
10.2 구조적 추상화
10.2.1 효율적 연결을 지원하는 리스트
10.2.2 효율적인 병합을 지원하는 힙
10.3 조합된 타입 부트스트래핑하기
10.3.1 트라이
10.3.2 일반화한 트라이
10.4 참고사항
11 암시적이며 재귀적인 감속
11.1 큐와 데크
11.2 연결 가능한 데크
11.3 참고사항

부록 A. 하스켈 소스 코드

출판사 서평

★ 이 책의 구성과 대상 독자 ★
데이터 구조를 다루는 대부분의 책에서는 C나 C++와 같은 명령형(imperative) 언어를 가정하고 설명한다. 하지만 명령형 언어의 데이터 구조는 SML(Standard ML), 하스켈(Haskell), 스킴(Scheme) 등의 함수형 언어로 잘 변환되기 어렵다. 이 책은 함수형 언어의 관점에서 데이터 구조를 살펴보고, 프로그래머가 자신만의 함수형 데이터 구조를 개발할 때 도움이 되는 여러 설계 기법을 보여준다. 적흑 트리(red-black tree)나 이항 큐(binomial queue) 등... 더보기

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면 통합포인트를 드립니다.
결제 90일 이내 작성 시 300원 / 발송 후 5일 이내 작성시 400원 / 이 상품의 첫 리뷰 작성 시 500원
(포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외)
안내
  • 해당도서의 리뷰가 없습니다.

Klover 평점/리뷰 (0)

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 책의 원서번역서

안내

이 분야의 베스트

  • 이남호
    23,310원
  • 길벗알앤디
    27,900원
  • 윤종식
    25,200원
  • 길벗R&D
    17,100원
  • 한국데이터진흥원
    16,200원
더보기+

이 분야의 신간

  • 윤종식
    25,200원
  • BC카드 빅데이터센터
    17,100원
  • NCS 정보처리기술사 연구회
    25,200원
  • 김환희
    27,000원
  • 이남호
    23,310원
더보기+

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품