1-1-다.언어

컴퓨터에게 일을 시키려면 컴퓨터와 사람간의 의사소통 도구가 필요하다. 사람이 무엇을 원한다는 것을 어떤 형태로든지 컴퓨터에게 알려 주어야 하는데 이것이 바로 프로그래밍 언어이다. 사람끼리의 대화에도 언어가 필요한 것처럼 컴퓨터와 사람 사이에도 명령을 전달하고 결과를 보고받을 수 있는 언어가 필요하다. 프로그래밍 언어도 의사 소통을 위한 도구라는 면에서 언어의 사전적 정의와 일치하되 다만 대화상대가 사람이 아니라 기계라는 점만 다를 뿐이다.

컴퓨터는 사람이 사용하는 자연어를 이해하지 못한다. 계산하라, 출력하라와 같은 말로 된 명령은 컴퓨터라는 단순한 기계에게는 너무 어렵고 때로는 모호하기도 해서 해석할 수가 없다. 컴퓨터는 수많은 스위치들로 구성되어 있으며 스위치에 전기가 통하는가 그렇지 않은가의 두 가지 상태밖에 구분하지 못한다. 전기의 흐름, 차단 상태를 숫자로 표기하면 이진수가 되는데 이진수는 컴퓨터가 이해하는 유일한 언어이다.

그래서 컴퓨터가 어떤 연산을 하도록 하려면 이진수로 된 기계어 명령을 전달해야만 한다. 실제로 초창기의 프로그래머들은 컴퓨터에 붙어있는 스위치를 올렸다 내렸다 하면서 이진수로 된 기계어 코드를 작성해야만 했다. 그러나 1과 0으로만 구성되어 있는 이진수는 도저히 인간의 생리와는 맞지 않은 언어이다. 그래서 좀 더 쓰기 쉬운 자연어와 유사한 프로그래밍 언어를 만들게 되었다.

프로그래머는 기계어 코드를 모르더라도 언어의 문법과 형식에 맞게 명령을 작성하면 된다. 이 명령은 컴파일러라고 부르는 중간의 번역 프로그램에 의해 기계어로 변환되며 컴퓨터는 이렇게 변환된 기계어를 실행하는 것이다.

그동안 셀 수 없을 정도로 많은 프로그래밍 언어가 개발되었다. 포트란으로부터 시작하여 코볼, 베이직, 알골 등을 거쳐 C, 파스칼과 최근의 자바, C#까지 헤아릴 수 없이 많은 종류가 있다. 자연어에도 한국어, 영어, 불어, 중국어 등의 각종 언어들이 있듯이 말이다. 각 언어들은 나름대로의 장점과 단점을 가지는데 프로그래머는 이 중 자신의 목적에 맞는 언어를 선택해야 한다. 프로그래밍 언어는 여러 가지 방법으로 분류할 수 있지만 인간과 얼마나 가까운가에 따라 수준(Level)을 분류한다.

 

저급 언어(Low Level) : 기계의 언어에 가까우며 사용하기는 어렵지만 성능은 좋다. 대표적으로 어셈블리가 있다.

고급 언어(High Level) : 인간의 언어에 가까우며 배우기 쉽지만 대신 성능은 떨어진다. 베이직 언어가 대표적인 고급 언어이다.

 

저급이라고 해서 성능이나 효율이 떨어진다는 뜻은 아니며 고급이라고 해서 모든 것이 좋다는 뜻도 아니다. 이 분류 방법은 다만 인간의 입장에서 볼 때 얼마나 배우기 쉽고 쓰기 쉬운가를 기준으로 할 뿐이다. 이 책에서 다루는C/C++언어는 분류상 고급 언어에 속한다. 그러나 섬세한 하드웨어 제어가 가능하기 때문에 중급 언어로 분류하기도 한다.