|
코틀린을 다루는 기술 리뷰 한달이 조금 넘는 시간 동안 “코틀린을 다루는 기술”를 읽고 토론하는 스터디에 참여하였습니다. 평소 함수형 프로그래밍과 코틀린 프로그래밍에 관심이 많았고, 역자의 이전 번역서들에 만족감이 높았기에 목차만 확인하고 바로 주문하였는데, 짧은 시간에 기대 이상으로 많은 것을 배울 수 있었습니다. 전체적인 책의 구성과 전개 방식에 대한 소감을 말하자면 이전에 읽었던 “함수형 자바스크립트[마이클 포거스 저]”와 “함수형 자바스크립트 프로그래밍[유인동 저]”의 장점을 합쳐 놓은 듯한 느낌이었습니다. 전자는 300페이지 남짓한 제한된 지면 내에서 언어 차원에서 함수형 프로그래밍을 구현하는 데 필요한 문법적 요소(일급 함수, 고차원 함수, 함수 합성, 커리) 등이 집중적으로 잘 설명되어 있고, 후자는 400페이지 정도의 제한된 지면 내에서 함수형 라이브러리의 구현 과정이 집중적으로 잘 설명되어 있습니다. “코틀린을 다루는 기술”은 600페이지가 넘는 분량을 무기로 위의 두 책의 장점인 “(1) 함수형 프로그래밍을 구현하는 데 필수적인 문법적 요소에 대한 설명 (2) 함수형 라이브러리를 구현하는 과정에 대한 코드 위주의 단계적 설명”이 포함되어 있을 뿐만 아니라 (3) 함수형 구현의 근간을 이루는 핵심 개념들(참조 안전성을 확보하기 위한 불변성 개념, 스택 안전한 꼬리호출을 설명하기 위한 재귀와 공재귀 개념, 반복 계산을 방지하여 연산 성능을 높이는 메모화, 분기를 함수 내부로 위임하여 재사용성과 오류 가능성 참조 투명성을 확보하는 선택적 데이터 구조의 개념, 파이프라이닝을 통해 연산의 연쇄를 더욱 효율적이고 효과적으로 만드는 지연 계산의 개념 등)이 비교적 쉬운 언어와 도해, 예시코드로 설명되어 있습니다. 이 책에서 가장 좋았던 점 중 하나는 책의 논리적 흐름과 구현된 코드를 따라 이해하다보면 함수형 패러다임의 의도와 사용방법을 자연스럽게 익힐 수 있다는 것입니다. 펑터, 애플리커티브 펑터, 모노이드, 모나드 같이 함수형 프로그래밍의 근간을 이루는 추상적인 수학적 개념과 용어를 먼저 익히고 실질적인 구현을 익혀나가는 탑다운 방식으로 학습하기 전에 구체적인 예시 코드와 직관적인 설명을 통해 추상적인 개념에 대한 멘탈 모형을 형성해 나가는 바텀업 방식으로 학습하기 원하는 프로그래머에게는 좋은 선택지가 될 거라 생각합니다. 또 다른 장점은 책의 코드를 이해하기 위해 노력하다 보면 코틀린의 조금은 난해(?)한 문법적 표현 방식에 대해 익숙해진다는 점입니다. 특히, 싱글턴 객체, sealed class, 엘비스 연산자, 패턴매칭, 변성, 초기화 지연, 연산자 오버로딩, qualified this 등은 책의 예시 코드를 통해 자주 되풀이되고, 전반적인 책의 논리 전개를 따라가기 위해서는 앞서 언급한 문법에 대해 이해하고 있어야 하기에 저처럼 코틀린 언어를 공부하였으나 익숙하게 사용해보지 못한 사람들에는 좋은 연습이 될 것이라 생각합니다. 마지막으로 총평하자면 “코틀린을 다루는 기술”은 함수형 프로그래밍을 전반적으로 이해하는 데 핵심적인 개념들이 잘 녹아 있고, 이해하는 데 많은 시간과 집중력을 요구하지만, 투자한 노력 이상을 얻어갈 수 있는, 여러 번 반복해서 읽을 만한 가치가 있는 책이라 생각합니다. 참고로 코틀린 문법에 능숙하지 않다면 “Kotlin in Action”과 함께 읽으면 좋고, 함수형 프로그래밍이 생소하다면 “함수형 코틀린”의 예시 코드를 실행해보며 함수형 프로그래밍의 사용 방식을 함께 익혀 나가면 좋을 것 같습니다. 개인적으로 다음에 공부할 책으로 수학적인 개념과 용어로 논리를 전개해 나가는 “코틀린으로 배우는 함수형 프로그래밍[조재용, 우명인]”을 읽을 예정이며, 효과적인 개념 정리 및 복습에 많은 도움이 될 것으로 기대하고 있습니다. |