고급언어와 저급언어 [컴퓨터 구조]

이름이름·2023년 7월 30일
0

컴퓨터 구조

목록 보기
2/6

고급언어와 저급언어

컴퓨터는 C, C++, Java, Python과 같은 프로그래밍 언어를 이해할 수 있을까요?

아닙니다!

우리가 짜는 프로그래밍은 컴퓨터가 이해하지 못하는 고급 언어입니다. 우리가 보기 쉽게 만들어져있죠!
반대로 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급 언어라고 합니다.


그래서 고급 언어로 작성된 소스 코드가 실행되려면 반드시 저급 언어,
명령어로 변환되어야 합니다.

저급언어의 종류

기계어

0과 1로 이루어진 언어입니다.


약간 이런 식이에요!
근데 이렇게 0과 1로 이루어진 이진수로만 나열하면 너무 길어지기 때문에 십육진수로 표현하기도 합니다.

어셈블리어

근데 위와 같은 기계어들은 오로지 컴퓨터만을 위해 만들어진 언어라서 사람이 알아볼 수가 없죠. 그래서 어셈블리어라는 저급 언어가 등장했습니다.

0과 1로 표현된 기계어를 읽기 편한 형태로 번역한 언어가 어셈블리어입니다!

이런 어셈블리어는 하드웨어와 밀접하게 맞닿아 있는 프로그램을 개발하는 임베디드 개발자, 게임 개발자, 정보 보안분야등의 개발자들에게 중요합니다.
이러한 어셈블리어를 한 줄 한 줄 읽으면 컴퓨터가 프로그램을 어떤 과정을 거쳐 실행하는지 관찰할 수 있는 장점이 있습니다.

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

아까 개발자들이 고급 언어로 작성한 소스 코드는 결국 저급 언어로 변환되어 실행되어 실행된다고 했는데, 어떻게 변환이 될까요?
크게 두 가지, 컴파일 방식과 인터프리트 방식이 있습니다.

이 때 컴파일 방식으로 작동하는 프로그래밍 언어를 컴파일 언어
인터프리트 방식으로 작동하는 프로그래밍 언어를 인터프리터 언어라고 합니다.

컴파일 언어

소스 코드 전체가 저급 언어로 변환되는 과정을 컴파일이라고 하고 이 컴파일을 수행해 주는 도구를 컴파일러라고 합니다.

컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어입니다.

컴파일러는 소스 코드 전체를 쭉~ 훑어보면서 문법적 오류는 없는지, 실행 가능한 건지, 실행하는 데 불필요한 코드는 없는지 등을 보면서 소스 코드를 처음부터 끝까지 저급 언어로 컴파일합니다.
이렇게 저급 언어로 변환된 코드를 목적 코드(object code)라고 합니다.

인터프리터 언어

인터프리터 언어인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어입니다.
대표적으로 Python이 있습니다.

소스 코드 전체가 저급언어로 변환되는 컴파일 언어와 달리, 인터프리터 언어는 소스코드를 한 줄씩 차례로 실행합니다. 그리고 이 한 줄 한 줄을 저급언어로 변환하여 실행해 주는 도구를 인터프리터라고 합니다.

차이점

  • 컴파일 언어가 더 빠릅니다
  • 약간 비유를 해보자면
  • 컴파일 방식은 영어를 모르는 친구(컴퓨터)에게 영어책 전체(소스 코드)를 컴파일러가 한국어로 번역한 뒤 번역한 책(목적코드)을 주는 방식이고
  • 인터프리터 방식은 마찬가지로 영어를 모르는 친구에게 영어책 전체를 옆에서 한 줄씩 한국어로 설명해주는 느낌입니다.
    (소스코드는 사람들이 작성한 코드를 의미합니다)
profile
공부 정리

0개의 댓글