명령형 프로그래밍
개념
명령형 프로그래밍은 선언형 프로그래밍과 반대되는 개념입니다. 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임인데, 쉽게 설명하자면 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것입니다. 즉 '어떻게' 수행할지에 주목하는 패러다임이라고 할 수 있습니다. 한번 조금만 더 쉽고 대략적으로 이해해보겠습니다.
어떤 리스트 안에 속한 수들의 합을 구할 때, 아래의 방식으로 for 문을 이용해 합을 구할 수 있습니다.
이런 일반적으로 풀어서 쓴 방식을 명령형 프로그래밍이라고 보면 될 것 같습니다.
nums = [1, 2, 3, 4, 5]
sum_nums = 0
for num in nums:
sum_nums += num
거의 대부분의 하드웨어들은 기계어를 실행하도록 설계되어 있는데, 이 기계어가 명령형으로 쓰여있습니다. 즉 일반적으로 어떻게 작업을 수행할지를 풀어서 써놓은 방식이라는 말인데, 기계어는 저급언어에 속하므로 어떻게보면 당연하게 볼 수 있을 것 같습니다.
선언형 프로그래밍
개념
선언형 프로그래밍은 명령형 프로그래밍과 전부 반대라고 생각할 수 있습니다. 바로 '무엇을' 수행할지에 주목하는 패러다임이기 때문입니다. 간단한 예시로 웹 페이지를 구상할 때, '어떤 방법' 으로 보여줄지를 생각하고 코드를 작성하는 것이 아닌 '무엇을' 보여줄지를 생각하고 작성하는데, 이러한 패러다임이라고 볼 수 있겠습니다. 위에서와 같은 예시를 들어 이해해보겠습니다.
어떤 리스트 안에 속한 수들의 합을 구할 때, 일일이 풀어서 for 문으로 더해도 되겠지만, 우리는 내장함수를 많이 이용합니다. 이러한 '어떻게' 합을 구할지를 명령하는 것이 아닌 '무엇을' 구해야 하는지 명령하는 방식이 선언형 프로그래밍이라고 할 수 있겠습니다.
nums = [1, 2, 3, 4, 5]
sum_nums = sum(nums)
내장함수 하나 가져와서 다른 패러다임이라니 비약이 심하다고 할 수 있겠지만 내장함수로 명령을 바꾸며 바뀐점이 있습니다. 바로 추상화에 집중했다는 점입니다. 어떤 방식으로 작동하는지는 알 수 없지만 어떻게 바뀔지는 알고 있다는 점이 바로 선언형 프로그래밍이라고 할 수 있겠습니다.
'Computer Science > Programming Paradigm' 카테고리의 다른 글
절차적 프로그래밍 Vs 함수형 프로그래밍 Vs 객체지향 프로그래밍 (2) | 2023.10.26 |
---|---|
구조적 프로그래밍 Vs 비구조적 프로그래밍 (0) | 2023.10.23 |