컴파일러
컴파일러는 명령어 번역 프로그램이다.
컴파일러는 소스 코드 혹은 원시 코드를 목적 코드로 옮겨주는 역할을 한다.
쉽게 설명하면 여기서 소스 코드는 사람이 작성한 코드이며,
목적 코드는 기계어(컴퓨터가 이해할 수 있는 언어)라고 생각할 수 있겠다.
물론, 목적 코드가 문서 파일이나, 그림 파일 등이 될 수도 있다.
컴파일러가 왜 필요한가?
우리가 사용하는 C, C++, 파이썬 자바스크립트 등은 "사람이 이해하기 쉬운 형태"의 언어이다.
우리가 열심히 작성한 코드를 사실 컴퓨터는 이해하지 못한다.
여기서 컴파일러는 우리가 작성한 코드를 일정한 규칙을 가지고 컴퓨터가 이해할 수 있도록 바꿔준다.
즉, 우리와 미국인 사이에 국어와 영어를 모두 아는 컴파일러라는 통역사가 의사소통을 돕는 것이다.
이 컴파일러 덕분에 우리는 편안하게 영어(편안한가?)로 코드를 작성할 수 있다.
컴파일 언어?
컴파일 언어, 인터프리터 언어라는 용어를 접해본 적이 있을 것이다.
말 그대로 컴파일 언어는 컴파일러를 사용하겠다는 것이고,
인터프리터 언어는 인터프리터를 사용하겠구나 짐작할 수 있다.
간단한게 인터프리터를 소개하자면,
소스코드를 기계어로 변환하지 않고, 한줄 한줄 해석해서 바로 명령어를 실행하도록 하려는 녀석이다.
명확하게 말하자면, 컴파일 과정이 아예 없는 것은 아니지만 정의는 이러하다.
아무튼 컴파일 언어로 돌아오면 대표적으로 C언어가 있다.
대학에서 교양 수업으로 처음 들었던 프로그래밍 기초 수업에서, Visual Studio + C언어를 사용했었는데
코드를 열심히 작성하고 Run을 하면 이상한 파일들이 마구 생겼던 기억이 있다.
알고보니 이 "이상한 파일"들이 컴파일러로 빌드 과정을 거친 결과물이었다.
여기서 빌드는, 소스코드 파일을 실행파일로 생성하는 과정인데,
즉 고급언어를 변환 과정을 거쳐 기계어로 만들어, 실행파일을 생성하는 과정이다.
컴파일러에 의해 소스코드를 변환하면, 런타임 상황에서는 빠르게 실행을 할 수 있다.
이러한 컴파일 언어에는 C, C++, C#, Java 등이 있다.
이어지는 글
참고한 사이트
https://ko.wikipedia.org/wiki/컴파일러
https://rbqja.tistory.com/14
https://jhkang-tech.tistory.com/136
'CS > compiler' 카테고리의 다른 글
[컴파일러] 토크나이저, 렉서, 파서 (Tokenizer, Lexer, Parser) (3) | 2021.08.01 |
---|