Blog iconJaeho Yi
객체에서 함수로 후기
Review

객체에서 함수로 후기

notion image
📖

객체에서 함수로

우베르토 바르비니 지음
오현석 옮김
길벗
함수형 프로그래밍에 관심이 생겨서 읽게 된 책이다. 책의 내용은 함수형 프로그래밍, 테스트 주도 개발, 단위 테스트 등으로 구성되어 있다. 언어는 코틀린을 사용하고 있는데, 부록을 통해서 문법을 설명해주니 코틀린에 대한 지식이 필수적이지는 않다.
이 책은 코딩을 할 수 있는 환경에서 읽어야 할 것 같다. 프로젝트를 직접 따라하면서 IDE의 지원을 받아서 함수들의 시그니처를 바로바로 확인할 수 있다면 이해하기 훨씬 쉬울 것 같다. 나는 타입스크립트로 따라해보려고 했는데, 근본적으로 불가능하지는 않지만 문법적인 지원이 부족해서 코드가 많이 더러워졌다.
다소 복잡하고 어려운 주제의 내용임에도 불구하고 설명이 잘 구성되어 있어서 이해하기가 수월한 편이다. 책의 제목이 '객체에서 함수로'인 만큼 객체지향의 기초적인 이해는 필요하다. 객체지향적인 접근법의 한계와 단점을 극복하는 방식으로 전개되는 내용도 있어서, 객체지향을 이미 알고 있다면 함수형 프로그래밍의 장점을 더 잘 이해할 수 있다.
책을 읽으면서 인상적이었던 건 인수테스트의 구조를 잡는 것만으로도 별도의 프로젝트 규모라는 점이었다. 코드는 엄청나게 길어져 있는데 정작 눈에 보이는 결과는 얼마 없다. 그럼에도 이런 기반을 철저하게 다지고 나면 새로운 기능을 붙이고 유지보수하는 게 쉽다는 점이 이 함수형 프로그래밍의 핵심인 것 같다.
함수들을 조합하는 과정은 마치 퍼즐을 푸는 것 같기도 했다. 함수들의 시그니처를 나열하고 적절한 순서로 배치하는 퍼즐 같은 느낌이다. 함수형 프로그래밍에 대한 저자의 오랜 경험을 이 책 하나를 통해서 배우는 것 같았다.
다만 책을 다 읽을 때까지도 함수형 코드를 이해하기가 너무 어려웠다. 많은 장점이 있다는 건 알겠는데, 결국 이해하기가 어려우면 현실적으로 바로 적용하기는 어려울 것 같다. 언젠가 이 방식이 익숙해질 거라는 생각으로 좀 더 연습해보려고 한다.
아쉬운 점도 있었다. 내용이 누락된 건지, 전개상 빠진 부분이 조금 있었다. 그리고 오타나 오역도 조금 있는데, 내용이 완전히 반대가 되는 경우도 일부 있었다. 코드의 들여쓰기나 괄호가 누락된 부분도 꽤 많았는데, 이런 부분은 코드를 이해하기에 많이 지장이 돼서 아쉬웠다.
이 책을 읽고 나서 함수형 프로그래밍에 대한 내 생각을 정리해보면 이렇다. 이 방식에 익숙하지 않으면 함수 시그니처를 이해하기가 매우 어렵다. C, C++에서 포인터와 배열이 중첩되어 있는 것보다 한 단계 더 어려워진 퀴즈 같다. 함수 시그니처를 변경하면 설계의 많은 부분을 바꿔야 해서 처음에 설계할 때 매우 신중하게 접근해야 할 것 같다.
위와 같은 현실적인 단점에도 불구하고 함수형 프로그래밍을 적용할 수많은 장점이 있다. 완벽한 방식일 수는 없지만 이상적인 방식에 가까운 것 같다. 진지하게 깊게 공부해봐야겠다는 생각이 들었다.
지금 프로젝트에 사용하고 있는 코틀린도 sum type, higher-kinded type 등 다른 함수형 언어에 비해서는 지원이 부족한 부분도 있지만, 객체지향적인 방식과 함수형 방식의 장점을 같이 활용할 수 있는 것 같다.
이 책을 읽으면서 좀 더 이론적인 부분도 알고 싶어져서, 프로그래밍과 관련된 카테고리 이론을 공부하고 있다. 역시 어려운 내용인 것 같다.