React 공식문서는 React로 선언형 UI를 구성할 수 있다고 말한다.
React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes.
Declarative views make your code more predictable and easier to debug.
여기서 말하는 선언형(Declarative)이란 무엇을 의미할까? 반대로 명령형(Imperative)란 무엇일까?
왜 React 는 선언형 UI가 더 코드가 예상가능하고 디버깅이 쉽다고 할까?
왜 명령형에서 선언형 UI로 흐름이 바뀌었을까?
선언형
SELECT * FROM users WHERE id <= 100
SQL을 통해 database에서 원하는 데이터를 가져올 수 있다. 여기서 중요한 포인트는 어떻게 데이터를 가져올지SQL 엔진에 완전히 위임된다. 즉, 개발자는 어떻게 데이터를 가져올지 모른다는 것이다.
Haskell, SQL과 같은 선언형 프로그래밍 언어는 개발자로부터 명령형 로직을 추상화한다. 개발자는 명령형 로직을 고민하지 않아도 된다는 뜻이다.
명령형
step by step
으로 나타내어 프로그램이 어떻게(How) 동작하는지 묘사하는 프로그래밍 패러다임Javascript, scala와 같은 multi-paradigm언어는 명령형, 선언형 코드 모두 작성할 수 있다.
참고
https://increment.com/mobile/the-shift-to-declarative-ui/#authors
https://aidenybai.com/thoughts/virtual-dom
https://dev.to/ruizb/declarative-vs-imperative-4a7l