본문 바로가기
컴퓨터구조 & 운영체제

20241230 컴퓨터구조 + 운영체제 4일차

by Kimjoy 2024. 12. 30.
작심삼일도 10번하면 30일이다!!!!


컴퓨터가 이해하는 정보에는 데이터와 명령어가 있다.

숫자는 이진법으로, 문자는 문자집합에 있는 속한 문자를 인코딩하여 0과 1로 표현해 컴퓨터가 이해할 수 있는 정보로 변환한다.

그럼 명령어는 어떻게 만들어질까?
내가(개발자가) 작성한 소스코드는 컴퓨터 내부에서 명령어로 변환된다.

자바나 파이썬, C, C++과 같은 프로그래밍언어는 사람이 이해하고 작성하기 쉽게 만들어진 언어이다.
이런 언어는 고급언어라고 한다.
반대로 기계어나 어셈블리어처럼 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급언어라고 하는데, 저급언어는 명령어로 이루어져 있다.

기계어 0과 1의 명령어 비트로 이루어진 언어이다.
기계어는 오로지 컴퓨터만을 위해 만들어진 언어이기때문에 사람은 이해하기 어렵다.
그래서 등장한 저급언어가 어셈블리어인데, 기계어를 읽기 편한 형태로 변환한 언어이다.
어셈블리어를 읽으면 컴퓨터가 프로그램을 어떤 과정으로 실행하는지, 어떤 절차로 프로그램이 작동하는지를 가장 근본적인 단계에서부터 하나하나 추적하고 관찰할 수 있다.

그럼 다시 고급언어로 돌아와서, 내가 작성한 코드를 컴퓨터가 이해하려면 어떻게 해야할까?
고급언어는 반드시 저급언어(명령어)로 변환되어야 하는데, 변환 방식에는 컴파일 방식과 인터프리트 방식 두 가지가 있다.

컴파일언어

대표적인 컴파일 언어는 C이다.
컴파일 언어로 작성된 소스코드는 소스 코드 전체가 저급언어로 변환되는 과정을 거치는데, 이 과정을 컴파일이라고 한다.
그리고 컴파일을 수행해주는 도구를 컴파일러라고 한다.
컴파일 언어는 컴파일러에 의해 컴파일되어 저급언어로 변환된다.
컴파일러는 개발자가 작성한 소스 코드 전체를 훑어보며 문법적인 오류를 찾거나 실행이 가능한지, 실행하는데 불필요한 코드는 없는지 등을 따지며 처음부터 끝까지 컴파일한다.
컴파일 과정 중에 오류가 하나라도 있으면 컴파일에 실패한다.
컴파일이 성공적으로 수행되면 개발자의 소스 코드는 저급언어로 변환되고,
저급언어로 변환된 코드를 목적코드라고 한다.

인터프리터언어

대표적인 인터프리터 언어는 파이썬이다.
인터프리터 언어는 인터프리터에 의해 소스 코드를 한 줄씩 차례대로 실행하고, 한 줄씩 저급 언어로 변환하여 실행한다.
인터프리트 언어는 소스 코드를 한 줄씩 실행하기 때문에 소스 코드에 문법적인 오류가 나오기 전까지는 올바르게 수행된다.
(그래서 내가 작성했던 파이썬 코드가 실행되다가 오류가 난 거구나!)

컴파일 언어는 컴파일을 통해 나온 목적코드가 컴퓨터가 이해하고 실행할 수 있는 저급 언어인 반면,
인터프리터 언어는 소스코드 마지막에 이를 때까지 한 줄 한 줄씩 저급 언어로 해석하며 실행해야 하기 때문에 컴파일 언어보다 느리다.

프로그래밍 언어 중에는 컴파일방식과 인터프리트 방식 둘다 사용하는 경우도 있기 때문에(예를 들면 파이썬, 자바, 자바스크립트 등)
고급 언어가 저급 언어로 변환되는 대표적인 방법에는 컴파일 방식과 인터프리트 방식이 있다고 이해하면 좋다.