ComputerScience

함수형 프로그래밍은 무엇인가? 순수 함수와 고차 함수의 차이

Albosa2lol 2023. 11. 9. 15:55

함수형 프로그래밍(Functional Programming, FP)은 계산을 수학적 함수의 평가로 취급하고 상태 변경이나 변경 가능한 데이터를 피하는 프로그래밍 패러다임입니다. 이 접근 방식은 프로그램의 동작을 순수 함수로 구성함으로써 부수 효과(side effects)를 최소화하고 프로그램의 예측성과 투명성을 높이는 것을 목표로 합니다.

함수형 프로그래밍의 핵심 개념 중 두 가지는 '순수 함수(Pure Functions)'와 '고차 함수(Higher-Order Functions)'입니다.

순수 함수

순수 함수는 다음 두 가지 주요 특성을 가집니다:

  1. 입력에만 의존: 함수의 출력은 오직 입력 매개변수에만 의존하며, 외부 상태에 의존하지 않습니다. 즉, 같은 입력에 대해서는 항상 같은 출력을 반환합니다.
  2. 부수 효과가 없음: 함수는 외부 상태를 변경하지 않으며, 예를 들어 전역 변수를 수정하거나 I/O 작업을 수행하지 않습니다. 이로 인해 예측 가능하며 테스트와 디버깅이 용이해집니다.

고차 함수

고차 함수는 다음과 같은 작업을 수행할 수 있는 함수입니다:

  1. 함수를 매개변수로 받음: 다른 함수를 인자로 받아 해당 함수에 대한 작업을 수행할 수 있습니다.
  2. 함수를 반환함: 결과로 새로운 함수를 반환하여, 이를 통해 함수의 조합이나 연속적인 연산이 가능해집니다.

차이점

순수 함수와 고차 함수의 주된 차이점은 '역할'에 있습니다. 순수 함수는 프로그램의 기본 작업 단위로서 어떤 부수 효과도 발생시키지 않는 독립적인 기능을 제공하는 반면, 고차 함수는 함수를 조작하는 데 사용되어 프로그램의 구조를 만들거나 추상화 수준을 높이는 데 기여합니다. 순수 함수는 '어떻게 계산할 것인가'에 초점을 맞추고, 고차 함수는 '계산을 어떻게 조직할 것인가'에 초점을 맞춥니다.

함수형 프로그래밍에서는 이 두 종류의 함수가 서로 결합되어 높은 수준의 추상화와 모듈화를 가능하게 하며, 이를 통해 코드의 재사용성과 간결성을 높일 수 있습니다.