쏙쏙 들어오는 함수형 코딩
🌟 함수형 프로그래밍은 무엇인가요 ?
함수형 프로그래밍은 범용 프로그래밍 패러다임이기 때문에 어디서나 잘 쓸 수 있다.
위키피디아 에서 정의한 함수형 프로그래밍의 뜻은,
📖 수학함수를 사용하고 부수효과 (side effect) 를 피하는 것이 특징인 프로그래밍 패러다임
📖 부수효과 없이 순수함수 (pure function) 만 사용하는 프로그래밍 스타일
❓ 부수효과랑 순수함수는 뭘까?
부수효과 (side effect)
부작용 정도로 알고 있었던 side effect, 그 외에도 원래의 목적과 다르게 다른 효과를 내는 것도 side effect라고 한다.
이 책에서는 부수효과를 함수가 리턴값 이외에 하는 모든 일이라고 정의한다.
부수효과는 함수를 부를 때마다 발생하기 때문에 리턴값이 필요해서 부른 함수가 의도하지 않는 부수 효과를 발생시킬 수도 있다.
순수함수 (pure function)
이 책에서는 순수함수를 인자에만 의존하고 부수 효과가 없는 함수라고 정의한다.
쉽게 말하자면 같은 인자를 넣으면 항상 같은 결과를 돌려주는 함수를 말한다.
이러한 면 때문에 순수함수를 수학 함수라고 보기도 한다.
❗️ 정리하자면 부수효과를 피하면서 결과를 인자에만 의존하는 순수함수를 사용하는 프로그래밍을 함수형 프로그래밍이라고 한다.
하지만 정말 그렇게 프로그래밍을 할 수 있을까?
🌟 실용적인 측면에서 함수형 프로그래밍 정의의 문제점
부수효과를 피하고 순수함수를 사용하라는 함수형 프로그래밍의 이론적 정의는 개발자에게 도움이 되지 않는다.
이 책에서는 함수형 프로그래밍을 실용적인 측면에서 바라보며 정의를 지적한다.
- 부수 효과는 필요하다.
- 함수형 프로그래밍으로 부수 효과를 잘 다룰 수 있다.
- 함수형 프로그래밍은 실용적이다.
🌟 함수형 사고
이 책에서 함수형 사고란, 함수형 프로그래머가 소프트웨어 문제를 해결하기 위해 사용하는 기술과 생각 이라고 말하며 함수형 사고의 두 가지 기술을 소개한다.
첫 번째는 코드를 액션 (action), 계산 (calculation), 데이터 (data) 로 구분하는 것이다.
- 액션
실행 시점이나 횟수 또는 둘 다에 의존한다.- 시간이 지남에 따라 안전하게 상태를 바꿀 수 있는 방법
- 순서를 보장하는 방법
- 액션이 정확히 한 번만 실행하게 보장하는 방법
- getCurrentTime()
- sendEmail(to, from, subject, body) 등등 ...
- 계산
입력값으로 출력값을 만든다.- 정확성을 위한 정적 분석
- 소프트웨어에서 쓸 수 있는 수학적 지식
- 테스트 전략
- sum(numbers)
- string_length(str) 등등 ...
- 데이터
이벤트에 대한 기록한 사실이다.- 효율적으로 접근하기 위해 데이터를 구성하는 방법
- 데이터를 보관하기 위한 기술
- 데이터를 이용해 중요한 것을 발견하는 원칙
- [1, 2, 3, 4, 5]
- {firstname : "Eric", lastname : "Normand"} 등등...
이들을 잘 구분하면 요즘 유행하는 분산 시스템을 사용할 수 있다.
두 번째는 일급 추상이다. 함수에 함수를 넘겨 더 많은 함수를 재사용한다.
'책곡책곡 > 쏙쏙 들어오는 함수형 코딩' 카테고리의 다른 글
주차별 스터디 일정 (0) | 2025.01.13 |
---|