선언형 언어의 정의
선언형 언어(Declarative Language)는 계산의 논리를 표현하면서도 그 제어 흐름(control flow)은 직접 기술하지 않는 프로그래밍 언어를 말합니다.
쉽게 설명하면, 선언형 언어는 컴퓨터에게 '무엇을(what)' 해야 하는지만 알려줄 뿐, '어떻게(how)' 수행해야 하는지는 지시하지 않습니다. 개발자가 원하는 결과(result)를 선언하면, 실행 방법은 언어 처리 시스템이나 런타임이 알아서 결정하는 방식입니다.
선언형 언어 vs 명령형 언어
선언형 언어와 가장 자주 비교되는 것은 명령형 언어(Imperative Language)입니다. 명령형 언어는 컴퓨터가 연산을 수행하기 위해 거쳐야 할 구체적인 절차와 단계를 순서대로 나열합니다.
예를 들어 명령형 언어에서는 반복문과 조건문 등으로 단계별 작업을 일일이 작성해야 하지만, 선언형 언어에서는 원하는 결과의 조건만 정의하면 되므로 코드가 간결하고 의도가 명확해집니다.
선언형 언어의 활용 분야
선언형 언어는 다음과 같은 분야에서 특히 유용하게 사용됩니다.
1. 데이터베이스 질의: 데이터베이스에서 원하는 데이터를 조회할 때, 검색 조건만 선언하면 내부적으로 최적화된 방식으로 데이터를 가져옵니다.
2. 인공지능 및 논리 추론: 규칙과 사실을 선언하면 시스템이 이를 바탕으로 추론을 수행합니다.
선언형 언어를 사용하면 프로그래머가 문제 해결 과정의 세부적인 구현 방법을 고민하지 않고, 해결해야 할 문제 자체에 집중할 수 있다는 큰 장점이 있습니다. 이 덕분에 코드의 가독성이 높아지고 유지보수도 쉬워집니다.
대표적인 선언형 언어 예시
대표적인 선언형 언어에는 다음과 같은 것들이 있습니다.
SQL: 관계형 데이터베이스에서 데이터를 정의하고 질의하는 데 사용되는 표준 언어입니다.
Prolog: 논리 프로그래밍 기반의 언어로, 인공지능 연구와 전문가 시스템에 널리 활용됩니다.
Haskell: 함수형 프로그래밍 패러다임을 따르는 대표적인 언어로, 순수 함수와 불변성을 강조합니다.
이 외에도 HTML, CSS처럼 결과물을 '기술'하는 방식의 언어들도 넓은 의미에서 선언형에 속한다고 볼 수 있습니다.