2025-08-09 10:08
Tags:
절차지향 프로그래밍과 함수형 프로그래밍 비교
네, 좋은 질문입니다. 두 용어는 종종 혼용되지만, 명확한 포함 관계가 있습니다.
결론부터 말하자면, 명령형 프로그래밍이 더 넓은 개념이며, 절차 지향 프로그래밍은 명령형 프로그래밍의 한 종류입니다. 모든 절차 지향 프로그래밍은 명령형 프로그래밍이지만, 모든 명령형 프로그래밍이 절차 지향인 것은 아닙니다.
‘탈것’과 ‘자동차’의 관계와 비슷합니다. 모든 자동차는 탈것이지만, 모든 탈것이 자동차는 아닌 것(오토바이, 자전거도 있음)과 같습니다.
명령형 프로그래밍 (Imperative Programming)
-
정의: 프로그램의 상태를 변경시키는 명령어(Commands)들을 순서대로 나열하여 문제를 해결하는 방식 전체를 의미합니다.
-
핵심: “어떻게(How)” 문제를 해결할 것인지, 그 절차와 방법을 코드에 명시적으로 작성하는 데 초점을 맞춥니다.
-
범위: 절차 지향, 객체 지향 프로그래밍을 모두 포함하는 상위 개념입니다. 심지어
GOTO
문을 사용한 초기의 비구조적인 프로그래밍 방식도 명령형에 속합니다.
절차 지향 프로그래밍 (Procedural Programming)
-
정의: 명령형 프로그래밍의 한 종류로, 프로시저(Procedure) 또는 함수(Function)라는 단위로 코드를 구조화하는 방식입니다.
-
핵심: 단순히 명령을 나열하는 것을 넘어, 재사용 가능한 코드 묶음(함수)을 만들고 호출함으로써 프로그램의 흐름을 제어합니다. 핸드북에서 설명한 것처럼, 큰 문제를 작은 함수 단위로 나누어 해결하는 접근 방식이 바로 이것입니다.
-
특징:
GOTO
문의 남발을 피하고, 함수 호출을 통해 코드의 모듈성과 재사용성을 높인, 좀 더 발전된 형태의 명령형 프로그래밍입니다.
결국, 두 패러다임의 가장 큰 차이는 **‘프로시저(함수)를 통한 구조화 여부’**에 있습니다. 절차 지향은 명령형이라는 큰 틀 안에서 ‘함수’라는 도구를 사용해 코드를 더 체계적으로 정리하는 방식이라고 이해하시면 쉽습니다.