본문 바로가기
  • Coding & Book
독서/IT관련

[나는리뷰어다] <함수형 프로그래밍>

by 루이3 2024. 4. 21.

책 선정

이번 4월 한빛미디어 서평단 "나는 리뷰어다"에서 신청한 책은 "함수형 프로그래밍 with 자바"입니다.

많은 책들 중 이 책을 선택한 이유는 출판사도 꽤 알려진 출판사이며 "람다(lambda)에 익숙해지고 싶었기 때문입니다."

그리고 저번 "헤드퍼스트 자바 3탄"이 너무 마음에 들었어서 같은 출판사의 책을 보고 싶었던 것 도 있던 것 같습니다.  

 

 

출판사

저번 "헤드퍼스트 자바" 편에서는 출판사 이야기를 하지 않았지만

이 책의 출판사 "오라일리 미디어"는 미국의 출판사에서 출간된 책이며

오라일리 미디어는 주로 컴퓨터 프로그래밍과 같은 책들로 이름이 높게 알려져 있습니다.

저 같은 경우도 "밑바닥부터 시작하는 딥러닝", "밑바닥부터 시작하는 데이터 과학", "헤드퍼스트 자바" 등을 가지고 있을 정도입니다.

 

 

 

목차

이 책은 15개의 챕터로 이루어져 있습니다.


1. 함수형 프로그래밍 소개

2. 함수형 자바

3. JDK의 함수형 인터페이스

4. 함수형 접근 방식

5. 레코드

6. 스트림을 이용한 데이터 처리

7. 스트림 사용하기

8. 스트림을 활용한 병렬 데이터 처리

9. Optional을 사용한 null 처리

10. 함수형 예외 처리

11. 느긋한 계산법(지연평가)

12. 재귀

13. 비동기 작업

14. 함수형 디자인 패턴

15. 자바를 위한 함수형 접근 방식

 

 

소개

책의 시작은 역시 람다 대수부터 시작합니다.

람다 대수의 구성요소인 추상화, 응용, 베타축약등을 시작으로 람다 표현식, 람다 문법을 알려주고 있습니다.

(<parameters>) -> { <body> }

 

 

그 후 람다를 실제로 활용한 작동 방식에 대해서 설명해주고 있으며
람다 호출, 메서드 참조 방법에 대 설명해주고 있습니다.

LikePredicate<String> isNull = value -> value == null;

Predicate<String> wontCompile = isNull;

 

 

그다음부터  스트림, Optional, Com-pletableFuture에 대해 자세하게 설명해주고 있습니다.

아래는 책의 설명 중 일부(스트림에 관한 설명)이며 하나하나 설명해주고 있는 것을 확인하실 수 있습니다.

boolean anyMatch(Predicate<? super T> predicate)
//predicate와 일치하는 요소가 스트림에 하나라도 존재하면 true를 반환합니다.

boolean allMatch(Predicate<? super T> predicate)
//스트림의 모든 요소가 predicate와 일치하면 true를 반환합니다.

boolean noneMatch(Predicate<? super T> predicate)
//predicate와 일치하는 요소가 스트림에 없으면 true를 반환합니다.

 

챕터 처음 부분에는 대부분 무엇을 배울 건지를 간략하게 써주고 있으며

중간 부분에는 각 방법들에 대한 설명,

챕터 마지막 부분에는 핵심을 요약 한 부분 이 나와있어 배운 것을 정리하는데 도움을 주고 있습니다.

핵심 요약 페이지

 

읽고 난 후

2014년 자바 8에서 람다 표현식과 스트림 API가 나왔습니다.

이로 인해 자바에서는 자바 8부터 함수형 프로그래밍의 시작되었다고 할 수 있습니다.

 

하지만 대부분 사람들이 람다, 스트림등 많은 기능들이 있다는 것은 알지만 어느 상황에 사용해야 하는지는 잘 모릅니다.

하지만 개발자는 상황에 따라 패러다임과 적합한 도구들을 선택하는 경우가 생기기 마련이죠.

 

저자는 위와 같은 상황에 대한 다양한 선택을 할 수 있게

언어를 함수형으로 만드는 다양한 개념들과 스트림, Optional, Com-pletableFuture와 같은 기능들에

대해 자세하게 설명해주고 있습니다.

 

그래서 개발자 입장에서 오류발생 가능성을 줄여주고, 더 간결하고 합리적인 코드를 작성하게 도와주며

다양한 상황에 더 합리적인 코드 사용할 수 있도록 도와주고 있습니다.

 

따라서 이 책은 자바에 대해 어느 정도 익숙하고 함수형 프로그래밍에 대해 알고는 있지만

어디에 어떻게 사용하는지 잘 모르시는 분들, 혹은 효율적으로 코드를 리팩터링 하고 싶은 분들,

백엔드 개발자와 자바 개발자 분들에게 추천드리고 싶습니다.

 

 

위 내용은 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."