컴퓨터 언어

최근 편집: 2022년 12월 26일 (월) 03:54

컴퓨터 언어(computer language)란 컴퓨터에 명령을 내리기 위해, 즉 컴퓨터와 인간의 상호작용을 목적으로 고안된 인공 언어이다. 목적이나 원칙 등에 따라 상이한 수많은 언어가 존재하며, 자연언어와 유사하게 방언 또는 계보가 존재한다.

프로그래밍 언어의 패러다임

선언형 언어와 절차형 언어

코드를 짜는 코더가 수행해야 할 업무의 성격에 따라 프로그래밍 언어는 서로 다른 방식으로 사용될 수밖에 없다. 예를 들어, 데이터베이스의 자료를 바탕으로 서비스를 제공하는 응용프로그램을 만드는 프로그래머와, 그 데이터베이스의 자료를 저장하고 검색하는 방식을 설계하는 프로그래머가 있다고 하자. 이 두 프로그래머가 맡은 업무는 현저히 다른 성격을 가지고 있어서, 같은 언어를 가지고 작업을 진행하기는 어렵다. 즉, 자료를 요청하는 프로그래머는 어떤 자료를 데이터베이스 서버에 요청할 것인지를 정확하게 파악해야 하고, 자료저장방식을 설계하는 프로그래머는 그 자료를 어디에 어떻게 저장할 것인지를 정확하게 파악해야 한다.

위와 같은 직종 차이뿐만 아니라, 어떤 프로그래밍 언어가 근본적으로 효율적일 것인지에 대한 학술적 의견은 여럿으로 갈린다. 이처럼 서로 다른 주목점을 가지고 프로그래밍 언어를 설계하는 경우, 그 프로그래밍 언어의 기본적인 문장 형태가 달라진다. 이로부터 선언형 언어와 절차형 언어의 차이가 생긴다.

절차형 언어(procedural language)는 어떤 절차를 통해 문제를 해결할 것인지에 주목한다. 예를 들어, 오름차순으로 정렬된 사용자 데이터 목록에서 x보다 큰 값을 갖는 코드가 필요하다고 해보자. 절차형 언어는 이 경우, "차례대로 데이터 목록을 검색해본 후, x보다 크거나 같은 값이 나오면, 목록에서 그 값 다음에 나오는 모든 값을 차례대로 반환한다"와 같은 방식의 코드를 짜서 문제를 해결할 수 있다.

반면 선언형 언어(declarative language)는 문제에서 찾고자 하는 것이 무엇인지를 정확하게 선언하는 것에 주목한다. 위의 예시를 다시 사용한다면, "목록에서 x보다 크거나 같은 값을 반환한다"와 같은 방식의 코드를 짜서 해결할 수 있다.