Top

함수형 프로그래밍 [함수적으로 생각하고 코드 복잡성 관리하기]

  • 원서명Learning Functional Programming: Managing Code Complexity by Thinking Functionally (ISBN 9781098111755)
  • 지은이잭 위드먼(Jack Widman)
  • 옮긴이이진호, 한용진
  • ISBN : 9791161758213
  • 20,000원
  • 2024년 02월 16일 펴냄
  • 페이퍼백 | 204쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

요약

함수형 프로그래밍의 기본 개념을 학습할 수 있으며, 소프트웨어 개발자가 함수형 프로그래밍을 객체지향 프로그래밍과 함께 사용하는 방법을 배울 수 있다. 저자는 자바, 파이썬, C#, Scala, 자바스크립트 등 다양한 프로그래밍 언어로 작성한 예제를 통해 복잡한 소프트웨어 프로젝트에서 함수형과 객체지향 프로그래밍의 조화를 이끌어내는 방법을 알려준다. 또한 함수적인 접근법을 통해 간결하고 수정이 용이하며 일관된 코드를 작성하는 방법과, 함수형 프로그래밍과 객체지향 프로그래밍의 차이를 이해하면서 두 스타일을 소프트웨어 프로젝트에 통합시키는 방법을 배울 수 있다. 독자는 이 책의 내용을 바탕으로 함수형 프로그래밍을 실무에 적용할 수 있을 것이다.

이 책에서 다루는 내용

◆ 함수형 프로그래밍 기본 개념을 배우고 함수형 프로그래머가 문제에 접근하는 방식을 탐구한다.
◆ 함수형 프로그래밍이 객체 지향 프로그래밍과 명령형 프로그래밍이 어떻게 다른지 이해할 수 있다.
◆ 함수적인 방식으로 현실을 모델링하는 실용적이고 적용 가능한 디자인 패턴 세트를 사용할 수 있다.
◆ 함수형 프로그래밍 및 객체지향 프로그래밍 기능을 소프트웨어 프로젝트에 통합하는 방법을 학습할 수 있다.
◆ 함수형 디자인 패턴을 적절하게 적용하고, 정확하고 견고한 동시에 쉽게 수정할 수 있는 코드를 작성할 수 있다.

이 책의 대상 독자

기본적으로 모든 프로그래머를 대상으로 한 책이다. 함수형 프로그래밍에 대한 경험은 없지만 들어본 적이 있고, 궁금한 점이 많거나 지식이 전혀 없는 상태에서 서점에서 이 책을 구매한 경우에도 유용할 것이다. 숙달된 함수형 프로그래밍 프로그래머 또한 도움이 될 만한 내용을 찾을 수 있을 것이다.
함수형 프로그래밍에 관해 다른 책에서는 다루지 않는 방식으로 함수형 프로그래밍의 범주론의 근간을 심층적으로 설명한다. 마지막으로 활용 경험이 어느 정도 있지만 함수형 프로그래밍을 구성하는 개념과 이론을 더 깊이 이해하고 싶은 프로그래머는 이 책을 통해 많은 것을 배우고 즐길 수 있을 것이다.

저자/역자 소개

지은이의 말

최근 몇 년간 함수형 프로그래밍(FP)은 부흥기를 맞이하고 있다. 자바, 자바스크립트, 파이썬과 같이 처음부터 함수형으로 설계되지 않았던 프로그래밍 언어들이 시간이 지나면서 함수형 기능을 포함하도록 발전함에 따라 수많은 회사에서 함수형 프로그래밍 경력을 보유한 프로그래머를 찾고 있다. 함수형 개발 경력을 보유한 프로그래머에 대한 수요는 함수형 방식을 따를 때 버그가 더 적게 생성되고 확장 가능한 견고한 코드를 생성하는 등 개발 프로세스가 개선될 것이라는 인식에 기반을 두고 있다. 이것이 사실인지에 대한 여부와 앞으로 작성될 코드에서 함수형 코드의 비율이 더 높아질지에 대한 여부는 시간이 흘러감에 따라 더 분명해질 것이다. 지금은 함수형 프로그래밍을 각각 장단점을 보유한 여러 패러다임 중 하나로 생각하자.

지은이 소개

잭 위드먼(Jack Widman)

학계에서 수학자로 커리어를 시작했다. 미적분학 및 이산 수학 과정을 가르치면서 의사 콤팩트(pseudo-compact) 위상군(topological group)의 복잡한 수학 이론을 연구하고 지도했다. 그러던 중 친구의 제안으로 프로그래밍을 접하고 적성에 맞는지 알아보기로 결심했다. 그로부터 24년이 지난 지금, 꾸준히 코드를 설계하고 작성하고 있다. 수학 박사 학위와 24년간의 소프트웨어 산업군의 경력을 바탕으로 수학적 뿌리가 깊은 함수형 프로그래밍에 관한 책을 집필하자는 아이디어를 떠올렸고, 그 결과 이 책을 완성했다. 여가 시간에는 사이버 보안에 관한 다양한 글을 읽고, 쓰고, 배우는 것을 즐긴다.

옮긴이의 말

최근 스칼라, 코틀린, 타입스크립트, 하스켈 등 다양한 함수형 프로그래밍 언어가 소프트웨어 개발에 활용되고 있다. 이러한 인기의 비결은 함수형 프로그래밍만이 갖고 있는 여러 특징 때문이다. 많은 프로그래밍 언어가 개발의 편의성을 이유로 동적 타입 시스템을 적용한 프로그래밍 언어를 사용하고 있다. 그러나 이는 유지 보수를 어렵게 만들며 예기치 못한 오류를 발생시킨다. 반면, 함수형 프로그래밍은 부수 효과(side effect)가 없기 때문에 테스팅과 디버깅에 용이하다는 장점이 있다. 정적 타입 시스템을 채택한 함수형 프로그래밍은 이러한 장점을 극대화시킬 수 있다. 하지만 함수형 프로그래밍은 반복문, 조건문과 같은 기본적인 문법만 익혀서는 효과적으로 실무에 사용할 수 없으며 일급 객체, 범주론, 집합론 등 다양한 수학적 개념을 익혀야 효과적으로 사용할 수 있다. 이 책에서는 이러한 수학적 개념들과 함께 불변성, 지연 계산법과 같은 특징을 다루기 때문에 함수형 프로그래밍의 본질을 이해하고 실제 업무에 활용하는 데 많은 도움이 될 것이다.
과거 명령형 프로그래밍만 전적으로 사용하던 시절이 있었지만 현재는 객체지향 프로그래밍과 명령형 프로그래밍이 함께 조화를 이루고 있다. 앞으로는 함수형 프로그래밍과 객체지향 프로그래밍을 함께 활용하는 개발 방법론이 적용될 것이다. 이 책은 이러한 함수형 프로그래밍과 객체지향 프로그래밍을 함께 사용할 수 있는 방법도 다루고 있다. 프로그래밍 언어 연구에 매진하는 연구원으로서 함수형 프로그래밍을 배우고 싶어 하는 독자에게 이 책을 강력히 추천한다.

옮긴이 소개

이진호

성균관대학교 컴퓨터 교육학과를 졸업하고, 기업은행과 금융결제원을 거쳐 금융보안원에서 재직 중이다. 최근 미국으로 연수를 떠나 캘리포니아 대학교 데이비스(UC Davis)에서 컴퓨터 과학 석사 과정을 수료했다. 사이버 보안 분야뿐만 아니라 다른 사람들에게 지식을 전달하는 일에도 관심이 많아 다양한 책을 번역하고 있다. 지금까지 에이콘출판사에서 『실전 버그 바운티』(2021), 『AWS 침투 테스트』(2020), 『금융 사이버 보안 리스크 관리』(2019) 등 총 8권의 책을 번역했다. 자세한 소개는 링크드인(https://www.linkedin.com/in/pub-ezno/)에서 확인할 수 있다.

한용진

동국대학교 컴퓨터공학과를 졸업 후 현재 캘리포니아 대학교 데이비스에서 컴퓨터 과학 석사 과정을 밟고 있다. 프로그래밍 언어론과 자동 프로그래밍에 관심이 많으며, 신뢰 가능하고 안전한 소프트웨어 개발을 연구 목표로 하고 있다.

목차

목차
  • 1장. 함수형 프로그래밍 소개
    • 불변성
    • 참조 투명성
    • 고차 함수
    • 지연 평가
    • 함수형 프로그래머처럼 생각하기
    • FP의 장점
      • FP를 통한 생산성 향상
      • FP는 재미있다
      • 스칼라
    • 결론

  • 2장. 기초 수학
    • 집합론
      • 함수
      • 함수의 종류
    • 컴퓨터 과학 기초
      • 익명 함수
      • 일급 객체로서의 함수
    • 결론

  • 3장. 범주론과 패턴
    • 패턴 기반 범주론
      • 간략한 역사
      • 대상과 사상
      • 범주의 예
      • Scal 범주
      • 펑터
      • 펑터의 프로그래밍 언어 표현
    • 패턴
      • 펑터 패턴
      • 모노이드
      • 자연 변환
      • 모나드
    • 결론

  • 4장. 함수형 자료 구조
    • Option 자료 구조
    • Try 자료 구조
    • Either 자료 구조
    • 고차 함수
    • Scala의 for 컴프리헨션을 위한 모나드
    • 기존 자료 구조
      • 불변성과 기록
      • 지연
    • 결론

  • 5장. 불변성 자세히 알아보기
    • 가변과 불변 변수
    • 재귀
      • 연결 리스트의 예
    • 꼬리 재귀
    • 스칼라 fold의 강력한 기능과 관련된 예
    • fold와 Monoid 사이의 연관성
    • 고차 함수에 대한 추가 정보
      • map에서 flatMap으로
    • 결론

  • 6장. 동시성에 대한 질문
    • 스트림
    • Akka 스트림
      • 소스
      • Flow
      • Sink
    • 스트림 더 알아보기
    • FS2
    • 결론

  • 7장. 어디로 가야 하는가?
    • 순수한 방식 채택하기
      • IO 모나드
      • 중간 노선 선택
      • JVM 언어
      • 닷넷 언어
      • 타입 클래스
    • 결론

  • 부록. 스칼라

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안