채널톡 아이콘

자바스크립트로 알아보는 함수형 프로그래밍 (ES5)

마플(http://www.marpple.com)의 CTO 유인동님이 알려주는 함수형 프로그래밍에 대한 강좌 입니다. 함수형 프로그래밍으로 라이브러리를 직접 만들어가며 함수형 프로그래밍의 패러다임과 코딩의 즐거움을 느낄 수 있습니다.

Thumbnail

새소식

3 개

  • MDU 유인동님의 프로필 이미지

    수정됨

    『코틀린 멀티패러다임 이터레이션』은 『멀티패러다임 프로그래밍』의 부록으로, 본서의 일부 내용을 코틀린 언어에 특화하여 풀어낸 자료입니다. 멀티패러다임 프로그래밍은 특정 언어에 국한되지 않는 언어 독립적인 개념으로, 현대의 대부분의 프로그래밍 언어에 적용할 수 있는 방법론이자 기술입니다.

    보러가기:
    https://github.com/marpple/kotlin-multi-paradigm-iteration

    현대 프로그래밍 언어들은 이터레이션(Iteration)에 대해 객체 지향, 함수형, 명령형 개념을 통합하고, 이를 유기적으로 동작하게 하는 규약을 제공합니다. 『멀티패러다임 프로그래밍』에서는 타입스크립트를 중심으로 함수형·명령형·리스트 프로세싱·객체지향 프로그래밍을 조합해 활용하는 사례들을 살펴봤습니다. 이번에는 멀티패러다임 언어인 코틀린(Kotlin)의 멀티패러다임 이터레이션을 중심으로 멀티패러다임 프로그래밍 언어의 응용 능력을 더욱 확장해보고자 합니다.

    코틀린은 멀티패러다임 프로그래밍 언어입니다. 오라일리 미디어의 부사장이자 여러 기술 서적의 저자인 마이크 루키데스는 최근 그의 글에서 "우리는 함수형, 객체 지향, 명령형 패러다임을 제공하는 멀티패러다임 언어를 효율적으로 사용하는 법에 대해 배워야 한다"면서 "많은 툴들이 개선되었고 이제 우리는 어떻게 잘 사용할지를 배울 차례다. 그리고 이제는 오랫동안 각각 특별히 고유했고 심지어 갈등 속에 있던 패러다임들을 섞어야 할 때다"라고 했습니다.

    이러한 환경이 갖춰진 지금, 어느 한쪽 패러다임만 사용하는 것은 어쩌면 큰 기회를 놓치는 것일 수 있습니다. 우리가 해결해야 하는 문제 중에는 함수형으로 해결하는 것이 우세한 경우가 있고, 객체 지향 프로그래밍으로 해결하는 것이 더 우세한 경우들도 있습니다. 프로그래머들은 이제 더 이상 함수형이 좋은지, 객체 지향이 좋은지, 정적 타입이 좋은지, 동적 타입이 좋은지 논쟁할 필요가 없습니다. 언어를 만들고 표준을 정의하는 단체와 기업들이 이미 하나의 언어와 플랫폼에서 여러 패러다임을 지원하도록 만들어주었고, 우리는 하나의 프로젝트, 심지어는 하나의 함수 안에서도 여러 패러다임을 조합하여 프로그래밍할 수 있게 되었습니다.

    코틀린은 Iterable, Iterator, Sequence, Flow, Channel 같은 구조를 통해 지연 평가(lazy evaluation)와 비동기 코드를 정교하고 유연하게 다룰 수 있다는 점이 특징입니다. 여기에 확장 함수와 풍부한 표준 라이브러리 헬퍼 함수가 결합되어, 단순한 리스트 순회 이상의 다양한 패턴을 더욱 간결하게 표현할 수 있습니다. 이를 통해 별도의 라이브러리 없이도 높은 수준의 리스트 프로세싱을 실현할 수 있습니다. 코틀린 특유의 정교하게 맞물린 구조와 유연한 확장성, 풍부한 편의 기능들은 언어를 사용하는 개발자에게 많은 영감과 즐거움을 안겨줍니다. 그런데 만일 이러한 기능을 충분히 활용하지 못하고 있다면, 코틀린 프로그래밍이 주는 즐거움을 온전히 누리고 있지 못한 것일지도 모릅니다.

    『멀티패러다임 프로그래밍』의 부록 컨텐츠인 『코틀린 멀티패러다임 이터레이션』에서는 『멀티패러다임 프로그래밍』의 일부 내용을 코틀린 이터러블, 이터레이터, 시퀀스를 객체 지향·함수형·명령형 패러다임을 연결하는 관점으로 풀어냅니다. 객체 지향적으로 설계된 이터레이터와 명령형 스타일로 작성하는 시퀀스의 관계를 알아보고, 함수형 확장 함수로 시퀀스이자 이터레이터인 객체를 다루는 코드를 살펴봅니다. 또한 함수형 확장 함수로 연산을 쌓은 시퀀스를 명령형으로 다루었다가 다시 함수형으로 전환하면서, 코틀린 이터레이션이 지닌 패러다임 전환 능력을 확인해봅니다.

    아울러 시퀀스와 이터레이터의 지연 평가를 깊이 파악하고, LISP의 철학을 차용해 코드와 데이터를 융합하는 시각을 탐구하며, 이러한 기법들의 실전 응용력을 높이는 내용도 다룹니다. 또한 유연하고 견고한 코드 구조를 설계하고 효율적이며 정확하고 안전하게 동작하는 코드를 만드는 방법을 탐구하게 될 것입니다. 이를 통해 멀티패러다임 언어 코틀린의 다양한 가능성을 실감하고, 소프트웨어 공학과 프로그래밍의 즐거움을 한층 깊이 누릴 수 있는 계기가 되길 바랍니다.

    0
  • MDU 유인동님의 프로필 이미지

    안녕하세요.

    함수형 ES6+의 후속편인 응용편 강좌를 오픈했어요. 6월 18일까지 할인 중이에요.

    https://www.inflearn.com/course/함수형_ES6_응용편

    함수형 ES6+ 1편도 함께 오픈 기념 할인 중입니다.

    https://www.inflearn.com/course/functional-es6

    함수형 ES6+ 3편은 데이터베이스를 다룰 예정입니다.

    감사합니다.

    0
  • MDU 유인동님의 프로필 이미지

    안녕하세요. 유인동입니다.

    제 강의를 들어주신 여러분 정말 고맙습니다.

    제가 지금까지 두 편의 강의를 만들었는데요.

    1. 자바스크립트로 알아보는 함수형 프로그래밍 (무료)

     - https://www.inflearn.com/course/함수형-프로그래밍

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

    https://www.inflearn.com/course/functional-es6

    이 번에 후속 편인 '함수형 프로그래밍과 JavaScript ES6+ 응용편'을 제작하게 되었습니다.

    함수형 프로그래밍을 어떻게 응용하고, 이터러블 프로그래밍을 어디까지 쓸 수 있는지 다양하게 준비했으니 많은 관심 부탁드립니다.

    현재 6개의 섹션까지 완성 되었어요.

    미리 구경하고 싶으신 분은 코드는 보실 수 있습니다.

    https://github.com/indongyoo/functional-javascript-02

    제작이 완료되는대로 또 공지드리도록 할께요. 

    감사합니다.

    0

무료