프로그래밍 패러다임과 반응형 프로그래밍

·2022년 12월 12일
0

📌 패러다임 이란?

패러다임 (paradigm)은 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다.

프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주고, 결정하는 역할을 한다.
예를 들어, 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함수값들의 연속으로 생각할 수 있게 해준다.

내가 프로그램이라고 하는 것을 어떠한 관점으로 바라보고 설계하느냐에 따라 같은 목적을 이루고자 하더라도 전혀 다른 형태로 프로그래밍을 할 수 있도록 해준다.

잘 만들어진 프로그래밍 패러다임은 보다 좋은 프로그램을 만들 수 있는 방법과 시작을 제공해준다.
나아가 여러가지 패러다임을 알고 있다면, 그 중에서 더 간결하고 단순하게 설명하고 있는 관점을 선택적으로 취할 수 있게 된다.

현대에 와서는 하나의 프로그램을 하나의 패러다임만이 아니라 여러 패러다임을 함께 섞어서 사용하려는 시도가 늘고 있다.
반응형 프로그래밍도 객체지향 프로그래밍과 함수형 프로그래밍과 같이 프로그래밍을 바라보는 관점을 갖게 하고 결정하는 역할을 하는 체계라고 이해하면 된다.

📌 반응형 프로그래밍 이란?

데이터의 흐름변경사항의 전파에 중점을 둔 선언적 프로그래밍 패러다임

반응형 프로그래밍의 패러다임을 이해할 수 있는 예제는 스프레드 시트이다.

예를 들어, C1셀에 =A1+B1 이라는 수식을 선언적으로 작성해두고 A1 B1 값을 변경하면 즉시 변경사항이 전파되어 C1 값이 자동으로 변경된다.
D1에는 =A1+B1+C1 이라는 수식을 선언적으로 작성해두었고, A1 B1 값을 변경하자 변경사항이 전파되어 C1 값도 변경되었고 다시 그 값이 D1의 수식에 반영이 되어 D1의 값이 변경되는 데이터 흐름이 만들어졌다.

이러한 개념을 확장해 '이러한 관점으로 프로그래밍을 할 수 있다면 좋지 않을까?'에서 시작한 패러다임이 반응형 프로그래밍이다.

📌 웹에서의 반응형 프로그래밍

웹 개발에서 반응형 프로그래밍이 중요해진 계기는 웹 프레임워크로의 전환이다.

웹 프레임워크 (Web Framework) 의 본질 (MVVM 패턴)
Change Detection + Binding + Template + Auto Render = Reactive
즉, 값이 변경되었을 때 템플릿에 선언해둔대로 알아서 렌더링을 해준다 = 반응형

📍 패러다임의 전환 1 : 선언적 프로그래밍

선언적 프로그래밍이란, 무엇을 해야 할지 따로 약속을 만들어 기술하게 하고 언제 어떻게 동작하는지는 내부에 처리하는 방식의 프로그래밍 기법

JS를 통해 어떻게 DOM 조작을 할지가 아니라, JSX 혹은 Template Binding을 통해 무엇을 해야 할지 선언을 해두면 내부적으로 알아서 적절하게 렌더링하는 방식이다.

언제 어떻게 해야 할지 내부 메커니즘은 숨기면서 필요한 로직만 외부에서 선언을 할 수 있게 함으로써 알고리즘을 구현하는데 발생하는 에러를 최소화하고, 시간과 변화에 구애받지 않고 개발할 수 있게 해준다.

📍 패러다임의 전환 2 : 변경사항의 전파 (Pull -> Push)

어떻게 화면에 그릴지를 중심으로 개발하다가, 무엇을 할지만 선언하는 방식으로 변경되면서 데이터를 대하는 패러다임도 변경된다.

기존에는 DOM 조작을 통해 화면을 구현하는 것이 중심이였기 때문에 Render를 해야 하는 시점에 필요한 데이터를 모두 불러와서 (Pull) 화면을 출력하는 Pull 관점에서 UI를 개발했다.

새로운 반응형 프로그래밍의 패러다임에서는 미리 선언되어 있는 구조에서 값이 변화할 때마다 템플릿으로 데이터를 전달(Push)하는 Push 관점으로 설계가 되도록 변화되었다. (React의 setState처럼)

📌 비동기 프로그래밍과 반응형 프로그래밍

프론트엔드 프로그래밍에서 반응형 프로그래밍이 중요한 이유는 비동기 프로그래밍을 잘하기 위해서이다.

📍 비동기 프로그래밍이 어려운 이유

  • 비동기 프로그래밍은 작성한 코드 순서대로 동작하지 않는다.
  • 언제 실행이 될지 예측할 수 없다.
  • 호출한 순서대로 동작한다는 보장도 없다.
  • 호출 당시의 값과 실제 실행되었을 때의 값이 그대로일거라는 보장이 없다.

< 참고 : https://yozm.wishket.com/magazine/detail/1334/ >

profile
개발을 개발새발 열심히➰🐶

0개의 댓글