컴파일 타임과 런타임

황의혁·2023년 3월 10일
0

컴파일 타임이란?

컴파일 타임(Compile Time)은 프로그래밍에서 코드를 컴파일하는 동안에 발생하는 시간을 말합니다. 컴파일 타임은 코드를 실행하는 런타임과 구분됩니다.

컴파일 타임은 코드를 컴파일하고 실행 가능한 파일을 생성하는 데 필요한 모든 작업을 수행하는 시간입니다. 이 작업에는 코드 구문 분석, 구문 트리 생성, 최적화, 코드 생성 등이 포함됩니다. 이러한 작업은 일반적으로 컴파일러에 의해 수행되며, 코드가 런타임에서 실행되기 전에 수행됩니다.

컴파일 타임에 수행되는 작업은 프로그램의 성능과 안정성에 영향을 미칩니다. 최적화 작업을 수행하여 실행 가능한 코드의 크기를 줄이고, 코드 실행 시간을 최적화하여 프로그램의 성능을 향상시킬 수 있습니다. 따라서 프로그래머들은 컴파일 타임을 최대한 줄이기 위해 코드를 최적화하고 효율적으로 작성하려고 노력합니다.

컴파일이란?

컴파일(Compile)은 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해하고 실행할 수 있는 기계어 코드로 변환하는 과정을 말합니다.

컴파일러(Compiler)는 이 과정에서 사용되는 소프트웨어 도구로, 소스 코드를 입력으로 받아 컴퓨터가 이해할 수 있는 목적 코드(Object Code)를 생성합니다. 컴파일러는 일련의 과정을 수행하여 소스 코드를 분석하고, 구문 오류를 검사하며, 목적 코드를 생성합니다.

컴파일러를 사용하면 프로그래머는 고수준 언어(High-level language)로 작성된 소스 코드를 실행 가능한 기계어 코드로 변환할 수 있습니다. 이 과정에서 발생하는 컴파일 에러(Compile Error)는 소스 코드에서 발견된 구문 오류, 오타, 타입 오류 등을 의미하며, 이를 수정하여 소스 코드를 재컴파일할 수 있습니다.

컴파일 과정은 소스 코드의 복잡도와 크기에 따라 다르지만, 일반적으로 컴파일이 완료되면 실행 가능한 파일이나 라이브러리 파일이 생성됩니다. 이 파일을 런타임에서 실행하면 프로그램이 실행됩니다.

컴파일러에는 무엇이 있을까?

C 컴파일러: C언어를 기계어로 변환하는 데 사용되는 컴파일러로 GCC(GNU Compiler Collection)와 Clang이 대표적입니다.

C++ 컴파일러: C++언어를 기계어로 변환하는 데 사용되는 컴파일러로 GCC, Clang, Visual C++ 등이 있습니다.

자바 컴파일러: 자바 언어를 기계어로 변환하는 데 사용되는 컴파일러로 자바 컴파일러(javac)가 있습니다.

파이썬 컴파일러: 파이썬 언어를 바이트코드(Bytecode)로 변환하는 컴파일러로 CPython, Jython, PyPy 등이 있습니다.

자바스크립트 컴파일러: 자바스크립트 언어를 기계어로 변환하는 데 사용되는 컴파일러로 Google Closure Compiler, Babel 등이 있습니다.

고(Go) 컴파일러: 고(Go) 언어를 기계어로 변환하는 데 사용되는 컴파일러로 Go 컴파일러, GCC(Go frontend) 등이 있습니다.

에러들에 대해서 알아보자.

  1. 컴파일 에러(Compile Error)

    문법을 잘못 작성해 프로그램을 컴파일할 수 없는 에러입니다.
    에러 메시지를 통해 에러가 발생한 부분을 확인해 비교적 쉽게 해결할 수 있습니다.

   ';'(세미클론)이 누락된 문법 에러
   괄호가 맞지 않는 구문 에러
   interface 사용 시 함수의 구체적인 내용을 적지 않은 에러
  1. 런타임 에러(Runtime Error)
    프로그래머의 설계 미숙으로 프로그램 실행 중 발생하는 에러입니다.

    에러 발생 시 프로그래머가 역추적해 원인을 확인해야 합니다.

   NullPointerException(생성되지 않은 객체를 참조할 때 발생)

   Infinite Loop(무한 루프)

   ArithmeticException(0으로 나눴을 때 발생)	
profile
기억보단 기록, 반복

0개의 댓글