컴퓨터는 C, C++, Java, Python과 같은 프로그래밍 언어를 이해할 수 있을까요?
아닙니다!
우리가 짜는 프로그래밍은 컴퓨터가 이해하지 못하는 고급 언어
입니다. 우리가 보기 쉽게 만들어져있죠!
반대로 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급 언어
라고 합니다.
그래서고급 언어
로 작성된 소스 코드가 실행되려면 반드시저급 언어
,
즉명령어
로 변환되어야 합니다.
0과 1로 이루어진 언어입니다.
약간 이런 식이에요!
근데 이렇게 0과 1로 이루어진 이진수로만 나열하면 너무 길어지기 때문에 십육진수로 표현하기도 합니다.
근데 위와 같은 기계어들은 오로지 컴퓨터만을 위해 만들어진 언어라서 사람이 알아볼 수가 없죠. 그래서 어셈블리어
라는 저급 언어가 등장했습니다.
0과 1로 표현된 기계어를 읽기 편한 형태로 번역한 언어가
어셈블리어
입니다!
이런 어셈블리어
는 하드웨어와 밀접하게 맞닿아 있는 프로그램을 개발하는 임베디드 개발자, 게임 개발자, 정보 보안분야등의 개발자들에게 중요합니다.
이러한 어셈블리어
를 한 줄 한 줄 읽으면 컴퓨터가 프로그램을 어떤 과정을 거쳐 실행하는지 관찰할 수 있는 장점이 있습니다.
아까 개발자들이 고급 언어로 작성한 소스 코드는 결국 저급 언어로 변환되어 실행되어 실행된다고 했는데, 어떻게 변환이 될까요?
크게 두 가지, 컴파일 방식과 인터프리트 방식이 있습니다.
이 때 컴파일 방식으로 작동하는 프로그래밍 언어를
컴파일 언어
인터프리트 방식으로 작동하는 프로그래밍 언어를인터프리터 언어
라고 합니다.
소스 코드 전체가 저급 언어로 변환되는 과정을 컴파일
이라고 하고 이 컴파일
을 수행해 주는 도구를 컴파일러
라고 합니다.
컴파일 언어는
컴파일러
에 의해 소스 코드 전체가저급 언어
로 변환되어 실행되는고급 언어
입니다.
컴파일러
는 소스 코드 전체를 쭉~ 훑어보면서 문법적 오류는 없는지, 실행 가능한 건지, 실행하는 데 불필요한 코드는 없는지 등을 보면서 소스 코드를 처음부터 끝까지 저급 언어
로 컴파일합니다.
이렇게 저급 언어
로 변환된 코드를 목적 코드(object code)
라고 합니다.
인터프리터 언어
는인터프리터
에 의해 소스 코드가 한 줄씩 실행되는고급 언어
입니다.
대표적으로 Python이 있습니다.
소스 코드 전체가 저급언어로 변환되는 컴파일 언어
와 달리, 인터프리터 언어
는 소스코드를 한 줄씩 차례로 실행합니다. 그리고 이 한 줄 한 줄을 저급언어로 변환하여 실행해 주는 도구를 인터프리터
라고 합니다.
컴파일 방식
은 영어를 모르는 친구(컴퓨터)에게 영어책 전체(소스 코드)를 컴파일러가 한국어로 번역한 뒤 번역한 책(목적코드)을 주는 방식이고인터프리터 방식
은 마찬가지로 영어를 모르는 친구에게 영어책 전체를 옆에서 한 줄씩 한국어로 설명해주는 느낌입니다.