쏙쏙 들어오는 함수형 코딩 - 1

binary·2022년 5월 14일
2
post-thumbnail

Chapter 1

🌟 함수형 프로그래밍은 무엇인가요 ?

함수형 프로그래밍은 범용 프로그래밍 패러다임이기 때문에 어디서나 잘 쓸 수 있다.

위키피디아 에서 정의한 함수형 프로그래밍의 뜻은,

📖 수학함수를 사용하고 부수효과 (side effect) 를 피하는 것이 특징인 프로그래밍 패러다임
📖 부수효과 없이 순수함수 (pure function) 만 사용하는 프로그래밍 스타일

🥲 ❓ 여기서 나는 궁금증이 생겼다. 부수효과랑 순수함수는 또 뭐야..?

부수효과 (side effect)

부작용 정도로 알고 있었던 side effect, 그 외에도 원래의 목적과 다르게 다른 효과를 내는 것도 side effect라고 한다.

이 책에서는 부수효과를 함수가 리턴값 이외에 하는 모든 일이라고 정의한다.
부수효과는 함수를 부를 때마다 발생하기 때문에 리턴값이 필요해서 부른 함수가 의도하지 않는 부수 효과를 발생시킬 수도 있다.

순수함수 (pure function)

이 책에서는 순수함수를 인자에만 의존하고 부수 효과가 없는 함수라고 정의한다.
쉽게 말하자면 같은 인자를 넣으면 항상 같은 결과를 돌려주는 함수를 말한다.
이러한 면 때문에 순수함수를 수학 함수라고 보기도 한다.

🤔 ❗️ 정리하자면 부수효과를 피하면서 결과를 인자에만 의존하는 순수함수를 사용하는 프로그래밍을 함수형 프로그래밍이라고 한다.

하지만 정말 그렇게 프로그래밍을 할 수 있을까?

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

부수효과를 피하고 순수함수를 사용하라는 함수형 프로그래밍의 이론적 정의는 개발자에게 도움이 되지 않는다.
이 책에서는 함수형 프로그래밍을 실용적인 측면에서 바라보며 정의를 지적한다.

  1. 부수 효과는 필요하다.

  2. 함수형 프로그래밍으로 부수 효과를 잘 다룰 수 있다.

  3. 함수형 프로그래밍은 실용적이다.

🌟 함수형 사고

이 책에서 함수형 사고란, 함수형 프로그래머가 소프트웨어 문제를 해결하기 위해 사용하는 기술과 생각 이라고 말하며 함수형 사고의 두 가지 기술을 소개한다.

첫 번째는 코드를 액션 (action), 계산 (calculation), 데이터 (data) 로 구분하는 것이다.

  1. 액션

실행 시점이나 횟수 또는 둘 다에 의존한다.

  • 시간이 지남에 따라 안전하게 상태를 바꿀 수 있는 방법
  • 순서를 보장하는 방법
  • 액션이 정확히 한 번만 실행하게 보장하는 방법

getCurrentTime()
sendEmail(to, from, subject, body)
등등 ...

  1. 계산

입력값으로 출력값을 만든다.

  • 정확성을 위한 정적 분석
  • 소프트웨어에서 쓸 수 있는 수학적 지식
  • 테스트 전략

sum(numbers)
string_length(str)
등등 ...

  1. 데이터

이벤트에 대한 기록한 사실이다.

  • 효율적으로 접근하기 위해 데이터를 구성하는 방법
  • 데이터를 보관하기 위한 기술
  • 데이터를 이용해 중요한 것을 발견하는 원칙

[1, 2, 3, 4, 5]
{firstname : "Eric", lastname : "Normand"}
등등...

이들을 잘 구분하면 요즘 유행하는 분산 시스템을 사용할 수 있다.

두 번째는 일급 추상이다.

함수에 함수를 넘겨 더 많은 함수를 재사용한다.
이 부분은 나중에 더 자세히 다룬다고 한다.


혹시나 잘못된 정보가 있다면 댓글로 알려주세요 ! 저의 성장의 큰 도움이 될 것 같습니다.🌱

0개의 댓글