본문으로 바로가기

[도서리뷰] 함수형 프로그래밍 with 자바

category 도서 2024. 4. 28. 23:12

https://www.hanbit.co.kr/store/books/look.php?p_code=B4510967402

 

함수형 프로그래밍 with 자바

모던 자바의 새로운 전환점, 함수형 프로그래밍에 집중하라. 람다와 스트림을 활용한 자바 함수형 프로그래밍 실전 가이드

www.hanbit.co.kr

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
따라서, 최대한 내용을 펼쳐놓는 형태로 리뷰를 작성하려고 합니다. 
참고하셔서 책을 선택해보시면 좋을것 같습니다. ^^ 

 

1. 책을 쓴 이유 목적
람다, 스트림등 자바에서 제공하는 많은 함수형 기능의 깊이있는 이해와 활용을 할 수 있게 하기 위해
함수형으로 만드는 다양한 개념들과 JDK에서 제공하는 도구 or 직접 생성한 도구들로 자바 코드에 결합하는 방법을 설명하기 위해
자바 코드에 함수형 접근 방식을 적용하여 오류 발생 가능성을 줄이고, 더 간결하고 합리적이며 미래 지향적인 코드를 작성할 수 있다.

2. 대상 독자
함수형 프로그래밍이 궁금하거나 자바 코드에 직접 적용해보고 싶은 독자
자바에서 함수형 프로그래밍을 사용하고 있는 사람
자바 표준 라이브러리에 어느정도 익숙해 있는 사람
함수형의 개념과 관용구를 이해하고, 이러한 개념들을 자바 코드에 효과적으로 결합하는 방법을 알고싶은 사람  

3. 이 책에서 다루는 내용
합성composition : 모듈식으로 쉽게 합성할 수 있는 블록을 구축합니다.
표현식expressiveness : 의도를 명확하게 표현하는 간결한 코드를 작성합니다. 
코드 안정성safer code : 오류를 발생시키지 않고 경합 조건race condition이나 락lock을 처리할 필요가 없는 더 안전한 자료 구조를 만들 수 있습니다. 
모듈성modularity : 큰 프로젝트를 더 쉽게 관리할 수 있는 모듈로 분할합니다. 
유지보수성maintainability : 연관성이 적은 함수형 블록들을 사용하여 코드의 다른 부분을 손상시키지 않으면서 코드 변경이나 리팩토링을 더 안전하게 수행할 수 있습니다. 
데이터 조작data manipulation :  더 적은 복잡성으로 효율적인 데이터 조작 파이프라인을 구축합니다.
성능performance : 불변성과 예측 가능성을 통해 큰 고민 없이 병렬로 수평 확장이 가능합니다. 

4. 책의 구성
PART01 함수형 기초
   함수형 프로그래밍 소개
   함수형 자바 
   JDK의 함수형 인터페이스
PART02 함수형 접근 방식
   불변성 
   레코드 
   스트림을 이용한 데이터 처리 
   스트림 사용하기 
   스트림을 활용한 병렬 데이터 처리 
   Optional을 사용한 null 처리
   함수형 예외 처리 
   느긋한 계산법( 지연 평가 )
   재귀
   비동기 작업
   함수형 디자인 패턴 
   자바를 위한 함수형 접근 방식 

5. 소스 코드
https://github.com/benweidig/a-functional-approach-to-java 

6. 소감
- 프로그래밍을 하는 과정은 문제를 해결해 가는 과정이기 때문에 그 과정안에서 어떤 언어나 기법을 사용하던 그것은 프로그래머의 전적인 자유라고 생각한다. 

- 다만, 그 프로그래머가 문제를 비즈니스의 구조에 맞게 가장 효과적이고 빠르게 해결할 수 있는 방법을 찾는게 가장 좋지 않나 생각한다. 
이 책에서는 그런 패러다임중에 함수형 프로그래밍을 어떨때 사용하고, 잘 사용하려면 어떻게 해야하는지에 대해 세부적으로 설명해 놓은 책인 것 같다. 

- 그 시대가 흘러가는 흐름의 프로그래밍 경향성은 분석을 하고 그 때, 그 때, 익혀두는 것은 좋은 것이라고 생각하지만, 실제 프로그래밍을 적용할 때는 자신의 기술과 비즈니스와 같이 협업을 하는 사람들의 능력들을 두루 고려해서 현 시대에 최신기술이라고 하더라도 굳이 그것을 꼭 쓸필요는 없다고 생각한다. 

- 하지만, 프로그래밍 패러다임이 바뀔때는 왜 그렇게 바뀌게 되는지, 그런 패러다임이 왜 나왔는지는 이해를 하고, 사용하는 방법을 익혀두는 건 좋은 방법이 아닌가 생각한다. 

- 어차피 기술의 흐름은 비즈니스 흐름을 타고 진화하기 때문이다. 그러나 그것을 적용하는 것은 상황에 맞게 적용하면 된다고 생각한다. 

- 이 책에서 나온 말 중에 가장 중요한 말은 아래 말이 아닌가 생각해서 옮겨본다. 
함수형 프로그래머가 되지 마세요. 
객체 지향형 프로그래머가 되지 마세요.
더 나은 프로그래머가 되세요. 
- 브라이언 게츠, FP vs OO : Choose Two -

- 문제를 더 잘 해결하는 사람이 되는게 중요한 게 아닌가 하는 생각을 해본다. 

- 이미 함수형 프로그래밍이 자바에 적용된지도 오래되었기때문에 자바에서 함수형 프로그래밍을 사용하고자 하는 사람들이 기본적인 내용을 다지고 개념을 정리하는데 도움이 되는 책이 아닌가 싶다.