abonglog logoabonglog

멀티패러다임 프로그래밍 서적 리뷰 의 썸네일

멀티패러다임 프로그래밍 서적 리뷰

함수형 자바스크립트
프로필 이미지
yonghyeun

imageimage

정말 너무 읽고 싶던 책인 멀티패러다임 프로그래밍 서적의 서평단으로 선정되어 3일 전 책을 받아 신명나게 읽고 리뷰를 남긴다.

리뷰를 남기기 전 주접을 조금만 떨어보자면 나는 이 책의 저자인 유인동님의 완전한 팬이다.

7년전 네이버 D2 코딩 채널에 올라온 유인동님의 라이브 코딩 영상을 보고 함수형 패러다임에 관심을 가지게 되었고

자바스크립트로 구현하는 함수형 언어에 대해 궁금하여 구매하여 읽었던 서적인 함수형 자바스크립트 프로그래밍 또한 우연찮게도 유인동님의 서적이였다.

자연스레 함수형 자바스크립트에 대한 정보나 라이브러리들을 찾다보니 마플에서 개발 후 관리중인 라이브러리인 FxTs 에 관심을 가지게 되고 사용하게 되었다.

현재 이 개인 블로그를 두 번째로 만들게 된 가장 큰 계기도 함수형 패러다임을 실제로 사용해보고 싶었기에가 크다. 그래서 실제로 이 블로그도 FxTs 라이브러리를 이용하여 만들었고 말이다 !

이런 행운이 내게 오다니

전체적인 책의 구성

책의 큰 구성을 나누면 자바스크립트의 이터레이터 프로토콜을 활용하여 함수형 프로그래밍을 구현하는 아이디어에 대한 내용이 60%, 객체지향 패러다임과 함께 실제 세계의 문제를 해결하는 내용이 40% 정도 되는 거 같다.

코드 자체의 난이도들은 크게 어렵지 않지만 그 안에 있는 아이디어들이 탄탄하고 정말 효율적이다. 오히려 아이디어가 탄탄하고 아름답기에 코드가 어렵지 않을거일 수도 있다.

책을 구성하는 주요 아이디어들

지연평가와 이터레이터

책의 대부분의 코드는 이터레이션 프로토콜을 활용한 효과적 함수형 프로그래밍 방식을 구현해가는 과정을 보여준다.

지연평가가 가능한 이터레이션 프로토콜을 활용한 함수 합성 방식은 명령형 방식으로 하드 코딩된 방식들과 시간 복잡도가 같다는 점에서 선언적이며 여전히 효율적이기에 매력적이다.

코드를 데이터 (리스트) 로 바라보기

여럿 함수형 언어가 그렇듯 일련의 과정(코드)들도 하나의 데이터처럼 다룬다.

이 책에서는 완전 스트릭한 함수형 언어인 하스켈을 조금 소개함으로써 그 과정을 보여주고 타입스크립트로 구현된 여러 예시들 속에서 코드들을 데이터로 바라보기에 얻을 수 있는 이점들을 보여준다.

특히 그것이 빛을 발했던 것은 4장. 비동기 프로그래밍 챕터였다.

지연평가가 불가능한 순수 Promise 객체를 지연 평가가 가능한 데이터 형태로 변경함으로서 원하는 시점에 비동기 작업들을 컨트롤 하는 부분이였다.

멀티패러다임 프로그래밍

우선 이 책에서 소개하는 멀티 패러다임과정은 이렇다.

  1. 가장 로우레벨인 명령형 패러다임을 통해 함수형 패러다임의 코드를 작성

  2. 함수형으로 작성된 코드들을 활용하여 객체 지향 패러다임의 코드들과 함께 사용

  3. 각 과정에선 필요에 따라 명령형 패러다임의 코드들도 사용될 수 있다.

완전 정통 함수형 정파마냥 반복문이 사용되거나 변경 가능한 객체가 존재하면 눈에 불을 키고 그러면 안된다며 지적하기보다는

명령형 패러다임의 효율성과 객체 지향 패러다임의 유연함과 함께 사용되는 예시들을 보여준다.

프론트엔드에서의 실전 예시

프론트엔드에서의 실전 예시는 다른 프레임워크 없이 객체 지향 스타일과 함수형 스타일을 활용하여 실제 페이지를 구성하는 예시를 보여준다.

책을 보며 느낀점

제네레이터를 이용한 함수형 패러다임과 객체 지향 모두 공통적으로 가지는 속성이 효과적으로 코드의 흐름을 제어 할 수 있는 유연성이라 생각한다.

함수형 패러다임 자체가 거대한 하나의 어플리케이션을 여러개의 프로시져들의 조합으로 나눠 생각함으로서 복잡성을 관리하는데 지연평가가 가능한 함수들을 통해 함수가 말 그대로 비로소 조그만 어플리케이션의 역할이 가능 하게 됨을 느꼈다.

새로운 패러다임을 배우는것은 항상 즐거운 일이다. 새로운 패러다임을 접하는 것은 배움의 차원을 한 단계 높혀준다고 믿기 때문이다. 이 책은 효율적인 패러다임을 소개할뿐 아니라 새로운 패러다임을 바닥부터 구축해나가는 메타프로그래밍 과정을 통해 배움의 즐거움을 공유 한다.

메타프로그래밍은 여러 프로그램을 데이터처럼 바라보며 원하는데로 변형하여 실행하는 프로그래밍 기법을 의미한다.

이 책은 정말 담백한 패러다임에 대한 소개와 언어에 관한 내용이 주를 이룬다. 그러기에 언어에 대한 깊이 있는 통찰을 얻을 수 있게 도와준다. 만일 함수형 패러다임이 가져오는 이점에 대해 알고 있고 그런 패러다임을 효율적으로 적용하기 위한 방법을 찾는 사람이 있다면 이 책을 강력하게 추천하고 싶다. 정말 아름다운 책이다 !

한빛미디어의 도서 지원을 받아 작성한 리뷰입니다.