기술 면접을 대비해 개념을 🍰 한입 크기로 잘라 정리합니다.
깃허브가 궁금하다면 놀러오세요!
👉 깃허브 보러가기 (Since 2023.05.10 ~ )
객체 지향 프로그래밍에서는 변수의 상태를 공유하고 상태를 변경하기 때문에 예상치 못한 버그를 일으킬 수 있습니다. 함수형 프로그래밍은 이러한 객체 지향 프로그래밍의 단점을 보완한 프로그래밍 방법으로, 불변성으로 선언한 값을 복사해 변경하므로 반환되는 값이 예측이 가능합니다.
함수형 프로그래밍은 계산을 수학적 함수의 평가로 취급하고, 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임입니다. 부수효과를 제거한 순수함수들로만 작성되어 프로그램의 동작을 이해하고 예측하기 쉽다는 장점이 있습니다.
✏️ 부수 효과가 없는 순수 함수를 일급 객체로 간주하여 파라미터나 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다.
함수 내의 실행으로 인해 함수 외부에 영향을 주는 것을 의미합니다. 대표적으로 다음과 같은 변화가 발행하는 작업을 말합니다.
부수 효과를 제거한 함수를 순수함수라고 하며, 같은 입력 값에 대해 항상 동일한 출력 값을 반환합니다. 함수형 프로그래밍에서 사용하는 함수는 모두 순수 함수입니다.
함수형 프로그래밍에서 함수는 일급 객체로 취급됩니다. 따라서 일급 객체 함수는 일급 객체로 취급되는 함수를 의미합니다.
일급 객체 함수는 사용에 제한이 없기 때문에 프로그램 내 어디서든 사용할 수 있어, 유연하고 유용합니다.
일급 객체의 특징은 다음과 같습니다.
함수형 프로그래밍에서 함수는 항상 같은 동작을 진행합니다. 따라서 함수의 실행으로 인해 어떤 결과가 반환될지 예측할 수 있습니다. 즉, 동일한 인자에 대해서는 항상 동일한 결과값을 반환합니다.
그 밖에도 함수형 프로그래밍은 불변성, 클로저, 유지관리 가능성, 모듈화 등의 특징을 가집니다.