컴파일러란?
컴파일러는 특정 프로그래밍 언어가 정적 언어로서의 정체성을 유지할 수 있게 하는 도구이다.
- 컴파일러는 프로그래밍 언어로 작성된 소스 코드 → 다른 프로그래밍 언어로 변환하는 도구이다
- 이러한 변환 과정에서 컴파일러는 소스 코드의 구문과 구조를 검사하여 문제가 없는지 확인한다.
- 이를 통해 개발자가 작성한 코드에 오류가 있는 경우 미리 알려주어 문제를 해결할 수 있다.
컴파일러 등장 배경
컴퓨터는 기본적으로 기계어로 작성된 프로그램만 이해할 수 있다.
- 그런데, 위의 스크린샷을 보면 아시겠지만 기계어는 사람이 이해하기 어렵다.
- 따라서, C언어와 같은 고수준 프로그래밍 언어가 등장한 것이다.
- C언어로 작성된 코드를 컴퓨터가 이해하려면 기계어로 변환을 해야되었고 컴파일러가 필요하게 되었다.
컴파일러의 근본적인 역할
- 타입 검사를 해준다
- TypeScript 컴파일러는 소스 코드의 정적 타입 검사를 수행한다.
- 이를 통해 개발자는 코드에서 타입 관련 오류를 미리 발견하고 수정할 수 있게 된다
- 컴파일러는 코드 변환도 해준다
- 타입스크립트 컴파일러인 tsc는 TypeScript → JavaScript 코드 변환을 해준다.
- C언어 컴파일러는 C언어 → 기계어 코드 변환을 해준다.
- 컴파일러를 이해하면 변환된 코드가 어떻게 실행되는지 예측할 수 있다.
- 이는 디버깅 과정에서 큰 도움이 된다.
- 에러 메시지 해석할 때 도움을 받을 수 있다.
- 컴파일러는 소스 코드에서 문제가 발견되면 에러 메시지를 출력한다.
- 컴파일러를 이해하면 에러 메시지를 보다 정확하게 해석하고 문제를 신속하게 해결할 수 있다.
- 컴파일러의 끝은 최적화
- 코드가 최적화되면 전반적인 어플리케이션 실행 시간이 더 빨라진다.
- 컴파일러는 이런 것을 자동으로 도와주는 매우 유익한 친구이다.
tsc = TypeScript 컴파일러
위에서는 기계어로 변환되어야 한다고 했는데 JavaScript는 기계어로 변환될 필요가 없나?
- 그렇다. 기계어로 변환될 필요가 없다.
- 왜냐하면, JavaScript는 동적 언어**(=인터프리터 언어)**이기 때문
- Node.js나 Chrome → JavaScript를 실행할 때는 V8 엔진이 코드 해석 및 실행을 하고
- Firefox → JavaScript를 실행할 때는 SpiderMonkey가 코드 해석 및 실행을 하나.
- 정리하자면
- 정적 언어(=컴파일 언어) → 기계어로 변환이 되어야 한다.
- 동적 언어(=인터프리터 언어) → 엔진이 코드를 한 줄씩 실행하면서 동적으로 해석한다.
'웹개발' 카테고리의 다른 글
서버사이드 렌더링 vs 클라이언트 사이드 렌더링 (0) | 2024.03.08 |
---|---|
[웹개발] 비동기 통신 - axios, fetch (0) | 2024.02.21 |
[웹개발] 웹통신, HTTP란? (0) | 2024.02.20 |