2 min to read
인프런 '함수형 프로그래밍과 JavaScript ES6+' 시리즈 강의를 듣고
함수형 JS에는 '감동'이 있다.
들어가며
부스트캠프를 하면서 계속해서 고대하던 것이 있었습니다. 수료를 하면 반드시 제대로 된 함수형 프로그래밍을 다룰 줄 아는 사람이 되고 싶고, 인프런 할인 기간을 노려서 산 강의를 얼른 듣고 싶은 생각에 머리가 가득 차있었죠. 간혹 멘탈이 깨질 것 같이 괴로울 때 상자안의 초콜릿처럼 강의를 하나 하나식 까서 볼때마다 나름의 위안을 느끼면서 강의를 맘껏 들을 수 있는 수료일을 고대했고, 부스트캠프 수료 후 약 3주가 지난 지금 시점에, 강의 두개를 완강에 성공했습니다! 👏👏
물론 기술적인 이야기들도 정리해서 블로그에 적어야겠지만, 강의 자체에 대한 후기를 나름 길게 남겨보고 싶었습니다. (물론 블로그 글치고는 짧을지도?)
어떤 강의인가
강의 제목에서 말해주듯, ES6+ 이후의 JS 문법을 적극적으로 활용해서, 함수형 패러다임을 어떻게 JS에서 사용하는지에 대한 강의입니다. map
, filter
, reduce
등의 메소드를 체이닝 하고, |>
와 같은 연산자를 사용해서 작성하는 것이 함수형 프로그래밍이라고 생각했던 어리석었던 저에게, “이게 함수형 프로그래밍이야”를 알려준 강의였습니다.
함수형 프로그래밍과 JavaScript ES6+ (개념편)
강의의 제목에서는 (개념편)이 없지만, 응용편이 있으면 개념편이 있어야지 하는 생각에 이 강의를 해당 포스팅에서는 ‘개념편 강의’ 라고 지칭하겠습니다. 이 강의에서는 핵심 개념을 소개하고, 그 개념이 강사가 소속되어 있는 회사에서 개발한 fxjs
라는 라이브러리에서 어떻게 구현되어있는지를 직접 구현을 하면서 보여주는 구조를 가지고 있습니다. 해당 강의에서 다루는 핵심 개념들을 나름 나열해보겠습니다
- 평가란 무엇인가, 그리고 언제 이루어지는가
- ‘일급’의 개념
- 고차함수란?
- ES6부터 도입된
for ... of
문과 이터레이터 프로토콜 + 전개 연산자 - 제너레이터와 이터러블
- map, filter, reduce란 무엇인가 + 구현(직접 해봄)
- 문장이 아닌 값을 이용해서 가독성 높이기 (
go
,pipe
)ramda
와lodash
를 확인해 봤을 때,go
에 해당하는 코드는 보지 못함.
- 제네레이터를 사용해서 지연성 있는 평가
- 많이 사용되는 함수형 JS 라이브러리에서는 이를 직접 제공하지는 않음. 대체제로
lazy.js
가 있음
- 많이 사용되는 함수형 JS 라이브러리에서는 이를 직접 제공하지는 않음. 대체제로
- Promise의 다양한 활용
- 값으로의 Promise 활용
- 모나드로서의 Promise (모나드를 딥하게 다루지는 않음)
- Kleisli Composition과 Promise
- Kleisli Composition을 JS에서 보여주기 위해서 Promise의
resolve
와reject
를 활용하는 신기방기한 예시를 보여줌
- Kleisli Composition을 JS에서 보여주기 위해서 Promise의
- 병렬 평가(동시 평가)
- 제대로 된 async - await의 이해
강의 분량이 487분짜리라서 상당히 분량이 많아서, 최대한 핵심 키워드만 추렸는데도 꽤나 기네요
함수형 프로그래밍과 JavaScript ES6+ 응용편
개념편 강의에서는 개념을 집중적으로 소개하고, 이것들이 어떻게 사용될 수 있는가 그런것에 초점이 되어 있었다면, 응용편 강의는 제목에 충실하게끔, 이때까지 배웠던 함수형 테크닉으로 어떤것을 만들 수 있는가와 개념편에서 다루지 않은 조금 더 고급 테크닉들을 다루고 있습니다.
- LISP
- 쉽게 말해서 이터러블 프로토콜을 사용해서
for
,while
,if
와 같은 문 없이 코딩하기
- 쉽게 말해서 이터러블 프로토콜을 사용해서
- 좋은 함수형 코드 만들기
- reduce에 다 때려박지 말자, 코드를 나누자
- 안전한 합성 (모나드와 Kleisli Composition에 대한 이야기임)
- 객체를 이터러블 프로그래밍으로 다루기
- 사용자 정의 객체를 이터러블로 다루기
- 시간이 흐름에 따라서 생성되는 일들을 이터러블로 다루기
- 프론트엔드에서의 함수형 프로그래밍 활용 예시
전체적 후기
저는 이때까지 C, C++, JAVA와 같은 절차적 언어에만 익숙해서, 문장을 이용해서 하는 코딩이 당연히 정석이고 그 외의 방법은 없다라고 생각했었습니다. 함수형 프로그래밍을 딥 다이브 할 수 있게끔 좋은 튜토리얼을 제공해주는 이 강의를 접함으로서, 멀티 패러다임 언어인 JS를 더욱 잘 사용할 수 있겠다 하는 자신감을 얻을 수 있게 한 좋은 강의라고 생각합니다. 모던 자바스크립트 딥다이브 읽고 오시면 아마 강의를 들으시면서 막히는 부분 없이 편하게 들으실 수 있을 것 같습니다.
이제 강의 들으면서 상당히 괜찮았다 싶은 부분들 위주로 블로그 글들을 써보지 않을까 싶습니다. 완강해서 기부니가 너무나도 좋네요 히히히