코스 이미지

Swift로 함수형 프로그래밍 시작하기

iOS 오프라인 밋업에서나 겨우 들을 수 있었던 그 강의, 송치원(필명 곰튀김)의 함수형 프로그래밍 특별 강의

Swift로 함수형 프로그래밍 시작하기

온라인 동영상 + 온라인 실습 강의

열람 기간 제한 없음 파트1은 무료 열람 현재 유일한 Swift4 기반의 FP 강의


이제는 많은 개발자들이 배우고 싶어하는 함수형 프로그래밍

최근 몇 년간 함수형 프로그래밍, Functional Programming(FP)에 대한 관심이 무척이나 높아졌습니다. 각종 분야의 밋업이나 세미나에 갔을 때 FP에 대해 논하는 것은 흔한 풍경이 되었습니다. 특히 기존 코드를 FP 방식으로 리팩토링하는 모습을 보여주며, 이 좋은 것을 널리널리 쓰라는 이야기도 많이 들립니다.

하지만 많은 개발자들이 객체지향 프로그래밍 패러다임에 익숙한 상황에서, 새로운 패러다임으로 넘어가는 데에는 많은 노력이 필요합니다. 이것은 어떤 새로운 언어를 배우고 그 문법을 익혀서 쓰는 것과는 다른 이야기입니다.

함수형 프로그래밍 패러다임으로 넘어가는 것은 왜 어려울까?

한 프로그래머가 가진 인식 체계(패러다임)은 프로그램의 구조를 설계하는 것 부터 소스코드를 짜기까지 모든 과정에 깊게 관여합니다. 이 프로그래머가 객체지향 프로그래밍 패러다임 속에서 평생을 프로그래밍 해온 사람이라고 가정할 때, 함수형 프로그래밍을 새롭게 배우는 데 있어서 이런 어려움이 따를 수 있습니다:

  • 변수 없이 프로그램을 짠다는 것 자체가 이상하게 느껴집니다. 조금 더 개발자 친화적으로 표현하자면, state 없이 프로그래밍을 하라는 설명 자체가 너무나도 어색합니다.
  • FP에서 등장하는 Currying 이라는 개념도 이상합니다. 함수를 만드는 함수를 만드는 함수를 만든다는 것(오타 아님)이 도대체 무슨 말인지 이해가 되질 않습니다.
  • 데이터를 바꾸지 않으면서 프로그램의 행동을 제어한다는 것이 이상합니다. 그냥 다 이상하게 느껴집니다.

이 강의는 FP에 대해 아무리 이해하려 노력해도 그 근본 체계 자체가 너무나도 어색하고, OOP와 너무 달라 불편하기만 하고, 어렵다고만 느껴지는 분들을 위해 만들었습니다.


FP 자체가 처음인 분들을 위한 특강입니다

이 강의는 함수형 프로그래밍이 처음인 개발자들을 대상으로, 기존의 사고 체계를 조금씩 바꿔나가는 데에 도움을 드리고자 이론과 실습으로 구성한 강의입니다.

  • 강의 분량이 방대하지 않아요: 짧고 굵게, 부담스럽지 않게 새로운 개념을 받아들일 수 있는 것에 초점을 두었습니다.
  • 실습, 라이브 코딩을 통해 더욱 '개발자스럽게' 이해하세요: 파트 2는 실습으로만 이뤄져있고, 코드를 통해 FP에 대해 더욱 명쾌히 알게됩니다.
  • 우리에게 필요한건 화려한 설명이 아니죠: 어려운 말을 마구 쓰면서 여러분을 시험에 빠트리지 않습니다.

이런 분들은, 꼭 발도장 찍고 가세요

  • 동시성, 비동기성이 중요한 서비스를 개발하려고 하시는 분
  • 간결한 소스코드를 쓰고싶어서 맨날 고민하는 분
  • FP 학습에 관심이 있는 누구나

이제 함수형 프로그래밍에 대한 이해는 대세를 넘어 하나의 필수 영역으로 자리잡아가고 있습니다.
관심만 갖고 기웃거리기보다, 직접 체험하고 실무에 적용해보시길 바랍니다.


커리큘럼

프로그래밍 패러다임에 대한 이해를 시작으로, 함수형 프로그래밍 프로젝트까지: 챕터 2의 실습을 놓치지 마세요

  • 1. 프로그래밍 패러다임: 함수형 프로그래밍(이하 FP)이란 도대체 무엇이며, 왜 요즘 관심이 급부상한걸까?
  • 1.1 프로그래밍 패러다임의 변천사: 시대적 요구에 따라 달라져온 프로그래밍 패러다임. 시대적 요구에 따라 객체지향 프로그래밍 패러다임이 등장했고 현재의 주류를 담당하고 있다. 그렇다면 FP는?
  • 1.2 FP가 '재'조명 받는 이유: 지금은 프로그래밍에 있어 어떤 것이 중요하기에 FP가 새롭게 조명받는걸까?
  • 1.3 FP에 대한 오해들: 고차함수(Higher-Order Function)를 쓰면 내가 FP를 하고 있는걸까? FP는 OOP를 대체할 수 있는걸까? FP를 위한 언어가 따로 있어서 그 언어만 써야 하는걸까?
  • 2. 함수를 잘 다루기 위한 기술들: 실습으로 구성된 챕터
  • 2.1 순수함수: Pure Function
  • 2.2 고차함수: Higher-Order Function
  • 2.3 함수 합성: Composition
  • 2.4 커링: Currying
  • 3. 기존 코드를 FP로 리팩토링하기: 예제, 라이브코딩으로 구성된 챕터
  • 3.1 FizzBuzz: 반복문, 조건문으로 구성된 non-FP 프로그램을 FP 방식으로 리팩토링.
  • 3.2 Low-High: state를 갖지 않는 FP에서, loop 과 전역변수
  • 3.3 Weather Forecast: 비동기성, 동시성을 처리하는 FP의 방식 체험.
  • 4. 자판기 구현 프로젝트: FP를 프로젝트에 어떻게 도입할까?
  • 4.1 프로젝트 개요
  • 4.2 FP 프로그램을 설계하는 방법과 과정 익히기
  • 4.3 구현하기: 설계한 내용을 기반으로 실제 기능을 FP로 구현해보기
  • 4.4 UI 적용하기: iOS 앱을 만들면서 UI 에 FP 로직을 접목한다.
  • 4.5 이후의 학습 방향 제안

강사 소개

15년 경력의 모바일 개발자. 모바일을 무척이나 사랑하고, 2008년 부터 iOS 실무를 해왔습니다.

  • iOS 밋업 'let us: Go!' 2017 가을, 2018봄, 여름 발표자. 주제는 모두 FP 관련!
  • 임베디드/모바일 소프트웨어 프로그래머
  • 임베디드/응용 프로그래밍/Arduino/3D Printer 강사
  • 고용노동부 스펙초월 멘토스쿨 멘토
  • 임베디드소프트웨어 산업협회 위원
  • 블로그, GitHub
  • 강의는 열람 기간 제한 없이 제공됩니다. '질문' 탭에서 질문도 남길 수 있습니다. 애용하세요!
  • 1챕터는 무료로 열람할 수 있으며, 2챕터부터는 실제로 소스코드를 짜보는 실습, 3챕터부터는 리팩토링 과정을 통한 더욱 풍부한 학습 내용이 준비되어 있습니다.

파트1. 함수형 프로그래밍 소개

함수형 프로그래밍의 등장 배경과 기본 개념에 대해 이해합니다. FP에 대해 많이들 잘못 생각하는 지점들도 짚고 시작하도록 합니다. 간단하지만 무척 중요한 베이스입니다.

파트2. [실습] 함수를 다루는 기술들

프로그래머스 내부 실습 시스템을 이용하여, FP를 하는데 유용한 프로그래밍 기술들을 소스코드를 통해 익혀봅니다.

파트3. [리팩토링/라이브코딩] 총 3개의 프로그램을 non-FP 에서 FP로

non-FP로 작성된 프로그램을 FP로 리팩토링 하는 과정을 라이브 코딩으로 보며, 눈으로! 머리로! 또, 가능하다면 직접 따라하며! FP 프로그래밍을 익힙니다.

파트4. [프로젝트] FP를 실무에 적용하기 위한 예제 프로젝트

지금까지 잘 배워온 내용을 조금씩 당신의 실무에 도입할 수 있도록, FP 방식으로 프로그램을 설계하는 방법과 구현 과정을 학습합니다.