카테고리 없음 / / 2025. 5. 22. 00:56

[도서] 멀티패러다임 프로그래밍(저자 유인동) 베타리딩 후기

[도서] 멀티패러다임 프로그래밍(저자 유인동) 베타리딩 후기

 

 

https://product.kyobobook.co.kr/detail/S000216318962

 

멀티패러다임 프로그래밍 | 유인동 - 교보문고

멀티패러다임 프로그래밍 | 좋은 코드엔 프로그래밍 패러다임의 경계가 없다! 복잡한 문제를 해결하기 위해 객체지향, 함수형, 명령형을 자유롭게 넘나들며 설계하고 구현하는 법 견고한 코드,

product.kyobobook.co.kr

 

 

서문

때는 바야흐로 2019년 첫 회사에서 테이블로 된 리스트 화면 1페이지 만드는데 2~3일씩 소요하는 개발 실력을 가진 시절이었다. 그 당시 회사는 oracle DB를 사용했고 의 모든 비즈니스 로직은 sql 쿼리로 대부분을 처리했다. 대부분 정형 데이터 또는 집계 데이터이고 복잡한 작업은 프로시저나 함수를 실행했기 때문에 java / spring framework로 만든 서버는 진짜 sql로 작업된 데이터를 서빙만 하는 서버였다... 그래서 주로 하는 작업이 sql 쿼리를 짜고 서버는 전달만 하고 대부분의 작업은 js랑 jquery를 많이 사용했다. 그래서 난 java를 사용하는 백엔드 개발자로 취업을 했지만 코딩은 js로 더 많이 했던거 같다.

 

js라고 해도 거의 jquery DOM을 조작하는 일을 주로 하고 있던 와중에 좀 더 인사이트를 얻고 싶다는 생각이 들어서 js 책도 사고 강의도 구매 했었다. 근데 구매한 강의가 하필이면 유인동님이 제작한 함수형 프로그래밍과 JavaScript ES6+ 라는 강의였다... 심지어 지금은 대표적으로 인프런에서 강의를 제공하고 있지만 내가 구매했을땐 프로그래머스에서 제공하고 있었다. (지금도 강의를 볼 수 있다)

https://www.inflearn.com/course/functional-es6

 

함수형 프로그래밍과 JavaScript ES6+ 강의 | MDU 유인동 - 인프런

MDU 유인동 | , 함수형 프로그래밍을 익히기 위한 최고의 강의!중급 자바스크립트 개발자로 성장하세요! [사진] 함수형 프로그래밍과 JavaScript ES6+ ES6+와 함수형 프로그래밍을 배울 수 있는 강의입

www.inflearn.com

 

사실 지금 이 강의를 봐도 완벽하게 이해한다고 말할 수 없다. 그런데 이 때는 명령형으로 코드를 만드는 것도 버거워하고 있었는데 골라도 이 강의를 선택했나싶다. (함수형에 "함수"라는 단어에 혹해서 그런 것 같다) 이 강의를 보고 처음으로 함수를 화살표 함수 () => 이렇게 선언할 수 있다는 걸 처음 알았다.

 

그리고 시간이 지나서 함수형 프로그래밍 이라는 패러다임에 대해서 관심을 가지게 되었을 때 근간은 이 때 봤던 이 강의인 것 같다. 지금도 Rx 프로그래밍이나 Java에서도 지원하는 java 8 stream, WebFlux의 Mono나 Flux (반응형 프로그램에 좀 더 가깝다) 등 함수형 프로그래밍 스타일 형식으로 작성하고 그에 따른 이점이 있다. 러닝 커브가 있지만 같이 개발하는 구성원들이 모두 같은 코드 스타일로 개발할 수 있다면 예상하지 못하게 발생하는 예외에 대한 처리나 다소 길어질 수 있는 코드를 깔끔하게 정리할 수도 있다.

 

어쨋든 위와 같은 함수형 프로그래밍에 대한 관심과 애정이 이 때부터 시작되어 관련된 여러 자료들을 많이 찾아봤다. 저자가 개발한 FxJS나 RxJs, partial.js, lodash 등 js뿐만 아니고 다른 언어에서도 관심을 가지게 되었다. 그리고 이번에도 저자의 도서이지만 위에 관련된 것들은 이 책을 보고 많이 알게 되었다.

https://product.kyobobook.co.kr/detail/S000001033053

 

함수형 자바스크립트 프로그래밍 | 유인동 - 교보문고

함수형 자바스크립트 프로그래밍 | 실무 밀착형, 함수형 자바스크립트 프로그래밍 가이드!『함수형 자바스크립트 프로그래밍』은 자바스크립트에서 함수형 패러다임을 통해 보다 효율적인 코

product.kyobobook.co.kr

 

결국 관심 있었고 애정을 가졌던 무언가가 시간이 지날수록 점진적으로 발전하고 있는걸 보면 굉장히 흥미로운 일이다. 나의 남은 개발 인생에 위에서 나열한 방법으로 개발을 하는 날이 올까 싶지만 개발을 하면서 사용하는 도구에 즐거움을 느낄 수 있다는 것 자체가 또 하나의 축복이라 생각한다.

 

 


 

 

1장

먼저 GOF의 디자인 패턴에서 반복자 패턴에 대해서 언급한다. 책 제목이 멀티패러다임 프로그래밍인 것처럼 디자인 패턴에 대한 내용이 나온다. 여기선 반복자 패턴과 JS에서 함수가 일급이라는 것의 특징을 토대로 어떻게 풀어나가는지 설명한다. 또한 이터러블 / 이터레이터 등이 반복자 패턴에서 어떻게 적용되는지, 제너레이터를 사용하면 이 이터러블 / 이터레이터를 명령형으로 쉽게 만들 수 있다는 점, 이터러블 프로토콜이 왜 인터페이스로 설계 되었는지 (Arrary에도 map, filter, reduce가 있다)에 대해 자세히 다룬다. 

 

 

2장

함수형 프로그래밍을 구현하는 언어에 대해 비교하면서 설명한다. 저자가 만든 FxJS라는 함수형 프로그래밍 언어가 있다. 그런데 여기에 타입이 추가된 FxTS의 라이브러리에 대해서 설명하고 LISP과 같은 함수형 언어에 대해 비교하며 설명한다. 함수형 타입 시스템과 타입 추론을 통해서 함수를 조합하고 추가적으로 기능에 대한 확장에 대해서 다룬다.

 

 

3장

함수형 프로그래밍은 함수, 즉 코드를 일급으로 사용할 수 있다. 그렇다는건 코드가 곧 데이터가 될 수 있고 로직을 전달할 수가 있다. 해당 장에서는 함수를 이렇게 사용하기 위해 함수를 위한 함수에 대해 설명하고 다른 언어에서 어떻게 지원 하는지에 대해서 예를 들어 보여준다. 또한 이터레이터를 통해 반복자로 사용하면 코드 진행에 따라 함수를 지연 평가할 수 있다. 지연 평가를 통해 얻을 수 있는 이점을 설명하고 각 함수를 재사용하면서 공통 로직을 추상화 한다.

 

 

4장

자바스크립트에서는 Promise라는 비동기 작업을 처리할 수 있는 객체 ? 가 있다. Promise를 사용하지 않는다면 비동기 처리에 대한 코드는 모두 콜백 함수로 사용해야 한다. 하지만 이런 비동기 작업을 Promise로 감싸서 사용하면 얻을 수 있는 이점과 Promise가 제공하는 여러 메서드에 대해 설명한다. 지연 평가를 통한 평가 지연과 비동기 작업의 실행을 Promise로 처리하는 방식을 조합해서 동시성 핸들링을 어떻게 처리하는지에 대해 인사이트를 얻을 수 있고 타입을 통해 함수의 진행에서 어느 시점에 동기식으로 처리할지 비동기식으로 처리할지 쉽게 변환할 수 있도록 패러다임에 맞게 예시를 보여준다.

 

 

5장

해당 장의 내용은 나에게 꽤나 흥미로웠다. 개발을 하다보면 대부분의 데이터는 배열안에 배열 또는 배열 안에 객체 이런 식인 경우가 많다. 따라서 이런 실질적인 데이터를 어떻게 효과적으로 처리할 수 있는지에 대한 예제를 많이 보여주고 서버에서 처리하는 데이터는 간혹 백그라운드에서 처리되어야 하는 경우도 많다. 실제 결제 프로세스에 대해서 프레임워크에서 제공하는 스케줄러를 사용하는 것이 아닌 언어의 기능만으로 스케줄러를 구현하고 그 과정에서 안정 적인 비동기 작업을 어떻게 가져가면서 병렬 처리를 사용해 효율을 높일지에 대해서 설명한다. 그리고 마지막으로 자주 쓰이는 패턴에 대한 예제를 보여준다.

 

 

6장

Javascript로 HTML 요소를 만들기 위해 템플릿 엔진을 함수형 프로그래밍을 가지고 만드는 과정을 소개한다. 여기서 멀티패러다임에 대한 방법론을 다시 제시한다. 멀티 패러다임을 통해 객체 지향 패러다임은 어느 때에 쓸 것이며, 함수형 패러다임과 어떻게 조합을 하며 사용할지 보여준다. 그리고 위에서 계속 보여주었던 내용 등을 토대로 어떻게 작업에 적용을 하는지에 대해 보여준다.

 

 

7장

여기선 실제로 Rune 이라는 저자가 개발한 프론트엔드 라이브러리를 가지고 실질적으로 UI에 어떻게 적용하는지에 대해서 보여준다. Rune이라는 언어를 가지고 TODO 앱을 만들어 보면서 어떻게 객체 지향적으로 구조를 잡았는지  어떻게 패턴을 적용하는지 코드를 어떻게 재사용하는지 보여주면서 좋은 구조로 설계된 아키텍쳐를 선사한다. 마지막엔 UI에서 어떻게 비동기 처리를 하는지 일급으로 사용할 수 있는 특성을 가지고 컴포넌트 간에 통신할 수 있는 방법을 소개한다.

 

 

후기

일회독을 하고 나서 얻는 것도 많았지만 아직 내가 많이 모른다고 생각이 된 책이었다. 책은 좋은 코드, 구조, 패러다임을 소개한다. 그걸 온전히 받아들일 수 있는가에 대한 것은 독자의 몫이다. 책을 보면 저자가 얼마나 구조적인 패러다임에 대해서 고민하고 생각했는지 보이는 것 같다. 이와 같이 잘 차려진 밥상에 밥과 반찬을 떠 먹을 준비만 하면 된다. 여기서 수저를 어떻게 들고 밥을 어떻게 뜰지 연습은 본인이 해야한다고 생각한다. 코딩을 하는 사람으로서 많은 인사이트가 된 책이다. 요즘과 같이 AI가 코딩해주는 시대에 어떤 서비스를 만들고 운영해가는 과정에서 변화에 얼만큼 빠르고 유연하게 대처할 수 있는가, 많은 시간이 지난 후에 다시 변경이 일어났을 때 얼마나 정확하게 이해하고 그 당시로 돌아갔을 때처럼 적응할 수 있는가에 대해 해결책이 될수 있지 않을까라는 생각을 한다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유