명령형 프로그래밍
과 선언형 프로그래밍
은 프로그래밍 패러다임
의 일종입니다. 프로그래밍 패러다임
은 프로그래머에게 주어지는 프로그래밍에 대한 관점입니다. 프로그래머의 관점에 따라서 프로그램을 작성하는 방식이 달라지게됩니다. 흔히 프로그래밍에 입문하면 접하게 되는 객체지향 프로그래밍
이라는 방식도 프로그래밍 패러다임의 일종입니다.
명령형 프로그래밍
은 input data를 받아들여서 가공한 다음 output data를 만들어낸 후 출력하는 구조의 프로그래밍 패러다임입니다. 즉, 문제를 어떻게(how)
해결할 것 인가를 설명해내는 프로그래밍 방식입니다.
회사를 출근 하는 것을 예로들어서 명령형 프로그래밍
형식으로 나타내면 다음과 같습니다.
이처럼 구체적으로 어떻게해서 목적을 달성하기 까지의 과정을 보여주는 것이 명령형 프로그래밍
입니다. 프로그램(코드)이 수행해야하는 작업을 일일히 나열하므로 이해하기 쉽고 익숙한 형식의 프로그래밍이라고 할 수 있습니다.
선언형 프로그래밍
은 명령형 프로그래밍과는 대조되는 패러다임입니다. 목적 달성을 위한 과정보다는 달성 자체에 집중하는 프로그래밍 패러다임입니다. 즉, 문제의 무엇(what)
을 풀어내는지를 집중적으로 고민하는 프로그래밍 방식입니다.
명령형과 같이 출근 과정을 예로들어 선언형 프로그래밍
방식을 나타내면 다음과 같습니다.
정말 간단하죠? 예시처럼 구체적인 과정보다는 해결해야할 문제가 무엇인가에 초점을 맞춥니다. 그리고 문제가 명확해지면 어떤 방법을 사용하든지 간에 문제를 해결하는데 집중합니다. 즉, 명령형 프로그래밍
은 알고리즘을 직접 구상하고 작성하는 것을 중요시했다면, 선언형 프로그래밍
은 라이브러리를 활용하던, 직접 구현하던, 메소드를 사용하던 신경을 쓰지 않고 오직 목적 달성에만 초점을 맞춥니다. 당연한 이야기지만 가장 효율이 좋은 목적 달성 법을 찾는 것이 선언형 프로그래밍
입니다.