리액티브 프로그래밍이 선언적 프로그래밍이라고 불리는 이유는 해당 패러다임이 데이터 흐름과 변화에 중점을 두기 때문입니다.
선언적 프로그래밍은 "무엇(What)"을 달성하길 원하는지를 설명하는 것에 초점을 맞추며, "어떻게(How)" 그 목표를 달성할지에 대한 세부 사항은 숨겨집니다.
리액티브 프로그래밍 역시 데이터 흐름과 변화에 초점을 두고 있으며, 다음과 같은 이유로 선언적 프로그래밍으로 분류됩니다:
데이터 흐름 중심 : 리액티브 프로그래밍은 데이터가 어떻게 변화하는지에 초점을 두며, 데이터 흐름과 데이터 간의 의존성에 주목합니다. 프로그래머는 어떤 데이터가 어떻게 변화하는지를 선언적으로 정의하고, 시스템은 이에 따라 자동으로 업데이트됩니다.
변화에 대한 반응성 : "리액티브"라는 용어는 시스템이 데이터나 상태의 변화에 자동으로 반응하는 능력을 나타냅니다. 이러한 반응성은 데이터의 변경사항이 발생하면 시스템이 이를 즉시 감지하고 필요한 작업을 수행함으로써 실시간성과 유연성을 제공합니다.
선언적 성격 : 리액티브 프로그래밍은 "무엇을 원하는가"를 명세하는 선언적인 구성 요소를 강조합니다. 개발자는 데이터 흐름과 변화에 관한 규칙, 종속성, 변환 등을 명시적으로 선언하고, 시스템은 그에 맞게 동작합니다. 이에 따라 개발자는 "어떻게 이 일을 수행할 것인가"에 대한 사항에 대해 고민하지 않아도 되며, 코드의 추론 가능성과 가독성이 증가합니다.
비동기성 처리 : 리액티브 프로그래밍은 주로 비동기적인 이벤트 처리에 유용하며, 이는 데이터의 변화가 무작위로 발생하는 상황에서도 안정적인 동작을 가능하게 합니다. 선언적인 방식으로 데이터 흐름을 처리하면 시스템이 자동으로 변화에 대응하므로, 복잡한 비동기 로직을 수동으로 관리하거나 동기화하기보다는 효율적인 방식으로 데이터를 처리할 수 있습니다.
프로그램의 상태 변화 감소 : 리액티브 프로그래밍은 데이터 흐름에 기반한 프로그래밍 패러다임으로, 프로그램의 상태 변화를 최소화하고 예측 가능한 결과를 유지하기 쉽게 만듭니다. 이로 인해 버그나 복잡성을 줄일 수 있습니다.
요약하자면, 리액티브 프로그래밍은 데이터 흐름과 변화에 초점을 두며, 개발자는 무엇을 원하는지를 선언적으로 명시하고 시스템이 이에 맞게 자동으로 동작하도록 하는 패러다임입니다.
이로 인해 프로그램의 복잡성을 줄이고 유연하며 실시간성 있는 시스템을 구축할 수 있게 됩니다.