본문 바로가기
CS/Computer Basic

[CS/Basic] 절차적 프로그래밍은 '절차지향'이 아니다!

by iosdevlime 2023. 1. 5.

앞선 포스팅에서 '객체'에 대한 개념에 대해 짚고 넘어갔으니..

 

이후 명령형 프로그래밍 패러다임 범주에 포함된 

  • 절차적 프로그래밍(Procedural Programming, PP)
  • 객체지향 프로그래밍(Object-Oriented Programming, OOP)

위 2가지 프로그래밍 방식 중,

 

시대에 따른 패러다임 흐름(변화)을 살펴보기 위해 

절차적 프로그래밍(Procedural Programming)을 선행하여 알아보도록 하겠습니다.

 

 

 


 

 

 

 

왜 '절차지향' 프로그래밍이 아닌, '절차적' 일까?

'절차적(Procedural)' 프로그래밍프로시저(함수)를 활용한 프로그래밍 개념이다

 

절차적 프로그래밍의 영문 표기는

Procedural Programming 인데...

 

이를 한국어로 번역하게 될 경우 '절차' 혹은 '절차적' 이 됩니다. 

 

따라서, 절차적 프로그래밍 패러다임을

"아! 순차적으로 처리하는 프로그래밍 방식이구나" 라고 해석할 수 있습니다.

 

하지만, 이는 명백한 오류입니다.

 

 

 

순차적 vs 절차적 프로그래밍

  • '순차적'으로 처리되는 방식을 뜻하는 순차적 프로그래밍 또한 존재합니다.    
    • 프로그래밍 패러다임에서 가장 처음 등장한 패러다임입니다.
    • 말 그대로, 순차적으로 위에서 아래로 흘러가는 프로그래밍 구조입니다.
  • 절차적 프로그래밍에서의 '절차'는, '프로시저'를 이용한다는 의미입니다. 
    • 프로시저란, 특정 행동 혹은 목표를 수행하기 위한 일련의 작업이자 순서입니다.
    • 최종 기능(목표)를 달성하기 위해, 작은 규모의 함수(function)를 활용합니다.
  • 따라서, '절차지향'이 아닌, '절차적'(혹은 프로시저) 프로그래밍이 정확한 명칭입니다.

 

순차적 프로그래밍과 절차적 프로그래밍 비교
순차적 프로그래밍과 절차적 프로그래밍 비교

 

 

 

 


 

 

 

 

절차적 프로그래밍의 특징

프로시저(함수)를 호출함으로서, 추상화와 코드의 재 사용성을 목표로 하는 패러다임

 

앞서 살펴본 내용을 정리하자면,

 

절차적 프로그래밍은 아래 2가지 패러다임 특징 및 프로세스를 가지고 있습니다.

  • 특정 기능을 담당하는 프로시저(함수)를 생성
  • 이를 활용해 순차적으로 일련의 작업을 진행

 

그렇다면, 프로시저(함수)를 활용한 절차적 프로그래밍은

어떤 특징(장단점)을 가지고 있을까요?

 

 

 

주요 특징

  • 큰 기능(목표)을 처리하기 위해, 작은 단위의 기능(프로시저,함수)을 구조화 합니다. 
    • 반복하여 활용될 가능성이 있는 기능(프로시저, 함수)을 묶어 구조화 합니다.
    • 이는, 특정 기능을 재 활용할 수 있다는 장점이 있습니다.
  • 프로그램의 흐름을 쉽게 이해할 수 있으므로, 코드의 가독성이 높아집니다.
    • 담당하는 기능만 호출하여 결과를 확인할 수 있으므로, 매우 직관적입니다.
    • 다만, 기능을 수행하기 위해선 해당 프로시저를 직접 호출해야 합니다.

 

한계점

  • 기능(프로시저)를 만드는 '구조화' 과정에서 시간이 다소 소요됩니다.
    • 기능을 구현하기 위한 함수를 만들고, 인자를 전달하는 등 과정이 복잡합니다.
  • 순차적으로 입력하는 것은 필수이므로, 의도하지 않은 오류가 생길 가능성이 높습니다.
    • 절차적 프로그래밍 또한 순차적인 단계에 따라 실행되는 구조입니다.
    • 순서가 바뀌거나, 코드 상 오류가 있을 경우 큰 문제가 발생될 수 있습니다.

 

 

예시) 자판기에서 음료수를 구입하려는 사람

  • 자판기에서 음료를 구입하는 과정을 예제로 살펴보도록 하겠습니다.
    • 모든 기능(프로시저)는 Global Data(데이터)를 중심으로 구현됩니다.
    • 순서, 기능 측면에 오류가 생길 경우, 올바르지 않은 결과가 도출됩니다.

순서, 기능에 따른 올바른 프로시저(Procedural)의 순차적 과정과 오류
순서, 기능에 따른 올바른 프로시저(Procedural)의 순차적 과정과 오류

 

 

 


 

명령형 프로그래밍 패러다임 중,

절차적 프로그래밍에 대한 개념과 특징에 대해 살펴보았습니다.

 

 

다음 포스팅에서는 

 

절차적 프로그래밍의 한계를 보완하기 위해 등장한

'객체지향 프로그래밍'에 대해 자세히 다뤄보도록 하겠습니다.  

댓글