본문 바로가기
언어(C, C++, C#)

[언어] 컴파일 언어, 인터프리터 언어, 하이브리드 언어

by 적용1 2024. 12. 7.
728x90

컴파일 언어

코드 실행 과정

  1. 소스 코드를 컴파일러가 읽어 전체를 기계어로 번역해 실행 파일을 생성한다.
  2. 실행 파일을 독립적으로 실행한다.(컴퓨터가 직접 실행할 수 있다.)

장점

  1. 빠른 실행 속도(성능) : 실행 파일이 이미 기계어로 번역되어 있어 실행 시 번역이 필요없다.
  2. 에러 검출 : 컴파일 과정에서 문법적 오류를 사전에 모두 검출해준다.
  3. 자원 관리 : 메모리 관리 및 시스템 자원 사용이 효율적이다.
  4. 보안 : 컴파일된 코드는 기계어이기 때문에 사람이 이해하기 어려워 보안과 안정성이 높다.

단점

  1. 개발 속도 : OS 별로 컴파일 과정이 필요하기 때문에 개발 주기가 길어질 수 있다. 또, 수정 시에 재컴파일이 필요하다.
  2. 플랫폼 종속성 : 특정 운영 체제나 하드웨어 환경에 맞게 컴파일된 실행 파일은 다른 환경에서 동작하지 않는다.
  3. 유연성 및 확장성 : 고정된 구조와 강한 타입 체계로 인해 상대적으로 유연성이 낮다.

예시 언어

  • C, C++, Rust, Swift 등

인터프리터 언어

코드 실행 과정

소스 코드를 한 줄씩 실행 시점에 해석(interpret)하고 즉시 실행한다.

장점

  1. 개발 속도 : 실시간으로 코드 테스트와 수정이 가능하여 개발 속도가 빠르다.
  2. 플랫폼 독립성 : 다양한 운영체제에서 쉽게 실행할 수 있다.
  3. 유연성 및 확장성 : 실행 중 코드 수정이나 추가가 가능하는 등, 유연하고 동적인 코드 작성이 가능하여 확장성이 높다.

단점

  1. 성능 : 인터프리터 언어는 실행 시간에 해석이 이루어지므로 상대적으로 성능이 낮다.
  2. 자원 관리 : 높은 메모리 사용량과 CPU 사용량을 요구할 수 있다.
  3. 보안 : 소스 코드가 공개되기 때문에 상대적으로 보안이 취약할 수 있다.
  4. 런타임 에러 가능성 : 실행 도중 오류를 발견하므로 안정성이 낮다.

예시 언어

  • Python, JavaScript, Ruby, PHP, Pearl 등

하이브리드 언어

코드 실행 과정

  1. 소스 코드를 중간 언어(Intermediate Language) 또는 바이트 코드로 변환한다.
  2. 실행 시점에 중간 언어 또는 바이트 코드를 해석하거나 기계어로 변환한다.(JIT 컴파일)

특징

  1. 성능 : 중간 번역이 되므로 인터프리터 보다 성능이 높지만, 일반적인 컴파일 언어와 비교하면 성능이 낮을 수 있다.(하이브리드 언어의 성능은 구현과 사용 상황에 따라 다를 수 있다.)
  2. 개발 속도 : 인터프리터 언어의 신속한 테스트와 디버깅 이점을 제공하면서, 컴파일 언어의 효율성도 활용한다.
  3. 플랫폼 독립성 : 중간 언어는 플랫폼과 무관하며, 런타임 환경에서 기계어로 변환되므로 여러 플랫폼에서 실행할 수 있다.
  4. 자원 관리 : 컴파일 언어의 효율적인 자원 관리와 인터프리터 언어의 유연한 메모리 관리를 조합하여 향상된 자원 관리를 제공한다.
  5. 보안 : 중간 코드까지 번역되므로, 일정 수준의 보안을 제공한다.
  6. 유연성 및 확장성 : 인터프리터 언어의 유연성과 컴파일 언어의 엄격한 구조를 결합하여 확장 가능하고, 적응력 있는 프로그래밍 환경을 제공한다.
  7. 실행 환경 : 런타임 환경(가상 머신 등)이 필요하다.

예시 언어

  • C#, Java, Kotlin, PyPy 등
728x90