본문 바로가기
책곡책곡/쏙쏙 들어오는 함수형 코딩

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

by 몌으니 2025. 1. 20.
쏙쏙 들어오는 함수형 코딩


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

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

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

📖 수학함수를 사용하고 부수효과 (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) 등등 ...
  2. 계산
    입력값으로 출력값을 만든다.
    • 정확성을 위한 정적 분석
    • 소프트웨어에서 쓸 수 있는 수학적 지식
    • 테스트 전략
    • sum(numbers)
    • string_length(str) 등등 ...
  3. 데이터
    이벤트에 대한 기록한 사실이다.
    • 효율적으로 접근하기 위해 데이터를 구성하는 방법
    • 데이터를 보관하기 위한 기술
    • 데이터를 이용해 중요한 것을 발견하는 원칙
    • [1, 2, 3, 4, 5]
    • {firstname : "Eric", lastname : "Normand"} 등등...

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


두 번째
는 일급 추상이다. 함수에 함수를 넘겨 더 많은 함수를 재사용한다.

'책곡책곡 > 쏙쏙 들어오는 함수형 코딩' 카테고리의 다른 글

주차별 스터디 일정  (0) 2025.01.13