[리뷰] 자바 개발자를 위한 함수형 프로그래밍

자바 개발자를 위한 함수형 프로그래밍(한빛 소프트)



해커와 화가를 읽으면서 Lisp이라는 함수형 프로그래밍언어가 좋다는 이야기를 들었고,
그뒤로 스칼라, 얼랭, 클로저… 다양한 함수형 프로그래밍 언어에 관한 책이 나오는 것을 보았다.


다양한 언어가 개발되고, 책이 번역되어 나오고 있는 상황이어서, 그저그런 언어들중 하나인가보다 생각했고,
C++,Java같은 객체 지향(OOP)언어도 제대로 못하고 있는데 무슨 함수형 프로그래밍이냐?
배운다고 해도 어디에 쓸수있을까? OOP나 잘하자.. 라는 생각만 하고 있었다.

이 책을 처음 봤을때도 역시 같은 생각이었다.

그래도 조금더 호기심을 가지고 책에 대한 설명을 읽어 보았더니,
확 땡기는 문구가 있어서 책을 읽을 수 있었다.
“함수형 프로그래밍 기법을 익힌 개발자와 그렇지 않은 
개발자가 작성하는 코드의 품질은 완전히 다르다”  - 역자, 임백준

이책에서 도대체 무엇을 설명하기에 이렇게 말할 수 있는것인가?
나도 함수형 프로그래밍을 배우면 OOP로 작성하는 코드의 품질도 좋아 질 수 있는간가?
C++도 lamda를 지원하기 시작했고, Java 8 부터는 클러저와 람다 기능이 포함된다고 한다니..
이제부터라도 조금씩 봐두면 더 좋은 품질의 코드를 작성할 수 있지 않을까? 는 생각으로 책을 읽었다.

책을 읽고 난 뒤의 결론은, 역시 뭐든지 한번에 얻을 수 있는 것은 없었다.

어려워서 이해 안되는 내용들도 있었지만, 상당히 괜찮은 내용들로 생각의 꺼리들을 던져줬다.

이 책은 특정 함수형 프로그래밍 언어에 대한 개론서나 문법 설명같은 책이 아니다.
OOP개발자에게 함수형 프로그래밍이란 무엇인가, 어떻게 하는가에 대해서 설명한 앏은 책이다.
(E-book이기 때문에 두깨를 알 수는 없지만 100페이지도 안하는걸 보면 분명 앏은 책일것이다)

책은 Java를 기준으로 설명한다. 그렇다고 자바에서의 클로저와 람다 사용법을 설명하지는 않는다.
지금의 자바에서 함수형 프로그래밍을 어떻게 할 수 있는지에 관한 설명을 한다.

책 설명에서는 Java를 몰라도 OOP에 대한 개념만 있으면 코드를 이해하는데 무리없다고 했지만,
Java의 제네릭과 익명 함수에 대해서만큼은 어느 정도 개념이 잡혀 있어야 책을 읽는데 무리가 없을 것이라 생각된다.
안그러면 저처럼 음음음.. 이런 내용이고, 대략 이렇게 흐름을 잡아가겠구나..할 수 밖에 없을것이다.

개인적으로 책에서 마음에 들었던 부분은 객체 지향 프로그래밍을 할때
함수적 아이디어를 어떻게 적용할 지에 관해 설명하는 5장 더 나은 객체지향 프로그래밍 챕터이다.
객체 지향 프로그래밍으로 프로그래밍을 하고 있기 때문에 함수형 프로그래밍 자체보다는 객체 지향에 적용할 수 있는
함수적 아이디어를 알려주었기 때문이라 생각된다. 객체 지향 프로그래밍에 대해 가지고 있던 생각들을
다시 한번 점검해볼 수 있어서 아주 괜찮았다. 이 내용이 더 많이 있었으면 좋겠다는 생각도 들었다.

그 외에도 책에서는, 동시성 문제, 더 낳은 타입 설계, 리스트와 맵, 함수적 동시성.. 

다양한 함수형 프로그래밍 개념을 설명해주고 있다. 


OOP개발자가 함수형 프로그래밍언어에 관심을 가지고 있다면, 

가장 우선적으로 이것을 읽고 다른 언어책을 읽어보기를 권하고 싶다. 


그리고, OOP개발자이지만, 함수형 프로그래밍에 대해서 아무런 관심이 없는 

개발자에게는 책에 나와있는 내용을 권하고 싶다.

“앞으로 10년 이내에 새롭게 배울 언어는 모두 클로저로부터 

지대한 영향을 받은 언어일 거라는 사실에 내기를 걸어도 좋다”

이정도의 자신감이라니, 당장 클로저를 배워둬야 겠다는 생각이 들었다.


책 뒷부분에 나오는 용어 정리는 적당히 알고 있던 용어들에 대해서 명확한 정의를 해주어서 좋았고,
각 챕터마다 연습문제를 주어서 독자에게 연습을 시키려고 하지만.. 풀어보지는 못했다.