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