📱인프런 모바일 App 😆

인생을 바꾸는 함수형 프로그래밍 👑

포함된 강좌수: 3개

마지막 업데이트: 2019.08.09

인프런
만든 사람 인프런
다른 로드맵

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

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

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

도움이 되는 분들

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

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

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

ES5 문법 프로그래밍의 단점

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

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

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

예제 코드

인프런
만든 사람 인프런
다른 로드맵