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

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

(11개의 수강평)

323명의 수강생

44,000원

평생
초급, 중급
수료증
48개 수업, 총 6시간 2분
위시리스트 추가

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

이 강의는 '함수형 프로그래밍과 JavaScript ES6+'의 후속 강의로 함수형 프로그래밍, 이터러블 프로그래밍을 다양하게 응용합니다. 이 강의를 들으면 에러가 나기 쉬운 i++, j++, if, for, break 등의 명령형 코드를 더이상 작성하지 않을 수 있습니다. 에러율이 적으며, 생산성이 높고, 아름다운 표현력을 가진 함수형 코드를 작성해보세요!

   

배경

2008년도 쯤 부터 리습, 이터러블, 리액티브 등을 기반으로한 클로저, 엘릭서, 스칼라와 같은 다양한 함수형 언어들이 생겨나고, 다른 언어들에서는 많은 관련 라이브러리들이 생겨나더니, 최근에 이르러서는 현업에서 가장 많이 사용되는 자바, 스위프트, 코틀린, 자바스크립트 등에 람다가 적용되고, 스트림 혹은 이터러블이라는 이름으로 언어 자체에 LISP 혹은 FP가 도입되었습니다. 더 다양한 상황에서 함수형 프로그래밍이나 이터러블 프로그래밍이 필요하다는 인식이 퍼지고 있고, 이러한 기술들이 실무에서 자연스럽게 사용 되고 있습니다.

함수형/이터러블 프로그래밍이 모든 언어에 적용되고 있는 것은 분명한 이유가 있어서라고 생각합니다. 실제적인 가치가 있습니다. 이터러블 프로그래밍은 문제를 작게 만들고 조합성을 높이는데 좋은 도구입니다. 이를 통해 생산성을 높이고, 오류율을 줄이고, 유지보수를 쉽도록 합니다. 이제는 거의 대부분의 언어에 적용되면서 이 방법은 탈 언어적인 해결책이 되었습니다.

특히 자바스크립트는 이터러블/이터레이터/제너레이터/심볼 등을 기반으로 매우 뛰어난 프로토콜을 가지고 있습니다. 이러한 프로토콜은 개발자로 하여금 언어를 다루라고 이야기하고 있습니다. ES6+의 진짜 매력은 이 '이터러블 프로토콜'이라고 생각합니다. 이터러블 프로그래밍은 생산성을 높이고, 오류율을 줄이고, 유지보수가 용이한 코드를 작성할 수 있게 하는 아주 훌륭한 도구입니다.

자바스크립트에서의 이터러블 프로그래밍의 장점

  • 자바스크립트는 ES6+가 되면서 언어에서 이터러블 프로토콜을 특별히 강조하고 있습니다.
  • 심볼/이터러블/이터레이터/제너레이터, Promise/async/await 등의 프로토콜이 강조되고 있습니다.
  • 이후 버전에서도 async/await/for...await-of/Async Iterator 등으로 프로토콜이 발전하고 있습니다.
  • 언어 차원에서 지원하는 프로토콜을 통해 만들어지는 코드이기에 조합성이 높습니다.
  • 언어 차원에서 지원하는 에러 핸들링을 사용할 수 있습니다.
  • 비동기/동시성 프로그래밍을 보다 안전하고 쉽게 할 수 있습니다.
  • 코드양을 최소화할 수 있습니다.
  • 트랜스파일링을 하면서도 변환되는 코드의 양을 최소화할 수 있는 아이디어도 가지고 있습니다.

ES5 문법 프로그래밍의 단점

  • i++, j++, if, for, break, 상태 변경에 의존한 코드는 버그가 생기기 쉽습니다.
  • 기능 발전, 기획 변경에 대응하다보면 버그가 발생되기 쉬워 유지보수가 어렵습니다.
  • 개발자마다 선호하는 코드 스타일이 다르고, 서로의 코드를 해석하기 어렵습니다.
  • 항상 로직을 새로 작성해야하기 때문에 생산성이 떨어집니다.
  • 그에 따른 테스트 케이스도 많아지게 되어 생산성이 떨어집니다.

함수형/이터러블 프로그래밍은 무엇을 대체 하는 것인지

  • 객체지향 프로그래밍을 대체하는 것이 아닙니다.
  • 이터러블 프로그래밍을 통해 명령형 코드를 대체합니다.
  • i++, j++, if, for, break 등을 거의 사용하지 않게 되어 실수가 적어집니다.

예제 코드

연관된 강좌

함수형 프로그래밍과 javascript ES6+
ES6+의 이터러블/이터레이터/제너레이터/동시성 프로그래밍에 대해 상세히 다룹니다. 
함수형/이터러블 프로그래밍에 대해 익숙하지 않다면 이 강의를 먼저 들어주세요!
 
 
 
 
 
 
 

배우면 할 수 있는 것들

  • 함수형 프로그래밍
  • 이터러블 프로그래밍
  • 동시성 프로그래밍
  • 프론트엔드에서 함수형 프로그래밍 응용하기
  • 백엔드에서 함수형 프로그래밍 응용하기

수강 대상

  • 함수형 프로그래밍을 배우고 싶은 분
  • 이터러블 프로그래밍 응용법을 알고 싶은 분
  • 함수형/이터러블/동시성 실제 사용 사례가 궁금한 분
  • 간결하고 우아한 코드를 작성하고 싶은 분
  • JS 개발자로서 한 단계 도약하고 싶은 분

선수 지식

  • 함수형 프로그래밍과 JavaScript ES6+ 인프런 강의
  • ES6+ 기본 문법
  • 이터러블/이터레이터/제너레이터

지식공유자 소개

유인동

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

교육과정

이터러블 프로그래밍 혹은 리스트 프로세싱 (L i s p)
들어가며
03 : 54
홀수 n개 더하기
02 : 46
if를 filter로
07 : 38
값 변화 후 변수 할당을 map으로
01 : 07
break를 take로
00 : 52
축약 및 합산을 reduce로
08 : 33
while을 range로
06 : 46
효과를 each로 구분
02 : 04
추억의 별 그리기
07 : 12
추억의 구구단
03 : 20
명령형 습관 지우기 - 만능 reduce? No!
reduce + 복잡한 함수 + acc 보다 map + 간단한 함수 + reduce
08 : 00
reduce 하나 보다 map + filter + reduce
04 : 49
query1, query2
08 : 15
query3, query4
09 : 26
queryToObject
05 : 17
안전한 합성에 대해
map으로 합성하기
03 : 02
find 대신 L.filter 써보기
09 : 02
객체를 이터러블 프로그래밍으로 다루기
들어가며
02 : 53
values
05 : 13
entries
04 : 17
keys
01 : 40
어떠한 값이든 이터러블 프로그래밍으로 다루기
09 : 50
object
09 : 09
mapObject
04 : 47
pick
08 : 06
indexBy
06 : 05
indexBy 된 값을 filter 하기
05 : 29
객체지향과 함께 사용하기 - 사용자 정의 객체를 이터러블 프로그래밍으로
Map, Set, NodeList
04 : 44
Model, Collection 클래스 만들어서 이터러블 프로토콜 지원하기
16 : 38
Product, Products - 메서드를 함수형으로 구현하기
10 : 44
시간을 이터러블로 다루기
range와 take의 재해석
14 : 41
takeWhile, takeUntil
07 : 25
자동차 경주 - 할 일들을 이터러블(리스트)로 바라보기
10 : 39
아임포트 결제 누락 처리 스케쥴러 - API 설명
06 : 25
아임포트 결제 누락 처리 스케쥴러 - 결제된 내역 가져오기
14 : 39
아임포트 결제 누락 처리 스케쥴러 - 가맹점 DB의 주문서 가져오기
04 : 52
아임포트 결제 누락 처리 스케쥴러 - 비교 후 결제 취소 API 실행하기
06 : 03
아임포트 결제 누락 처리 스케쥴러 - 반복 실행하기
10 : 04
프론트엔드에서 함수형/이터러블/동시성 프로그래밍
ES6 템플릿 리터럴 활용
01 : 47
이미지 목록 그리기
18 : 45
아이템 지우기
12 : 19
커스텀 confirm 창과 Promise
15 : 39
클래스를 대신 함수로 하는 추상화
17 : 29
이미지 동시성 다루기
09 : 15
동시성 부하 조절
11 : 43
고차 함수로 더 작게 나누어 재사용성 높이기 - 데이터형 없애기
06 : 00
상위 스코프 변수를 사용하는 함수와 아닌 함수들 쪼개기
03 : 47
DOM을 다루는 고차 함수
08 : 57

수강 후기

5.0
11개의 수강평
조용구 2달 전
이번에는 이터러블 프로그래밍을 통해 함수형뿐만 아니라 객체지향에도 많은 감명을 받았습니다. 객체를 접근하는 새로운 접근방식 그리고 함수의 새로운 추상화 개념을 얻게 되었습니다. 좋은 지식을 전파해주셔서 감사합니다.
유인동 프로필

유인동 2달 전
열심히 공부해주셔서 감사합니다. 저도 계속 열심히 공부할께요^^ 정말 고맙습니다. :)

iternity 2달 전
이전강의를 듣고 배운 개념들을 적용해서 함수형 라이브러리를 이용하여 코딩해봤지만 보조함수가 길어지고 명령형 코드를 단순히 보조함수에 옮겨놓은게 아닌가.. 명령형코드가 go에 제어문을 때려박은 함수로 바뀌었을 뿐인듯한 느낌을 지울수가없었습니다. 이 강의를 듣고나서야 map, filter, reduce를 바라보는 다른 시점, 이터러블/이터레이터를 위의 함수로 감싸 모나드를 통한 안전한 함수합성, 재사용성이 높은 함수를 추출하여 추상화하여 계속 사용하는 테크닉 등 이전강의만 듣고 무작정 코딩에 달려들었을때 부족한 2%를 채워줄만한 강의였다고 생각합니다. 아직 이 강의를 완벽하게 소화한건 아니지만 몇번이고 반복해서 들으면서 공부하겠습니다. 좋은 강의 감사합니다.
유인동 프로필

유인동 2달 전
전달하고 싶었던 내용들을 많이 짚어주셨네요. :) 고맙습니다. 화이팅!