IT

컴파일 언어 & 인터프리터 언어

yeosang0508 2024. 6. 4. 18:09

한정된 메모리, 즉 RAM의 공간 안에서 용량을 초과하지 않고 많은 작업들을 수행하기 위해서는 작업상 다루어야 할 데이터들의 종류에 따라 적절하게 메모리 공간을 할당할 필요가 있다.
언어마다 각 자료형은, 각각의 범주에 포함되는 모든 데이터들을 가장 효율적으로 저장해서 메모리를 절약할 수 있도록 설계되어 있다. 자료형은 데이터를 저장할 때 뿐 아니라 주어진 위치에서 데이터를 읽을 때도 중요하다.

컴파일 언어와 인터프리터 언어

1. 컴파일 언어

코딩을 마치고 나면 프로그래밍 언어로 짠 코드를 컴파일이란 과정을 통해서 다른 형태로 바꾸어 주게 된다. 그 결과물은 기계어일 수 도 있고, 자바의 .class 파일처럼 가상머신용 바이트코드일 수도 있다.
자바스크립트로 컴파일되는 타입스크립트같은 독특한 케이스도 있다.
이 컴파일이란 작업을 거치고 나서 그 결과물을 실행하는 것이 컴파일 언어의 특성이다.

2. 인터프리터 언어

코딩 후 다른 과정을 거치지 않는다. 개발자가 작성한 코드가 그대로 실행할 곳으로 보내져서 인터프리터라는 것을 통해 바로바로 기계어로 통역되어 실행된다.
예외들이 있지만, 보통 컴파일 언어들은 정적타입, 인터프리터 언어는 동적 타입의 자료들을 가지고 있다.
정적 타입이란 자바 코드에서처럼 변수 등에 지정된 자료형을 바꿀 수 없다는 것을 말한다. 반면 동적 타입을 사용하는 언어들에서는 변수에 얼마든 다른 자료형의 값을 넣을 수 있다.

컴파일 언어는 코드를 실행하거나 배포하기 전 즉 개발 과정에서 컴파일이란 과정을 거치기 때문에 코드 중 철자나 문법 상에 문제가 있을 때 그 과정에서 오류를 발생시켜서 잡아낼 수 있다.

변수나 인자의 자료형이 달라지는 경우도 이 과정에서 컴파일 오류로 걸러내버릴 수 있기 때문에 컴파일 언어는 개발자에게 자료형의 일관성을 요구하는 정적 타이핑에 보다 유리하다고 할 수 있다.

컴파일 오류

-> C 계열 언어나 자바, 스위프트, 코틀린 등의 언어들은 코딩을 마치고 사용자에게 배포되기 전에 개발자가 쓰는 프로그래밍 언어로 된 코드를 기계어 등 다른 형태로 바꾸어 주는 것이다. 예를 들면 자바코드의 경우 JVM에서 실행할 수 있는 class 파일로 변환해준다.

실행되기 전 반드시 해야하는 이런 일들을 컴파일이라 한다.

따라서 컴파일 오류라는 것은 문제가 있는 코드가 컴파일하는 과정중에 걸러지는 것