[서평] 함수형 프로그래밍 with 자바
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
리뷰
함수형에 영향 받아 들어 온 문법(람다, 스트림, 등)을 긴 코드 짧게 치는 용도로 생각하고 있다면 읽어봐야 할 책
대학교에서 과제나 학교공부를 하다보며 자연스럽게 수업에서 자주 다루는 자바를 많이 활용합니다. 그래서 다양한 친구들의 자바 소스코드를 구경했습니다. 보통 학교에서 가르치고 요구하는 스타일은 자바 8.0 이전의 스타일입니다. (제 개인적인 경험으로는) 과제 코드 자체가 2000년대 초의 Java 1.4 코드거나 제약 조건이 있고 예전 강의자료를 기반으로 대표적인 문법을 쓰기에 그런 것 같습니다. 그래서 그런지 주변의 친구들이 자바를 활용하는 방식을 보면 디자인 패턴이나 객체 지향 등을 공부하며 OOP 스타일의 자바는 익숙하지만 함수형 스타일은 아예 모르는 경우가 많았습니다. 보통은 람다의 개념도 얼추 알지만 그냥 일회성으로 구현을 할 수 있어서 짧게 쓰는 용도로 함수형 문법을 받아들인 친구도 많았습니다.
가끔은 함수형 언어에서는 어떤 관점으로 문제를 어떻게 표현하고 풀어나가는지 데이터, 순수 함수, 고차 함수를 통한 추상화, 테스트, 스트림 처리 등의 선언적으로 코드를 짜는 예시를 보여주며 쭉 설명하고는 합니다. 요즘 선언적으로 UI를 만들 수 있는 라이브러리가 유형하며 프론트엔드를 해본 친구들은 괜찮은데 순수 자바나 게임 쪽만 판 친구들의 표정은 되게 묘했습니다. 이런 함수형 스타일이 자바에 어떻게 실용적으로 적용할 수 있는지 잘 와닿지 않아 의문인 친구도 있었습니다. 추상적인 내용에 헷갈려하는 친구들에게 추천해줄만한 책이 나온 것 같아서 반갑습니다.
이 책은 자바에서 함수형 스타일로 짜는 여러 방법들을 나열만 하지 않고 함수형으로 어떻게 접근하고 자바에서는 이런 관점으로 어떻게 문제를 풀어갈 수 있는지 설명합니다. 함수형에서 자주 사용하는 개념도 설명되어 있어서 따로 찾아보지 않아도 충분히 이해할 수 있을 것 같습니다. 가끔은 함수형 개념을 찾아보다 보면 너무 이상적이거나 수학적이라서 어떻게 사용하라는 건지 모르겠는 경우도 있습니다만 이 책은 자바로 되어 있어서 그런지 함수형 문법 때문에 막힌적이 거의 없었고 편하게 학습할 수 있었습니다. 물론 함수형의 단점, 불리한 점, 특정 방식의 오버헤드들도 다룹니다.
저는 이 책을 보기 전에 스트림 사용법과 Optional 체인을 보통 어떻게 다루는지 궁금했는데 이러한 내용을 정리할 수 있어서 좋았습니다.
요즘 멀티쓰레딩 수업을 들으면서 Thread를 상속 받아서 수행하도록 코드를 많이 짜고 있습니다.
그러면서 요즘에는 동시성 처리를 어떻게 할까 싶어서 스트림 API들을 이용해서도 한번 짜봤는데 코드가 너무 깔끔해져서 무슨 마법이 일어나는 걸까 고민한 적이 최근에 있습니다. 이 책을 읽으면서 JVM 내에서 어떻게 돌아가는지 어떤 오버헤드가 생기는지 힌트를 얻어서 한번 나중에 블로그 글로 정리해볼까 합니다.
추천 대상
함수형 문법을 단순히 자바 문법을 축약해서 편하게 사용할 수 있게 해주는 기능이라고 생각한다면 한번 읽어보시는 것을 추천합니다.
댓글
이 글 공유하기
다른 글
-
[서평] 데브옵스 엔지니어를 위한 실전 관찰 가능성 엔지니어링
[서평] 데브옵스 엔지니어를 위한 실전 관찰 가능성 엔지니어링
2024.06.23 -
[서평] 혼자 공부하는 네트워크
[서평] 혼자 공부하는 네트워크
2024.05.26 -
[서평] 헤드 퍼스트 자바(3판)
[서평] 헤드 퍼스트 자바(3판)
2024.02.25 -
[서평] 프로덕트: 유저를 사로잡는 서비스 기획의 모든 것
[서평] 프로덕트: 유저를 사로잡는 서비스 기획의 모든 것
2023.12.25