⚠️ 공부한 내용을 정리하는 공간입니다. 설명이 부족하거나 옳바르지 못한 부분이 있을 수 있습니다. 옳바르지 못한 내용을 발견하셨다면 댓글로 알려주시길 부탁드립니다. 수정하도록 하겠습니다.
오늘은 유독 미적거리고 싶은 날입니다.(항상 그런 건 아닙니다..?) 오늘 새벽 5시 30분에 눈이 떠졌거든요 이렇게 해가 뜨지 않은 아직은 어둑한 시간에 눈을 뜨면 정신이 멍해지고 다시 잠들고 싶은 마음이 강해집니다. 하지만 마음을 다잡고 컴퓨터 앞에 앉아 글을 쓰고 있습니다.
지금까지 오늘의 사족은 더보기를 눌러야만 볼 수 있도록 작성하였습니다. 앞으로도 그럴 것입니다. 근데 이쯤에서 저는 정말 궁금해집니다. 누군가 오늘의 사족을 정말 읽고 있긴 한 것인가? 오늘의 사족은 매일 공부 글을 작성하는 저에게 있어 가장 흥미를 가지고 작성하는 코너입니다. 누군가 읽든 아니든 달라지는 것은 없습니다. 다만 정말 궁금할 뿐입니다. 어찌됐든 오늘 하루도 화이팅입니다.
< 목차 >
1. 고급 언어와 저급 언어
1-1. 기계어(Machine Code)와 어셈블리어(Assembly Language)
1-2. Compile과 Interpreter
1. 고급 언어와 저급 언어
고급 언어와 저급 언어는 말 그대로 언어의 급(level)이 높냐(high) 낮냐(low) 그 기준으로 구분되는 언어이다.
언어의 급이 높다는 것은 언어를 사용하는 데 있어 그 수단이 다양할 수록 높다고 생각한다.
예를 들어 한글로 "밥 먹었어?"를 표현할 때 우리는 자음, 모음으로 이루어진 글자를 초성, 중성, 종성의 조합으로 표현한다. 그러나 컴퓨터가 "밥 먹었어?"를 표현하기 위해서는 이를 컴퓨터가 이해하는 0과 1로 이루어진 조합으로 바꿔주는 과정인 Encoding이 필요하다고 이전 글에서 설명했었다.
요약하자면 '사람이 알아 듣는 언어'를 고급 언어라하고 '컴퓨터가 알아 듣는 언어'를 저급 언어라 한다.
1-1. 기계어(Machine Code)와 어셈블리어(Assembly Language)
저급언어는 '컴퓨터가 알아 듣는 언어'라 했다. 그러면 저급언어는 이진수로만 표현된 언어일 것이라는 생각이 든다.
여기서 알아야 할 것이 있다. 이진수로만 표현된 저급언어는 기계어이다.
그렇다는 것은 0과 1로 표현되지 않은 저급언어도 있나?
있다.
저급언어는 기계어와 어셈블리어로 구분된다.
기계어는 0과 1로 이루어진 즉, 이진수로 이루어진 언어이다.
여기서 컴퓨터가 명령어를 실행하도록 하는 개발자 입장에서 컴퓨터가 어떤 명령을 수행하고 있는지 확인할 필요가 있다. 그런데 0과 1로만 이루어진 수의 조합으로는 무슨 명령을 실행하는지 이해하는데 시간이 오래 걸릴 것이다.
무슨 틀린그림찾기하는 것도 아니고 말이다.
당장 다음 사진에서 다른 숫자 하나를 찾아보아라.
⬇ 정답 확인
확실히 이진수로만 표현된 기계어를 이해하는 데 시간이 오래 걸린다. 그래서 이러한 기계어를 개발자가 읽기 편한 형태로 번역한 언어가 어셈블리어이다.
1-2. Compile과 Interpreter
개발자는 프로그램을 개발하는데 있어서 사용하는 프로그래밍 언어는 사람이 이해하는 언어로 이루어진 고급 언어이다.
그러면 프로그램을 컴퓨터가 실행할 때 컴퓨터가 이해하는 언어로 바꾸는 과정이 필요하다. 그 과정을 0과 1로 문자를 표현하는 방법을 설명한 글에서 Encoding이라고 했었다. 그러나 문자가 아닌 프로그래밍 언어를 기계어로 바꾸는 과정은 다르다.
여기서 프로그래밍 언어(컴파일 언어, 인터프리터 언어)인 고급언어를 저급언어로 바꾸는 과정을 Compile 혹은 Interpreter라 한다.
지금부터 두 과정의 차이를 설명해보겠다.
Compile
컴파일 언어는 컴파일 언어로 이루어진 소스코드 전체가 저급 언어로 변환되어 실행되는 고급언어이다. 컴파일러는 소스코드 전체를 저급 언어로 변환하는 과정에서 오류를 하나라도 발견하면 컴파일을 실패한다.
대표적인 컴파일 언어로 C 언어가 있다.
Interpreter
인터프리터 언어는 인터프리터 언어로 이루어진 소스코드를 인터프리터에 의해서 한 줄씩 저급 언어로 변환되어 실행되는 고급언어이다.
인터프리터 언어는 소스 코드를 한 줄씩 실행하기 때문에 오류가 있는 경우 컴파일을 실패하는 컴파일러와 달리 오류가 생기기 전까지는 인터프리터를 실행한다.
대표적인 인터프리터 언어로는 Python이 있다.
'🖥️ Computer Science > Computer Architecture' 카테고리의 다른 글
[Computer Architecture] CPU의 구성요소_ALU, CU, Registers (1) | 2023.12.13 |
---|---|
[Computer Architecture] Instruction Architecture(명령어의 구조)에 대하여 (2) | 2023.12.12 |
[Computer Architecture] 0과 1로 문자 표현하기_ASCII(아스키), EUC-KR, Unicode (2) | 2023.12.10 |
[Computer Architecture] 컴퓨터가 사용하는 언어 이해하기_이진법(Binary), 십육진법(Hexadecimal) (0) | 2023.12.08 |
[Computer Architecture] Computer Architecture(컴퓨터 구조)에 대하여 (9) | 2023.12.06 |