Search
🎗️

6. 함수형 프로그래밍

가변성 분리

함수형 언어에서는 변수의 값이 변경되지 않는다.⇒ 이러한 특성은 경합 조건, 교착상태 조건, 동시 업데이트 등의 동시성 문제를 해결해준다.
애플리케이션을 올바르게 구조화하려면 변수를 변경하는 컴포넌트와 변경하지 않는 컴포넌트를 분리해야 한다. 가변 컴포넌트는 트랜잭션 메모리를 통해 동시성 문제로부터 가변 변수를 보호할 수 있다.

이벤트 소싱

상태가 아닌 트랜잭션을 저장하는 전략이다.
생성과 읽기 연산만 발생하는 저장소를 구현하는 전략이다.
Github와 같은 시스템이 대표적인 예시이다.

결론

구조적 프로그래밍은 제어 흐름의 직접적인 전환에 대해 규칙을 부과한다.
객체 지향 프로그래밍은 제어 흐름의 간접적인 전환에 대해 규칙을 부과한다.
함수형 프로그래밍은 변수 할당문에 대해 규칙을 부과한다.
어떤 프로그래밍 패러다임도 우리의 권한이나 능력을 확장하지 않으며, 단지 코드를 작성하는 방식을 제한할 뿐이다.
도구와 하드웨어는 변화했지만, 소프트웨어의 핵심은 여전히 동일하다. 모든 프로그램은 순차, 분기, 반복, 참조로 구성되며, 그 이상도 이하도 아니다.