쏙쏙 들어오는 함수형 코딩

Chapter 1 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다.

쏙쏙 들어오는 함수형 코딩 스터디를 시작했다. 각 장마다 이야기하는 것이 무엇인지 질문을 던지고 답을 해보자!

이번 장에서 살펴볼 내용은 다음을 다루고 있다.

  • 함수형 사고가 무엇인지
  • 함수형 프로그래머가 코드를 바라보는 특별한 방법

함수형 프로그래밍이란?

  1. 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임
  2. 부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일

부수 효과란?

함수가 리턴값 이외에 하는 모든 일을 말한다.
부수 효과의 예로는 무엇이 있을까? 책에서 소개하는 예는 다음과 같다.

  • 이메일 보내기
  • 파일 읽기
  • 불빛을 깜빡이기

부수 효과는 함수를 부를 때마다 발생하기 때문에 문제가 될 수 있다. 의도하지 않게 발생할 수 있다. 따라서 함수형 프로그래머는 불필요한 부수 효과를 가능하다면 사용하지 않으려고 한다.

순수 함수란?

순수함수는 인자에만 의존하고 부수 효과가 없는 함수이다. 즉, 같은 input일 경우 output이 같다. 수학에서 함수도 그렇게 동작하기에 순수 함수를 수학 함수라고도 볼 수 있다. 순수 함수는 다루기 쉽다.

실용적인 측면에서 함수형 프로그래밍 정의의 문제점은?

다시 함수형 프로그래밍의 정의를 살펴봤을때 실용적인 측명에서 보자면 어떤 문제가 있을까? 부수 효과는 필요하다는 것이다. 이메일을 전송하는 서비스를 개발한다고 가정하자. 위에서 부수 효과 예시에 이메일 보내기가 있다. 이메일 보내기는 부수 효과이기 때문에 함수형 프로그래밍을 할 수 없다. 맞는가? 아니다. 필요할 때는 써야한다. 그렇다면 함수형 프로그래밍 관점에서는 어떻게 해야할까?

함수형 프로그래밍은 부수 효과를 잘 다룰 수 있다. 어떻게 잘 다룰 수 있을까?

함수형 프로그래머는 코드를 세가지로 나눈다. 어떻게 나눌까?

함수형 프로그래머는 코드를 액션, 계산, 데이터로 나눈다. 그렇다면 액션, 계산, 데이터를 무슨 기준으로 나눌까?

액션은 호출하는 시점과 횟수에 의존한다. 그래서 호출할 때 조심해야 한다. 액션을 부수 효과라고 볼 수 있겠다.

계산은 부르는 시점과 횟수에 상관이 없다. 입력값으로 출력값을 만드는 것이다. 같은 입력값으로 항상 같은 출력값이 나온다. 순수 함수하고 보면 되겠지.

데이터는 이벤트에 기록한 사실이다. 실행하지 않아도 의미가 있는 값이다.

액션, 계산, 데이터를 구분하면 얻는 장점은?

액션, 계산, 데이터를 구분하면 코드를 더 쉽게 이해할 수 있고 심각한 버그를 막을 수 있다. 데이터와 계산은 실행 시점과 횟수에 의존하지 않기 때문에 코드를 계산과 데이터로 바꿀수록 분산 시스템에서 생기는 문제를 해결할 수 있다. 액션은 실행 시점과 횟수에 영향을 받기 때문에 코드 전체에 영향을 주지 않도록 격리시켜야 한다. 액션에서 계산으로 옮기면 결과적으로 액션도 다루기 쉬워진다.

함수형 사고란?

함수형 사고는 함수형 프로그래머가 소프트웨어 문제를 해결하기 위해 사용하는 기술과 생각을 말한다. 그 중 가장 중요한 2가지는 다음과 같다.

  1. 액션과 계산, 데이터를 구분해서 생각하는 것
  2. 일급 추상

일급 추상

함수에 함수를 넘겨 더 많은 함수를 재사용하는 것이다. 더 자세한 내용은 뒤에서 다룰 것이다.

결론 : 함수형 사고, 프로그래밍이란 무엇인가?

우리는 이 질문에 답을 할 수 있어야 한다.

results matching ""

    No results matching ""