📱인프런 모바일 App 😆
함수형 프로그래밍과 JavaScript ES6+

함수형 프로그래밍과 JavaScript ES6+

(19개의 수강평)

614명의 수강생

55,000원

평생
초급, 중급
수료증
71개 수업, 총 8시간 7분
위시리스트 추가

함수형 프로그래밍과 JavaScript ES6+

ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍, map/filter/reduce, 파이프라인, 제너레이터를 통한 지연 평가, Promise 합성, 동시성/병렬성, async/await와 비동기 에러 핸들링 등을 배울 수 있습니다. 이 강좌를 습득하고 연습하여 중급 자바스크립트 개발자로 성장하세요!

도움이 되는 분들

  • 함수형 프로그래밍을 배우고 싶은 분
  • ES6+의 기술들을 깊게 다뤄보고 싶은 분
  • 이터러블/이터레이터/제너레이터가 어려웠던 분
  • 비동기 프로그래밍을 능숙하게 하고 싶은 분
  • 지연성/동시성/병렬성에 대해 상세히 알고 싶은 분
  • 에러 핸들링을 어떻게 해야 하는지 어려웠던 분
  • 간결하고 우아한 코드를 작성하고 싶은 분

지식 공유자 한마디

'SICP(컴퓨터 프로그램의 구조와 해석)'나, '프로그램 디자인 어떻게 할 것인가' 같은 책들은 리스프의 매력과 함수형 프로그래밍의 이점을 한 껏 전달주며, '클로저 프로그래밍의 즐거움]'은 클로저와 함수형 프로그래밍이 즐겁다 말합니다. 저는 ES6+도 못지 않게 매력적인 언어라고 생각합니다. ES6+에서의 함수형 프로그래밍이 가진 매력과 이점을 전달하고 싶어 이 강의를 제작하게 되었습니다. 자바스크립트가 ES6+가 되면서 개발자들이 언어를 가지고 놀 수 있는 재밌는 규약들이 많이 만들어졌습니다. 또한 ES6+는 높은 수준의 함수형 프로그래밍을 할 수 있는 많은 기반을 갖추고 있습니다.

함수형 프로그래밍은 복잡한 문제를 간결한 코드로 해결하는 동시에 함수/비동기/지연성/동시성 등을 값으로 다뤄 적절한 시점에 평가하는식으로 높은 효율성을 얻는 특별한 아이디어들을 가지고 있습니다. 그리고 이것들은 너무나 재밌습니다. 이 강의에도 재밌는 코드들을 많이 담았습니다. 그 중 제너레이터를 통해 만든 지연된 이터레이터와 Promise를 합성한 코드가 특히 그렇다고 생각합니다. 이를 기반으로 Clojure의 코어 라이브러리인 reducers 같은 함수 세트도 ES6+로 구성해봅니다. 

이 자바스크립트 코드들은 아주 짧고 간결하며 잘 동작합니다! 좋은 표현력으로 무장한 ES6+와 간결하고 유연한 코드를 제공하는 함수형 프로그래밍을 즐겨보세요. :)
함수형 프로그래밍함수형 프로그래밍

기존에 올라온 무료 강의와 무엇이 다른가요?

약 8시간 7분의 내용 중 기존 강의와 중복되는 내용은 총 62분 정도이며, 나머지 7시간의 내용은 모두 새로운 내용입니다. 집필한 책에도 없는 내용이며, 모두 완전히 새로운 코드들 입니다. 그렇다고 기존 강의를 들으실 필요는 없습니다. 기존 강의 내용에서 군더더기를 덜어내고 62분으로 압축했습니다. 62분의 내용에서도 코드는 완전히 새로운 코드입니다. 커리큘럼을 통해 확인해보시면 됩니다! :)

연관된 강좌



지식공유자 소개

유인동

  • 현재 MARPPLE CTO
  • 전 카카오, 엔씨소프트 오픈마루 스튜디오 개발자
  • 함수형 라이브러리리 FxJS 개발
  • 함수형 데이터베이스 쿼리 빌더 MQL.js 개발
  • 함수형 DOM 조작 라이브러리 FxJS-DOM 개발
  • 저서 함수형 자바스크립트 프로그래밍
  • 함수형 자바스크립트 페이스북 그룹 운영
  • 네이버, 카카오 페이지 등 함수형 프로그래밍 기술 교육, 기업 출강
  • 다수의 온/오프라인 강의

교육과정

함수형 자바스크립트 기본기
강의자료
평가와 일급
03 : 00
일급 함수
02 : 00
고차 함수
06 : 00
ES6에서의 순회와 이터러블:이터레이터 프로토콜
기존과 달라진 ES6에서의 리스트 순회
03 : 00
Array, Set, Map을 통해 알아보는 이터러블/이터레이터 프로토콜
16 : 00
사용자 정의 이터러블, 이터러블/이터레이터 프로토콜 정의
10 : 00
전개 연산자
02 : 00
제너레이터와 이터레이터
제너레이터와 이터레이터
04 : 00
odds
07 : 00
for...of, 전개 연산자, 구조 분해, 나머지 연산자
02 : 00
map, filter, reduce
map
06 : 00
이터러블 프로토콜을 따른 map의 다형성 1
06 : 00
이터러블 프로토콜을 따른 map의 다형성 2
03 : 00
filter
05 : 00
reduce
07 : 00
reduce 2
02 : 00
map+filter+reduce 중첩 사용과 함수형 사고
08 : 00
코드를 값으로 다루어 표현력 높이기
go
05 : 00
pipe
04 : 00
go를 사용하여 읽기 좋은 코드로 만들기
02 : 00
go+curry를 사용하여 더 읽기 좋은 코드로 만들기
07 : 00
함수 조합으로 함수 만들기
03 : 00
장바구니 예제
총 수량, 총 가격
09 : 00
HTML로 출력하기
11 : 00
지연성 1
range와 느긋한 L.range
13 : 00
range와 느긋한 L.range 테스트
02 : 00
take
06 : 00
제너레이터/이터레이터 프로토콜로 구현하는 지연 평가
04 : 00
L.map
04 : 00
L. filter
02 : 00
range, map, filter, take, reduce 중첩 사용
16 : 00
L.range, L.map, L.filter, take 의 평가 순서
14 : 00
엄격한 계산과 느긋한 계산의 효율성 비교
05 : 00
map, filter 계열 함수들이 가지는 결합 법칙
03 : 00
ES6의 기본 규악을 통해 구현하는 지연 평가의 장점
02 : 00
지연성 2
결과를 만드는 함수 reduce, take
03 : 00
queryStr 함수 만들기
04 : 00
Array.prototype.join 보다 다형성이 높은 join 함수
08 : 00
take, find
08 : 00
L.map, L.filter로 map과 filter 만들기
06 : 00
L.flatten, flatten
06 : 00
yield *, L.deepFlat
L.flatMap, flatMap
12 : 00
2차원 배열 다루기
06 : 00
이터러블 중심 프로그래밍 실무적인 코드
13 : 00
비동기:동시성 프로그래밍 1
callback과 Promise
07 : 00
비동기를 값으로 만드는 Promise
06 : 00
값으로서의 Promise 활용
08 : 00
합성 관점에서의 Promise와 모나드
16 : 00
Kleisli Composition 관점에서의 Promise
16 : 00
go, pipe, reduce에서 비동기 제어
13 : 00
promise.then의 중요한 규칙
03 : 00
비동기:동시성 프로그래밍 2
지연 평가 + Promise - L.map, map, take
12 : 00
Kleisli Composition - L.filter, filter, nop, take
16 : 00
reduce에서 nop 지원
09 : 00
지연 평가 + Promise의 효율성
03 : 00
지연된 함수열을 병렬적으로 평가하기 - C.reduce, C.take [1]
11 : 00
지연된 함수열을 병렬적으로 평가하기 - C.reduce, C.take [2]
14 : 00
즉시 병렬적으로 평가하기 - C.map, C.filter
03 : 00
즉시, 지연, Promise, 병렬적 조합하기
08 : 00
코드 간단히 정리
03 : 00
Node.js에서 SQL 병렬 평가로 얻은 효율
07 : 00
비동기:동시성 프로그래밍 3
async:await
11 : 00
[QnA] Array.prototype.map이 있는데 왜 FxJS의 map 함수가 필요한지?
11 : 00
[QnA] 이제 비동기는 async:await로 제어할 수 있는데 왜 파이프라인이 필요한지?
20 : 00
[QnA] async:await와 파이프라인을 같이 사용하기도 하는지?
02 : 00
[QnA] 동기 상황에서 에러 핸들링은 어떻게 해야하는지?
05 : 00
[QnA] 비동기 상황에서 에러 핸들링은 어떻게 해야하는지?
04 : 00
[QnA] 동기/비동기 에러 핸들링에서의 파이프라인의 이점은?
09 : 00
마무리하며

수강 후기

5.0
19개의 수강평
iternity 5달 전
정말 좋은 강의였습니다. 저는 컴퓨터 학부나와서 그저 학교수업만 따라가고 졸업해서 뒤늦게 js에 흥미를 느껴서 입문하고 강의를 듣고있는 학생인데요. 이 강의를 들으면서 학부때 숙제하듯이 마지못해 하던 언어수업과 남는것도 없었던 코딩이 이렇게 멋있게 보이게 되서 감탄했습니다. 그야말로 인생이 바뀐것같네요. 저는 함수형 프로그래밍 패턴이 앞으로의 패러다임이 될것같아 이쪽을 더 열심히 파보고싶은데요. 개발쪽에 대해 아는 게 그다지 많지않은데 이쪽에서 이런 개발을하면서 취업하기 위해서는 어떤 공부를 하면 좋을까요? 너무 막연한 질문을 해서 죄송합니다.
유인동 프로필

유인동 5달 전
감동이네요. 인생이 바뀐 것 같으시다고 해주시다니.. 강의를 만든 것이 정말 큰 보람으로 다가오네요. 저도 개인적인 생각으로는 조직에 따라 함수형 스타일을 코드로 어느 부분까지 커버할 것인가는 차이가 있겠지만 보편적으로는 제어문 부분에 대해서는 함수형 프로그래밍이 거의 대체할 것으로 생각합니다. 취업을 위해서는 함수형 외에도 다양하게 공부해보실 것을 추천합니다. 그리고 언어적으로는 html, css, js, sql, nodejs 정도는 공부하시는게 좋습니다. 개발이 재밌고 멋지게 보인다면 정말 훌륭한 개발자가 되실거라 생각됩니다! 화이팅!

주홍철 2달 전
최고 중의 최고입니다. 정말.. 함수형 프로그래밍을 책을 2권정도 보았는데 솔직히 모나드 어렵잖아요.. 근데 모나드 정말 쉽게 알려주시고.. promise 예도 잘들어주시고.. 질문답변도 최고세요..! 근데 정말 아쉬운점은 정말 목소리가 작아요..ㅠ 다음 강좌때는 목소리좀 올려주세요! 스피커 최대치로 해도 작더라구요..
유인동 프로필

유인동 2달 전
극찬이네요. 정말 감사합니다. 목소리를 좀 더 키워보겠습니다. : )