고급언어 : 프로그래밍 언어는 사람이 이해하고 작성하기 쉽게 만들어진 언어
저급 언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어
컴퓨터가 이해하고 실행할 수 있는 언어는 저급 언어뿐이고 고급 언어로 작성된 소스코드가 실행되려면
반드시 저급 언어(명령어)로 변환되어야 합니다.
기계어
CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 통틀어 일컫습니다.
0, 1의 명령어 비트로 이루어진 언어입니다.
컴퓨터는 0, 1과 이루어진 이 기계어를 이해하고 실행하고 십육진 수로 표현하기도 합니다.
어셈블리어
0, 1로 표현된 명령어(기계어)를 읽기 편한 형태로 번역한 언어입니다.
0, 1로 이루어진 기계어를 읽기 편하게 만든 저급 언어일 뿐 개발자가 어셈블리어를 이용해
복잡한 프로그램을 만들기 어렵습니다.
어셈블리어를 작성, 관찰할 일이 거의 없는 개발자도 있지만 임베디드 개발자, 게임 개발자, 정보보안 분야 등의 개발직군은 어셈블리어를 많이 사용합니다.
개발자들에게 어셈블리어란 '작성의 대상, 관찰의 대상'입니다.
어셈블리어를 읽으면 프로그램이 어떤 절차로 작동하는지를 가장 근본적인 단계에서부터 하나하나 추적하고
관찰할 수 있기 때문입니다.
컴파일 언어
컴파일 방식으로 작동하는 프로그래밍 언어
컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어입니다.
대표적인 언어로 C언어가 있습니다.
컴파일 언어로 작성된 소스 코드는 코드 전체가 저급 언어로 변환되는 과정을 거치고 이과정을 컴파일이라 합니다.
컴파일을 수행해 주는 도구를 컴파일러라 합니다.
컴파일러가 소스 코드 내에서 오류를 발견하는 경우 해당 소스 코드는 컴파일에 실패합니다.
컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드라 합니다.
인터프리터 언어
인터프리트 방식으로 장동하는 프로그래밍 언어
소스 코드가 한 줄씩 실행되는 고급언어입니다.
소스 코드를 한 줄씩 저급 언어로 변환되어 실행해 주는 도구를 인터프리터 라 하고
인터프리터 언어는 컴퓨터와 대화하듯 소스 코드를 한 줄씩 실행하여 소스 코드 전체를 저급 언어로 변환하는
시간을 기다릴 필요가 없습니다.
소스 코드를 한 줄씩 실행하여 오류 소스 코드 전까지 올바르게 실행됩니다.
일반적으로 인터프리터 언어는 컴파일 언어보다 느립니다.
느린 이유로 목적 코드는 컴퓨터가 이해 가고 실행할 수 있는 저급 언어인 반면 인터 피리터 언어는 소스 코드 마지막에 이를 때까지 한 줄씩 저급 언어로 해석하며 실행하기 때문입니다.
컴파일 언어, 인터프리터 언어 구분 가능
결론으로 현대의 많은 프로그래밍 언어 중에는 컴파일 언어, 인터프리터 언어 간의 경계가 모호한 경우가 많습니다.
컴파일 언어로 인터프리트로., 반대의 경우에도 불가능하지 않습니다.
구분하기보단 '고급 언어가 저급 언어로 변환되는 대표적인 방법에는 컴파일 방식과 인터프리트 방식이 있다'
정도로 이해하면 좋습니다.
목적 파일 : 목적 코드로 일어진 파일
링킹 : 목적 코드가 실행 파일 되기 위한 작업