프로그래밍 언어

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

프로그래밍 언어컴퓨터 시스템을 구동시키는 소프트웨어를 작성하기 위한 언어이다. 고급 언어일수록 사람이 사용하는 언어에 가깝다.

일반적으로 말할 때에는 프로그래밍 언어를 지원하는 소프트웨어, 곧 소프트웨어를 작성하기 위한 소프트웨어를 가리키는 때가 많고, 이때에는 프로그래밍 언어와 소프트웨어를 구분하지 않고 소프트웨어를 프로그래밍 언어로 보기도 한다.[출처 필요] 예를 들면, 델파이는 프로그래밍 언어인 오브젝트 파스칼을 지원하는 소프트웨어를 작성하기 위한 소프트웨어일 뿐이지만, 델파이를 별개의 프로그래밍 언어로 보는 때가 더 많다.[출처 필요]

역사[편집]

구조[편집]

이 문단의 내용출처가 분명하지 않습니다. 지금 바로 이 문단을 편집하여, 참고하신 문헌이나 신뢰할 수 있는 출처를 주석 등으로 표기해 주세요. 검증되지 않은 내용은 삭제될 수도 있습니다. 내용에 대한 의견이 있으시다면 토론 문서에서 나누어 주세요. (2009년 6월 18일에 문단의 출처가 요청되었습니다.)

컴퓨터 프로그램은 데이터(data)와 명령어(instruction), 이렇게 두 부분으로 나뉜다. 데이터는 일련의 바이트 형식으로 저장된다. 프로그래밍 언어는 이런 바이트들을 유용한 형태로 정리한다. 사용자는 필요에 따라 데이터를 다음과 같이 선언(declaration)할 수 있다.

 int MyData; // 정수형 데이터

이와 같이 선언하면, 컴퓨터 메모리의 한 영역을 'MyData'라는 이름의 정수(integer) 타입으로 저장한다. 메모리의 어느 영역에 데이터를 저장할 것인가는 컴파일러가 결정한다. 일반적으로 사용자는 컴파일러의 내부가 어떻게 동작하는지 몰라도 프로그램을 만들 수 있다. 'MyData'는 간단한 변수(variable)이고, 한 개의 정수만 변수에 담을 수 있다. 여러 개의 변수를 만들고 싶으면 아주 간단하게 배열(array)을 만들 수 있다.

 int MyArray[100]; // 100개의 정수형 변수 선언

소프트웨어 공학의 발달로 보다 복잡한 자료형들이 필요해졌다. 예를 들어, 사각형을 만드는 데 필요한 자료형을 정의한다고 하자. 한 사각형을 정의하려면 너비, 높이, 색과 같은 여러 정보가 동시에 필요하다. 따라서, 위와 같은 변수나 배열의 선언만으로는 이런 정보들을 잘 정의하기가 어렵다. C 언어와 같은 고급 언어(high-level language)는 보다 정교한 자료형의 선언을 지원하여 여러 가지 다른 형식의 데이터 선언들을 한데 엮은 새로운 자료형을 만들 수 있다.

struct rectangle {
  int width;        // 사각형의 너비를 픽셀 단위로 저장
  int height;       // 사각형의 높이를 픽셀 단위로 저장
  color_type color; // 사각형의 색 정보를 저장
};

이러한 데이터들을 활용하기 위해서는 컴퓨터에게 지시를 내려야 한다. 컴퓨터는 현재 실행하고 있는 지시의 내용과 다음에 실행할 지시의 위치만 알고 있다. 컴퓨터 언어는 컴퓨터의 하드웨어를 직접 제어하는 초기의 어셈블리와 같은 언어에서부터 시작하여 현재에는 C 언어와 같은 고급 언어(high-level language)로 발전되어 왔다. 프로그램 언어가 상위 레벨로 발전될수록 프로그램은 좀 더 인간의 언어에 가까운 형태가 된다. 이에 따라 프로그램 언어의 학습과 프로그램의 구현이 보다 수월해진다.

프로그래머는 상위 레벨의 지시문으로 프로그램을 작성하면 컴파일러가 이 지시문을 컴퓨터가 이해할 수 있는 기계어로 번역한다. 지시문들을 한데 묶어 놓은 것들을 함수(function)이라 한다. 함수는 특정한 동작을 일반적인 형태로 정의해 놓은 지시문의 집합이다. 똑같은 동작이 필요하면 지시문을 다시 작성할 필요없이 함수의 매개변수를 이용하여 계속 사용할 수 있다.

예를 들어, C 언어는 검색, 정렬, 입출력에 관련된 다양하고 풍부한 표준 함수(standard functions)들을 제공한다. 이런 표준 함수가 제공되는 덕분에 사용자는 해당 함수를 만드는 데 드는 노력을 절약할 수 있다. 연결된 함수들을 한데 묶어 놓은 것은 모듈(module)이라 하고, 모듈들의 상호 연결로 하나의 프로그램이 구성된다. 그리고 이러한 모듈들을 재사용할 수 있게 모아둔 것을 라이브러리라 한다.

비교[편집]

주요 프로그래밍 언어의 목록[편집]

A언어부터 C언어까지[편집]

C언어의 C는 약간의 의미를 가지고 있다. 이는 프로그래밍 언어의 역사와도 관련이 되어 있다. 통상 A언어부터 B언어, C언어, D언어 순으로 발전해 왔다고 일컬어진다.

  • A언어 : 과거에는 ALGOL을 의미했다. (ALGOL은 Algorithm Language의 약자로, 알고리즘 연구개발을 위해 만들어졌다.) 현재는 특정 프로그래밍 언어를 지칭한다기 보다, 구조화된 프로그래밍 언어를 지칭하는 용어로 이용한다.
  • B언어 : 켄 톰슨(Ken Thompson)이 DEC사의 PDP-7으로 어셈블리어로 유닉스라는 운영 체제를 만들게 되었는데, 이후 이 운영 체제를 고급언어로 다시 만들기 위해 마틴 리차드(Matin Richards)의 BCPL(Basic CPL, CPL = COmbined Programming Language)을 바탕으로 B라는 언어를 만들게 되었다. 이 언어는 자료형이 없었는데, 이는 C언어를 만드는 계기가 되었다.
  • C언어 : 켄 톰슨이 만든 B언어를 보고, 그의 동료였던 데니스 리치가 1972년에 B언어에 데이터 유형 개념을 추가하여 만든 언어이다. 이후 유닉스의 구현언어로 B언어를 제치고 C언어가 채택되면서 이듬해인 1973년에 C언어로 구현된 유닉스가 만들어지게 되었다.

같이 보기[편집]