본문 바로가기

책을 보다

[리뷰] 언어가 아닌 사고방식 <함수형 프로그래밍 with 자바>

 

프라모델과 레고를 같이 다루어야 하는 상황이라면 대충 감을 잡을 수 있으리라 생각합니다.

 

정해진 부품을 잘 다듬어 가며 조립하는 프라모델 같은 객체 지향과

기초 블록만으로 모든 것을 만들 수 있지만 한땀한땀 조립해야 하는 레고 블록 같은 함수형 프로그램.

설계와 분해가 공존하는 세상에 오신 걸 환영합니다.

 

함수형 프로그래밍이 전혀 생소하지는 않습니다만, 한번 읽고 모두 이해하신 분들이 부러울 따름입니다.

옆에 두고 수시로 들춰보며 생각 방식을 해체하고 조립하기를 반복해야 할 듯 보입니다.

 

세계관

세계관이 충돌이라고 할 수 있습니다만, 앞으로 나아가는 방향으로 생각한다면,

세계관 통합이라고 말할 수 있을 것 같습니다. 세계관 공유라고 해도 좋구요.

 

객체 지향 세상을 이끈 걸출한 자바가,

더욱 복잡해지고 세분화하는 세상에서 도전에 맞닥뜨리고 있는 현장을 보고 계십니다.

조금 느리지만 객체 지향을 디디고 있으면서 어떻게 함수형 프로그래밍을 받아들이고 있는지 볼 수 있습니다.

 

자바의 향기

자바를 사용하면 알게 모르게 익숙해지는 것 가운데 하나가 보일러플레이트입니다.

속도를 올리는 방식 가운데 하나인 익숙함을 사용하고 있습니다.

보일러플레이트처럼 각 장을 구성하고 있습니다.

 

먼저 문제를 펼쳐놓고, 무엇을, 어떻게 접근하려는지 알려줍니다.

그런 다음 목표로 삼은 문제에 대응하거나 개선하는 방식을 풀어나갑니다.

그리고, 어디에나 있고 놓치면 헤매기 쉬운 주의사항을 알려줍니다.

마지막으로 요약하며 생각과 내용을 정리합니다.

 

중요한 건 뭐다?

불변성!

프로그래밍하는 방식이 바뀌고 있습니다.

주어진 자원을 아끼고 최대한 활용하는 방향에서,

의도치 않은 오류와 사이드 이펙트에서 벗어나는 방향으로.

너무나 많은 예외와 다양한 상황에 대응하느라 지쳤다고 할까요.

 

행복한 경로까지는 아니더라도 중요한 부분에 집중하려면

무엇보다 불변성이 있어야 한다고 수시로 강조합니다.

 

 

익숙한 내용, 처음 보는 내용, 이렇게까지 해야 할까 의구심이 드는 내용 등

자바에서 함수형 프로그래밍을 어떻게 다루어야 하는지 알려주는 좋은 길잡이라고 생각합니다.

 

책에서 인용하고 있는 문구 두 개가 이 책이 지향하는 바를 알려줍니다.

먼저 작동하게 만들라. 그다음 올바르게 수정하고, 마지막으로 빠르게 만들어라.

 

함수형 프로그래머가 되지 마세요.
객체 지향 프로그래머가 되지 마세요.
더 나은 프로그래머가 되세요.

 

 

결과를 만들자, 도구는 거들뿐.

 

 

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

반응형