컴퓨터 관련 전공자가 아니더라도, '컴퓨터는 0과 1밖에 모른다'는 말은 들어봤을 것이다. 이것은 컴퓨터가 *자연어(Natural language)가 아닌 **기계어(machine language)만 이해할 수 있기 때문이다.
자음과 모음으로 이루어진 한국어를 쓰는 우리와 달리
0과 1로만 이루어진 기계어를 쓰는 컴퓨터는 우리의 언어를 이해할 수 없는 것이다.
따라서 사람과 컴퓨터가 서로 대화하려면 일종의 통역 수단이 필요한데,
이 통역 수단이 바로 프로그래밍 언어(programming language)다.
프로그래밍 언어는 고급 언어와 저급 언어로 구분된다.
이 때 고급/저급은 '급'이 높고 낮음을 의미하는 게 아니라,
'얼마나 사람이 알아듣기 쉬운가'를 의미한다.
즉 자연어에 가까운 프로그래밍 언어는 고급 언어고 그렇지 않은 프로그래밍 언어는 저급 언어다.
전자에는 C, C++, Java, Python, PHP 등이 있고
후자에는 ***어셈블리어(Assembly language)가 있다.
일반적으로 '프로그래밍 언어'라고 하면 고급 언어를 의미한다.
이 언어로 작성된 내용을 소스(source) 또는 소스 코드(source code)라고 한다.
이 소스는 컴파일러(compiler)에 의해 ****컴파일(compile)되어 컴퓨터가 실행할 수 있게 된다.
*자연어: 일상적으로 쓰이는 언어(한국어, 영어, 일본어, ...)
**기계어: CPU가 직접 해독하고 실행할 수 있는 비트 단위(0과 로 쓰인 컴퓨터 언어.
***어셈블리어: 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어.
컴퓨터 구조에 따라 사용하는 기계어가 달라지므로 기계어에 대응되어 만들어지는
어셈블리어도 각각 다르게 된다.
****컴파일: 고급 언어로 쓰인 내용을 기계어로 바꾸는 작업.