간만에 유튜브 방송도 아니고 챗GPT 도움도 받지 않은 독후감을 쓰려니 감회가 새롭다. 요즘과 같이 에이전트 만능 시대에서 독서 능력도 높이고 글쓰는 능력도 높이는 방법은 이게 최고인 듯이 느껴진다. 그러면 전통적인 독후감 방식으로 다시 회귀한 기념으로 1번 타자를 소개한다. 인사이트 출판사에서 보내주신 함수형 설계, 객체 지향과 만나다가 바로 오늘의 주인공이다.
이 책은 매우 독특한 위치를 차지한다고 볼 수 있다. 함수형 언어에 대한 책인데 객체 지향 방식(응?)을 따르고 있고, 클린 아키텍처 설계 방식을 적용하는 내용을 담고 있기 때문이다. 직전 문장에서 이상함을 느끼시는 분들이 바로 이 책을 읽을 핵심 독차층으로 분류될 것이다. 저자가 이제 곧 2판 번역서로 여러분들을 찾아뵐 클린 코드의 엉클 밥이라는 사실을 알고 다시 한 번 앞의 문장을 읽어보면 이 책이 대충 어떤 식으로 전개될지 살짝 추측이 가기 시작할 것이다. 전통적인 함수형 언어 세상에 사시는 분들께서는 이 책이 상당히 불만스럽겠지만, 실용적인 관점에서 함수형 언어로 프로그램을 만들고 싶어하는 분들께는 오히려 좋을 수도 있다.
이 책은 함수형 언어의 특성을 조금 저수준에서 설명한 다음에 함수형 언어의 특성을 보여주는 몇 가지 간단한 예제를 제시한다. 여기까지는 함수형 언어 세상의 관점으로 기존 절차형/객체지향형 언어 세상과 무엇이 다른지를 설명하는 몸풀기라고 볼 수 있다. 그런 다음에 함수형 설계로 넘어가서 데이터 흐름 중심의 설계 방식과 SOLID 원칙을 함수형 언어에 적용하는 방법을 다루고 계속해서 순수 함수형 언어에서 살짝 벗어나 GUI와 동시성을 다루는 실용적인 함수형 프로그래밍 방법을 살짝 짚고 나서 디자인 패턴(여러분이 알고 있는 바로 그 패턴이다)으로 마무리 한다. 함수형 언어에는 엄격하게 말해서 객체라는 개념이 존재하지 않기 때문에 도대체 무슨 이야기가 전개되는지 어리둥절할 수도 있겠지만, 이 책을 읽고 나면 함수형 언어를 대상으로 객체지향 방법을 적용하는 방법에 대해 힌트를 얻을 수 있다.
이 책의 가장 중요한 목표는 함수형 언어 세계의 장점과 객체 지향형 언어 세계의 장점을 함수형 언어 관점에서 통합하려는 데 있다. 어떻게 보면 기름과 물과 같은 양쪽 세상을 조화롭게 가져가기가 쉽지는 않아 보이지만, 엉클 밥의 설명을 듣다보면 역시 극과 극은 통하는 바가 있음을 알게 될 것이다. 클로저에 익숙하지 않은 분들을 위해 한국어판에는 자바스크립트(타입스크립트)를 활용한 예제도 함께 제공하므로 진입 장벽을 낮추는 배려도 돋보인다. 함수형 언어로 프로그램을 만들지 않더라도 낯선 환경에서 낯익은 개념을 설명하는 내용을 읽다 보면 기존에 미처 자각하지 못했던 새로운 관점을 발견할 수 있으므로 기존의 객체지향이나 클린 아키텍처 책에 질린 독자분들이라면 이 책을 읽으면서 신선함을 느껴봐도 좋겠다.
한 줄 요약: 함수형 언어와 객체 지향 언어 양쪽을 오가면서 지식의 범위를 넓히고 싶은 독자분들께 강력하게 추천한다.
EOB

