1. 컴파일 정의
컴파일 = 사람이 이해할 수 있는 언어를 컴퓨터가 이해할 수 있는 언어로 바꿔주는 것
우리가 '안녕'이란 문자를 입력해서 상대방한테 보내면
'아, 상대방이 나한테 인사했구나'라고 이해할 수 있다.
하지만 컴퓨터는 '안녕'이란 언어를 모른다.
컴퓨터는 0과 1이란 언어만 아는 아이다.
가령 컴퓨터한테 Hello나 hi나 안녕같은 문자를 입력하면
컴퓨터는 이 사람이 도대체 무슨 소리를 하는 걸까?라고 생각할 것이다.
그러니 안녕을 0과 1로 바꿔줘야 컴퓨터는 안녕을 이해할 수 있다.
그러니까 영국인한테 한국어로 안녕이라고 말하면 이해를 못하니까
안녕 대신 hello로 바꿔서 이야기하는 것처럼
컴퓨터한테도 안녕 대신
001101011
이런식으로 0과 1로 이루어진 코드를 입력해야 컴퓨터는
아 저 사람이 나한테 인사를 했구나라고 이해할 수 있다.(실제로 위의 코드는 안녕을 나타내는 코드가 아닙니다.)
즉 컴퓨터가 쓰느 언어는 사람이 사용하는 언어와 다르다.
컴퓨터는 아이스크림도 0과 1로 변환해줘야 '아이스크림을 입력했구나'하고 이해를 한다.
그러니 컴퓨터로 작업을 할 때 당연히 컴퓨터가 이해할 수 있는 언어인
0과 1을 이용해서 작업을 해야 할 것이다. 그런데 사람은 0과 1만 이용해서
작업을 수행하는 게 쉽지 않다. 예초에 우리가 사용하는 단어, 즉 문장 자체를 모두 다
0과 1로 변환해서 사용해야 한다고 해보자.
가령 '안녕하세요, 저는 부엉이입니다.'를 컴퓨터가 이해할 수 있는 언어로
바꿔서 써야하는 탓에
010101101010101010010111111010101
이런식으로 입력해야 한다면?
많이 힘들 것이다.
그래서 사람들은 사람들이 사용하는 언어를
컴퓨터가 이해할 수 있도록 자동 번역해주는 걸 만들었다.
즉 안녕하세요를 입력하면 이 안녕하세요가 자동으로 컴퓨터가 이해할 수 있는 언어인
0과 1로 변환되는 것이다. 이렇게 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로
변환하는 작업을 컴파일이라고 한다.
쉽게 말하자면 사람과 컴퓨터 사이의 언어를 통역하는 작업이 컴파일이다.
a라는 사람은 영어만 알고, 컴퓨터는 0과 1이란 언어만 안다면
a라는 사람이 영어로 hello를 입력했을 때
이걸 0과 1로 번역해서 컴퓨터한테 전해주는 것을 컴파일이라고 할 수 있다.
2. 바이트코드(바이너리코드)
바이트코드 = 0과 1로 이루어진 코드
0과 1로 바뀐 명령어를 바이트코드 혹은 바이너리 코드라고 한다.
바이너리는 2가지란 뜻이다. 즉 0과 1, 2가지 코드로만 이루어져 있다고 해서 바이너리 코드라고 한다.
위에서
'안녕하세요, 저는 부엉이입니다.'를
010101101010101010010111111010101
이렇게 바꿀 수 있다고 했을 때
010101101010101010010111111010101
위의 0과 1로 이루어진 것들은 즉, 바이트코드라고 할 수 있다.
3. 컴파일러
컴파일, 즉 사람이 이해할 수 있는 언어를
컴퓨터가 이해할 수 있는 언어인 0과 1로 변환하는 작업을 할 수 있도록 해주는 프로그램이 컴파일러다.
컴파일이 통역이었다면 컴파일러는 통역사가 될 것이다.
'BOX-IT > C++' 카테고리의 다른 글
[C++] ‘strcpy’ was not declared in this scope 해결방법 (0) | 2022.04.11 |
---|---|
C언어에서 '100< X <200' 은 잘못된 표현이다. (0) | 2022.04.10 |
[C++] #include <stdio.h>는 뭐고, 왜 쓰는 걸까? (8) | 2022.04.04 |
[C++] Scanf 함수의 정의와 사용 방법 (0) | 2022.03.27 |
C 포인터 개념을 소설로 쉽게 써서 정리한 글 (0) | 2022.03.22 |