[CS]함수형 프로그래밍(Functional Programming)

한상욱·2024년 7월 24일
0

CS&자격증후기&잡담

목록 보기
11/21
post-thumbnail

들어가며

함수형 프로그래밍(Functional Programming)은 데이터의 처리를 수학적인 함수의 계산으로 취급하고, 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임입니다. 오늘은 함수형 프로그래밍에 대하여 알아보겠습니다.

수학적인 함수의 계산

무슨말일까요? 간단하게 얘기하자면 로직이 함수로 구성되어 있다는 의미입니다.

  • A-> F(x) -> G(x) -> H(x) -> D

위 패러다임을 보면 A라는 값이 D라는 결과로 출력되기 위해 총 3가지 함수를 거치게 되는데요. 이러한 과정이 수학적인 함수의 계산으로 취급한다는 것입니다.

상태와 가변 데이터

상태와 가변데이터를 멀리한다고 하는데요. 아래의 코드를 보겠습니다.


int a = 0;
int increase() {
	return a + 1;
}

void main() {
    int value = a;
    value = increase();
}

위의 코드에서는 value라는 변수가 1 증가했습니다. 근데, 이러한 로직을 통하여 a라는 변수는 0에서 1로 값이 변경되었습니다. 이는 곧 a는 가변데이터이고 상태가 변경되었음을 의미합니다.

void increase(int value) {
	return value + 1;
}

void main() {
	int value = a; // 0
    int newValue = increase(value); // 1
}

이 코드는 어떠한가요? 이 코드에서는 value의 값을 1 증가시킨 newValue가 등장하므로써 기존의 데이터의 값이 변경되지 않았고, 상태가 변하지 않았습니다. 이러한 코드는 불변성을 유지한다고 할 수 있습니다.

함수형 프로그래밍의 특징

이제 함수형 프로그래밍의 특징에 대해서 알아보죠.

1. 순수한 함수

순수한 함수란 부작용이 없는 함수, 즉, 함수의 실행이 외부로 영향을 끼치지 않는 함수를 의미합니다. 함수형 프로그래밍에서는 함수를 순수한 함수라고 칭하는데요. 순수한 함수는 동일한 입력값에 대하여 항상 동일한 결과값을 출력하는 함수를 의미한다고 할 수 있겠습니다.

뭐, 아닌 함수가 뭐가 있냐 하면 Random()난수를 생성하는 함수들은 항상 다른 결과를 반환하니 순수한 함수라고 보기 힘들겠군요!

2. 익명 함수

익명 함수란 함수의 이름이 정해져 있지 않고, 로직만 작성되어 있는 함수를 의미합니다. 대표적으로 Swift에서는 익명 함수를 적절히 활용하면 클로져 표현으로 여러가지 함수형 프로그래밍을 작성할 수 있죠.

3. 고차 함수

위에서 언급한 것 처럼, 함수형 프로그래밍에서는 계속해서 연속적인 함수의 로직으로 구성됩니다. 함수를 함수가 다룰 수 있다는 의미죠. 이러한 함수들은 고차 함수라고 합니다. 가장 대표적으로 프로그래밍 언어에서는 map 함수를 통하여 배열 내부의 타입을 다른 타입으로 변환하는 함수를 전달하여 로직을 수행합니다. 이러한 함수를 예로 들 수 있겠네요 !

profile
자기주도적, 지속 성장하는 모바일앱 개발자가 되기 위해

0개의 댓글