Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

절차적 언어와 비절차적 언어의 차이점 완벽 정리

프로그래밍 언어는 크게 절차적 언어(Procedural Language)비절차적 언어(Non-procedural Language)로 나눌 수 있습니다. 이 글에서는 두 언어 패러다임의 개념과 주요 특징, 그리고 핵심 차이점을 자세히 살펴보겠습니다.

절차적 언어(Procedural Language)란?

절차적 언어는 프로그램 코드를 일련의 명령문 순서로 작성하는 방식의 언어입니다. 사용자가 '무엇을 해야 하는지'뿐만 아니라 '어떻게 해야 하는지', 즉 단계별 절차까지 모두 지정해야 한다는 것이 가장 큰 특징입니다.

주요 특징

  • 명령 중심(command-driven) 언어로 분류됩니다.
  • 기계의 상태(state)를 기반으로 동작합니다.
  • 다른 프로그래밍 패러다임에 비해 의미론(semantics)이 복잡합니다.
  • 작성된 단계들이 순차적으로 실행됩니다.
  • 제한된 데이터 타입과 허용된 값만 반환할 수 있습니다.
  • 전체적인 실행 효율이 높습니다.
  • 특정 문제 또는 문제 집합을 해결하기 위해 명령문을 작성합니다.
  • 반복문(iterative loop)과 재귀 호출(recursive call)을 활용합니다.
  • 시간이 중요한 제약 조건인 애플리케이션에는 적합하지 않습니다.
  • 프로그램 크기가 상대적으로 커지는 경향이 있습니다.

대표적인 절차적 언어

BASIC, FORTRAN, ALGOL, C, COBOL, Pascal 등이 대표적인 절차적 언어입니다.

비절차적 언어(Non-procedural Language)란?

비절차적 언어는 사용자가 '무엇을 해야 하는지'만 지정하면 되고, '어떻게' 처리할지는 신경 쓰지 않아도 되는 언어입니다. 함수형 언어 또는 적용형(applicative) 언어라고도 불리며, 기존 함수들을 조합하여 더 복잡한 기능을 구축하는 방식으로 동작합니다.

주요 특징

  • 함수 중심(function-driven) 언어로 분류됩니다.
  • 수학적 함수를 기반으로 동작합니다.
  • 절차적 언어에 비해 의미론이 단순하고 이해하기 쉽습니다.
  • 모든 데이터 타입이나 값을 자유롭게 반환할 수 있습니다.
  • 절차적 언어에 비해 전체 실행 효율은 낮은 편입니다.
  • 프로그램 크기가 작고 간결합니다.
  • 재귀 호출을 주로 활용합니다.
  • 시간이 중요한 요소인 애플리케이션에 적합합니다.

대표적인 비절차적 언어

LISP, SQL, PROLOG 등이 대표적인 비절차적 언어입니다.

절차적 언어 vs 비절차적 언어 한눈에 비교하기

구분절차적 언어비절차적 언어
접근 방식무엇을 + 어떻게 모두 지정무엇을 할지만 지정
언어 분류명령 중심함수 중심
실행 방식단계별 순차 실행함수 기반 평가
효율성높음상대적으로 낮음
프로그램 크기작음
데이터 반환제한적자유로움
의미론복잡함단순함
대표 언어C, Pascal, FORTRAN, COBOLLISP, SQL, PROLOG

마무리

절차적 언어는 세부 구현 과정까지 직접 제어할 수 있어 실행 효율이 높다는 장점이 있지만, 코드가 길어지고 의미론이 복잡해질 수 있습니다. 반면 비절차적 언어는 원하는 결과만 정의하면 되므로 코드가 간결하고 이해하기 쉽지만, 효율성 면에서는 다소 떨어집니다. 따라서 프로젝트의 성격, 성능 요구 사항, 개발 목적에 따라 적합한 패러다임을 선택하는 것이 중요합니다.