저급 언어와 고급 언어란?

 

  • 프로그래밍 언어는 저급 언어와 고급 언어로 나뉘어져 있습니다.




저급 언어( Low-level programming language )

 

  • 0과 1 또는 어셈블리어를 저급 언어( Low-level programming language )라고 합니다.




고급 언어( High-level programming language )

 

  • C/C++, C#, Java, Python, JavaScript, Ruby 등과 같이 사람의 언어와 가까운 언어를 고급 언어( High-level programming language )라고 합니다.




저급 언어와 고급 언어와의 관계

 

  • 컴퓨터는 0과 1만 이해할 수 있습니다. 하지만, 대부분의 개발자들은 0과1이 아닌 C/C++, C#, Java, Python, JavaScript, Ruby 등의 고급 언어로 개발을 합니다.

    그렇기 때문에 고급 언어들은 컴파일 또는 인터프리트를 통해서 저급 언어로 변환하여 컴퓨터에게 작성한 로직을 수행하도록 명령합니다.




컴파일 언어( Compiled language )란?

 

  • 컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어이며 대표적으로 C/C++ 이 있습니다.

    컴파일 언어로 작성된 소스 코드를 저급 언어로 변환하는 과정을 컴파일( Compile )이라고 합니다.

    컴파일 언어는 컴파일 과정에서 개발자가 작성한 소스 코드 전체를 훑어보며 소스 코드에 문법적인 오류는 없는지 확인하며 문법적으로 하나라도 오류가 발견되면은 컴파일에 실패하게 됩니다.




컴파일 방식

 

 

전처리

  • 전처리 단계는 매크로 언어들을 치환하는 단계입니다.

 

컴파일러

  • 고급 언어를 저급 언어인 어셈블리어로 번역됩니다.

 

어셈블러

  • 어셈블리어를 컴퓨터가 이해할 수 있는 0과 1로 구성된 바이너리 코드로 번역됩니다.

 

링커

  • 바이너리 코드로 번역된 각각의 목적 파일들을 링킹 과정으로 거쳐서 하나의 실행 파일로 만듭니다.



인터프리터 언어

 

  • 인터프리터 언어는 인터프리터에 의해 소스 코드가 한 줄씩 저급 언어로 번역되어 실행되는 언어를 말합니다.

    소스 코드를 한 줄씩 번역하여 실행하기 때문에 컴파일 언어처럼 소스 코드 전체를 저급 언어로 변환하는 시간을 기다릴 필요가 없습니다.

    한 줄씩 인터프리터에 의해서 저급 언어로 번역되어 실행되기 때문에 소스 코드에 문제가 있더라도 문제가 있는 소스 코드 라인을 만나기 전까지는 정상적으로 실행됩니다.




컴파일 언어 vs 인터프리터 언어

 

  • 컴파일 언어는 컴파일 과정을 거쳐서 소스 코드 전체를 저급 언어로 번역한 후 실행되기 때문에 인터프리터 언어보다 실행 속도는 빠릅니다. 하지만, 인터프리터 언어는 컴파일 과정을 기다릴 필요 없이 즉시 한 줄씩 번역하면서 실행할 수 있다는 장점이 있기 때문에 어떤 언어가 좋고 나쁘다고는 할 수 없습니다.

    C/C++ 처럼 확실한 컴파일 언어도 있지만 Python, JavaScript 등과 같은 언어들은 인터프리터 언어이면서 컴파일 언어의 속성을 보이기 때문에 명확하게 구분되지 않는 경우도 있습니다.

+ Recent posts