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

잭위드먼

저자:잭위드먼

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



역자:이진호

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



역자:한용진

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

목차


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언어
____닷넷언어
____타입클래스
__결론

부록.스칼라

출판사 서평

이책에서다루는내용

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

이책의대상독자

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

옮긴이의말

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