✏️ 컴파일(Compile)?
<aside> 💡 개발자가 프로그램을 위해 작성한 소스코드를 다른 프로그램이나 기계(H/W)가 처리하기 용이한 형태로 바꾸는 과정을 말한다.
</aside>
Java, C, C++, TypeScript 등과 같은 언어들이 컴파일 언어이며 실행(런타임)되기 위해서는 반드시 컴파일 과정을 거쳐야 한다.
반면, JavaScript, Python 같은 언어들은 스크립트 언어(인터프리터 언어)며 이런 언어들은 컴파일 과정 없이 기계어로 번역되는 즉시 동작하도록 되어있다.
따라서 컴파일 과정은 필요하지 않지만 작동시에는 컴파일 언어에 비해 느리다는 단점이 있다.
이런 컴파일을 진행하는 일련의 과정을 “컴파일 타임”이라고 한다.
🔥컴파일 에러
<aside> 💡 컴파일 에러는 프로그램이 컴파일링 되는 과정에서 발생하는 에러로 일반적으로 컴파일 에러 발생 시 컴파일러는 문제를 일으킨 소스코드라인을 지적해준다.
</aside>
✏️런타임(Runtime)?
<aside> 💡 컴파일 과정을 마친 컴퓨터 프로그램이 실행되고 있는 환경 또는 동작되는 동안의 시간을 말한다.
</aside>
JavaScript가 Web Browser에서 실행된다면 런타임 환경은 Web Browser가 되고,
JavaScript가 Node.js에서 동작한다면 런타임 환경은 Node.js가 된다.
🔥런타임 에러
<aside> 💡 소스코드가 이미 실행 가능한 프로그램으로 성공적인 컴파일이 되었더라도 여전히 프로그램의 실행 중에 버그를 일으킬 수 있다. 이렇게 프로그램의 실행중에 발생하는 형태의 오류를 런타임 에러라고 한다.
</aside>