자바스크립트는 ES6+가 되면서 언어에서 이터러블 프로토콜을 특별히 강조하고 있습니다. 이터러블 프로그래밍을 통해 명령형 코드를 대체합니다. 심볼/이터러블/이터레이터/제너레이터, Promise/async/await 등의 프로토콜이 강조되고 있습니다. 이후 버전에서도 async/await/for...await-of/Async Iterator 등으로 프로토콜이 발전하고 있습니다.
이 강의는 '함수형 프로그래밍과 JavaScript ES6+'의 후속 강의로 함수형 프로그래밍, 이터러블 프로그래밍을 다양하게 응용합니다. 이 강의를 들으면 에러가 나기 쉬운 i++, j++, if, for, break 등의 명령형 코드를 더이상 작성하지 않을 수 있습니다. 에러율이 적으며, 생산성이 높고, 아름다운 표현력을 가진 함수형 코드를 작성해보세요!
자바스크립트에서의 이터러블 프로그래밍의 장점 💡
언어 차원에서 지원하는 프로토콜을 통해 만들어지는 코드이기에 조합성이 높습니다.
언어 차원에서 지원하는에러 핸들링을 사용할 수 있습니다.
비동기/동시성 프로그래밍을 보다 안전하고 쉽게 할 수 있습니다.
코드 양을 최소화할 수 있습니다(트랜스파일링을 하면서도 변환되는 코드의 양을 최소화할 수 있는 아이디어도 가지고 있습니다).
ES5 문법 프로그래밍의 불편함 🥲
i++, j++, if, for, break, 상태 변경에 의존한 코드는 버그가 생기기 쉽습니다.
기능 발전, 기획 변경에 대응하다보면 버그가 발생되기 쉬워 유지보수가 어렵습니다.
개발자마다 선호하는 코드 스타일이 다르고, 서로의 코드를 해석하기 어렵습니다.
항상 로직을 새로 작성해야하고, 그에 따른 테스트 케이스도 많아져 생산성이 떨어집니다.
지식공유자 한마디 😀
2008년도 쯤 부터 리습, 이터러블, 리액티브 등을 기반으로한 클로저, 엘릭서, 스칼라와 같은 다양한 함수형 언어들이 생겨나고, 다른 언어들에서는 많은 관련 라이브러리들이 생겨나더니, 최근에 이르러서는 현업에서 가장 많이 사용되는 자바, 스위프트, 코틀린, 자바스크립트 등에 람다가 적용되고, 스트림 혹은 이터러블이라는 이름으로 언어 자체에 LISP 혹은 FP가 도입되었습니다. 더 다양한 상황에서 함수형 프로그래밍이나 이터러블 프로그래밍이 필요하다는 인식이 퍼지고 있고, 이러한 기술들이 실무에서 자연스럽게 사용되고 있습니다.
함수형/이터러블 프로그래밍이 모든 언어에 적용되고 있는 것은 실제적인 가치 때문입니다. 이터러블 프로그래밍은 문제를 작게 만들고 조합성을 높이는데 좋은 도구입니다. 이제는 거의 대부분의 언어에 적용되면서 이 방법은 탈 언어적인 해결책이 되었습니다.
특히 자바스크립트는 이터러블/이터레이터/제너레이터/심볼 등을 기반으로 매우 뛰어난 프로토콜을 가지고 있습니다. 이러한 프로토콜은 개발자로 하여금 언어를 다루라고 이야기하고 있습니다. ES6+의 진짜 매력은 이 '이터러블 프로토콜'이라고 생각합니다. 이터러블 프로그래밍은 생산성을 높이고, 오류율을 줄이고, 유지보수가 용이한 코드를 작성할 수 있게 하는 아주 훌륭한 도구입니다.
이전강의를 듣고 배운 개념들을 적용해서 함수형 라이브러리를 이용하여 코딩해봤지만 보조함수가 길어지고 명령형 코드를 단순히 보조함수에 옮겨놓은게 아닌가.. 명령형코드가 go에 제어문을 때려박은 함수로 바뀌었을 뿐인듯한 느낌을 지울수가없었습니다.
이 강의를 듣고나서야 map, filter, reduce를 바라보는 다른 시점, 이터러블/이터레이터를 위의 함수로 감싸 모나드를 통한 안전한 함수합성, 재사용성이 높은 함수를 추출하여 추상화하여 계속 사용하는 테크닉 등 이전강의만 듣고 무작정 코딩에 달려들었을때 부족한 2%를 채워줄만한 강의였다고 생각합니다. 아직 이 강의를 완벽하게 소화한건 아니지만 몇번이고 반복해서 들으면서 공부하겠습니다. 좋은 강의 감사합니다.
"다음에 나올 강의 마저 기다려지는 최고의 강의"
처음 들을 때는 이게 뭘까? 어떻게 돌아가는거지? 라는 의문 한 가득이지만
코드 하나하나를 음미하다보면 자바스크립트 언어의 매력에 푹 빠지게 되고
짜임새있는 강의와 전달력에 흠뻑 빠지게 됩니다.
얼릉 강사님께서 여유가 생기셔서 다음 강좌를 만들어주시길 학수고대하고
있습니다. (다음에는 실제 프로젝트를 함께 만들어보는 강의가 추가되었으면
좋겠어요!)
함수형 자바스크립트의 실제 적용 사례를 볼 수 있어서 좋았습니다. 실무에서 해결해야 할 법한 상황을 함수형 프로그래밍을 적용하여 보기 좋고 읽기 쉬운 코드로 해결해 나가는 걸 보니 함수형 프로그래밍을 더 구체적으로 느낄 수 있었습니다. 다음 강의에서는 특정 서비스, 어플리케이션을 함수형 프로그래밍을 적용하여 만들 때 어떻게 설계하고 의존성은 어떻게 관리하는 지 같은 내용을 가르쳐주시면 좋을 것 같습니다. 좋은 강의 감사합니다 :)