[ 2주차 생각 과제 ] 명령형 프로그래밍과 선언형 프로그래밍에 대한 나의 생각 💭 #6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
💎 PR Point
🖤 명령형 프로그래밍과 선언형 프로그래밍이란 ?
명령형
프로그래밍은 무엇을어떻게
할 것인가에 가깝고,선언형
프로그램은무엇을
할 것인가에 가깝다. 두 프로그래밍을 이해하기 위해 유명한 예제를 참고해보았습니다.Red Lobster
나는 회사에서 열심히 일하고 퇴근을 한 뒤 Red Lobster에서 가족과 즐거운 외식을 하기로 결정했습니다. 그리고 Red Lobster에 도착한 뒤 안내 데스크에 다가가서 말합니다.
위의 예시를 보면, 명령형 방식은 실제로 내가 어떻게 자리에 앉을지에 대해 말하고 있다. 따라서 어떻게 자리에 앉을지에 대한 방법을 하나하나 나열한다.
반대로, 선언형 방식은 내가 무엇을 원하는지에 더 집중되어있다. 그렇기 때문에, “그럼 자리에 앉는 방법은 누가 알고있지?”와 같은 질문이 생기곤 한다. 선언형 방식이 제대로 동작하기 위해서는 명령형으로 어떻게가 구현된 것들이 추상화되어 있어야 한다.
🖤 각각의 방식은 어떤 상황/ 유형에 적합할까?
예제를 보면 선언형 프로그래밍으로 구현한 코드는 “어떻게”를 설명하고 있으며, 명시적으로 배열을 반복하거나 원하는 기능을 수행하는 방법에 대해 설명하고 있다.
명령형
프로그래밍으로 구현한 코드는 “무엇
”이 일어나는지를 설명하고 있으며, map()과 reduce() 메소드를 활용하여 명령형 방식을 추상화했다. 명령형을 따르는 언어에는자바
,코틀린
,c++
등이 있다. 명령형 코드는 종종 현재 상태의 컨텍스트에 의존하기 때문에 코드 재사용이 어려운 경우가 많다.선언형
프로그래밍은 프로그램은 해당 코드가달성하고자 하는 것
에 대해서만 나열하기 때문에, 동일한 코드를 다른 코드에서 재사용하기 쉽다. 선언형 프로그래밍 언어에는ABSET
,Lustre
,프롤로그
등이 있다.SQL
역시 선언형 언어이다.우리가 DB를 어떻게 가져오는지는 관심이 없고, 단순히 무엇을 가져오는지에 대해서만 관심을 두고 있다.
결국
map
,reduce
와 같은 기능도 “무엇을”에 초점을 두고 내부 방식은 추상화를 했다고 볼 수 있다.🖤 JavaScript 에서는 어떤 방식을 선택하는 것이 좋을까?
자바스크립트에서는 배열을 필터링하거나 매핑하는 함수를 사용하는 등 선언형 프로그래밍의 스타일을 갖고 있긴 하다. 하지만 대부분은 변수, 조건문, 반복문, 함수 등을 사용하여 명령형 스타일로 프로그램을 작성할 수 있다. 명령형 프로그래밍은 프로그래밍 언어에서 명령문의 순서로 프로그램의 상태를 변경하는 방식으로 동작한다.
딱 잘라서 자바스크립트는
명령형 프로그래밍 언어이다
,선언형 프로그래밍 언어이다
와 같이 단언할 수는 없다. 명령형 및 선언형 프로그래밍 스타일을 모두 지원하기 때문에, 어떤 방식으로 코드를 작성할 지는 프로그램의 목적과 요구사항에 따라 선택해야 한다.