리액티브 프로그래밍과 선언형 프로그래밍
오늘은 리액티브 프로그래밍을 공부하던 중에 생겨난 여러가지 궁금증과 해답을 이야기 하고자 한다.
리액티브 프로그래밍은 선언형 프로그래밍을 패러다임으로 가지는 프로그래밍이다.
그렇다면 선언형 프로그램이 무엇을 의미할까? 선언형과 대조되는 개념은 무엇이고 어떠한 차이점이 있는지 알아보도록 하자.
선언형 프로그래밍
선언형은 what의 개념을 가지고 있다.
즉, 무엇을 할 것인가를 중점으로 만들어지는 프로그램이다.
가령, 친구가 나의 집이 어딘지를 물어볼 때 크게 두가지 방법으로 설명해 줄 수 있다.
- 첫째, 내가 현재 서 있는 지점부터 내 집까지 어떻게 가는지 설명한다.
- 둘째, 내 집 주소를 설명한다.
선언형 프로그래밍은 두번째 방법과 같다. 상대방에게 내 집이 어딘지 명확하게 제시하고 일단락 할 수 있다.
따라서, 선언형 프로그래밍 언어의 장점은 가독성이 좋다는 것이다.
빼곡히 적혀있는 아주 구체적인 direction이 한줄짜리 주소 문장 하나로 설명할 수 있다는 것.
그것이 선언형 프로그래밍의 장점이다.
또한, 재사용성을 높이고, 오류가 적으며, 프로그램의 동작을 변경하지 않고 관련 값을 대체할 수 있다.
명령형 프로그래밍
반면, 명령형 프로그래밍은 선언형 프로그래밍보다 전통적인 방식의 프로그래밍이라고 할 수 있다.
좀 더 구체적으로 원하는 결과를 달성해 나가는 과정에 관점을 두는 프로그래밍 스타일이라고 할 수 있다.
즉, "어떻게"할지를 프로그래밍 한 것이 명령형 프로그래밍의 스타일이다.
선언형 프로그래밍의 특징
따라서, 선언형 프로그래밍은 이와 같은 특징을 지니게 된다.
- 결과물에 집중하게 된다.
- 복잡한 과정은 추상화한다.
- 코드를 보고 어떤 일이 발생할지 보다 쉽게 예측이 가능하다. (가독성이 좋다.)
깨닫게 된 것
어떠한 타이밍에 선언형 프로그래밍을 사용해야 하는 것인지 고민이 되었는데, 다시 한 번 정리해보니
가능하다면 선언형으로 프로그래밍을 하는 것이 이득이 많을 수 있겠다고 생각하게 되었다.
Loose Coupling을 지향하는 spring framework의 특성을 고려해 봤을 때 interface로 처리하는 선언형 프로그래밍 방식이 조금 더 이상적이라고 생각하게 되었다.
'개발일지 > Today I Learn' 카테고리의 다른 글
[ 코딩 점검 ] 숫자에 천단위 콤마(쉼표) 찍기 (1) | 2023.07.19 |
---|---|
[ 개발 일지 ] IT 채용 한파와 비전공자 개발자의 준비 (1) | 2023.07.17 |
[ TIL ] JPA에 대한 고민 (0) | 2022.11.28 |
[ TIL ] Spring Data JPA에서 save() 메서드의 쓰임 (0) | 2022.11.22 |
[ TIL ] 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) (0) | 2022.11.22 |