728x90
컴파일 언어
코드 실행 과정
- 소스 코드를 컴파일러가 읽어 전체를 기계어로 번역해 실행 파일을 생성한다.
- 실행 파일을 독립적으로 실행한다.(컴퓨터가 직접 실행할 수 있다.)
장점
- 빠른 실행 속도(성능) : 실행 파일이 이미 기계어로 번역되어 있어 실행 시 번역이 필요없다.
- 에러 검출 : 컴파일 과정에서 문법적 오류를 사전에 모두 검출해준다.
- 자원 관리 : 메모리 관리 및 시스템 자원 사용이 효율적이다.
- 보안 : 컴파일된 코드는 기계어이기 때문에 사람이 이해하기 어려워 보안과 안정성이 높다.
단점
- 개발 속도 : OS 별로 컴파일 과정이 필요하기 때문에 개발 주기가 길어질 수 있다. 또, 수정 시에 재컴파일이 필요하다.
- 플랫폼 종속성 : 특정 운영 체제나 하드웨어 환경에 맞게 컴파일된 실행 파일은 다른 환경에서 동작하지 않는다.
- 유연성 및 확장성 : 고정된 구조와 강한 타입 체계로 인해 상대적으로 유연성이 낮다.
예시 언어
- C, C++, Rust, Swift 등
인터프리터 언어
코드 실행 과정
소스 코드를 한 줄씩 실행 시점에 해석(interpret)하고 즉시 실행한다.
장점
- 개발 속도 : 실시간으로 코드 테스트와 수정이 가능하여 개발 속도가 빠르다.
- 플랫폼 독립성 : 다양한 운영체제에서 쉽게 실행할 수 있다.
- 유연성 및 확장성 : 실행 중 코드 수정이나 추가가 가능하는 등, 유연하고 동적인 코드 작성이 가능하여 확장성이 높다.
단점
- 성능 : 인터프리터 언어는 실행 시간에 해석이 이루어지므로 상대적으로 성능이 낮다.
- 자원 관리 : 높은 메모리 사용량과 CPU 사용량을 요구할 수 있다.
- 보안 : 소스 코드가 공개되기 때문에 상대적으로 보안이 취약할 수 있다.
- 런타임 에러 가능성 : 실행 도중 오류를 발견하므로 안정성이 낮다.
예시 언어
- Python, JavaScript, Ruby, PHP, Pearl 등
하이브리드 언어
코드 실행 과정
- 소스 코드를 중간 언어(Intermediate Language) 또는 바이트 코드로 변환한다.
- 실행 시점에 중간 언어 또는 바이트 코드를 해석하거나 기계어로 변환한다.(JIT 컴파일)
특징
- 성능 : 중간 번역이 되므로 인터프리터 보다 성능이 높지만, 일반적인 컴파일 언어와 비교하면 성능이 낮을 수 있다.(하이브리드 언어의 성능은 구현과 사용 상황에 따라 다를 수 있다.)
- 개발 속도 : 인터프리터 언어의 신속한 테스트와 디버깅 이점을 제공하면서, 컴파일 언어의 효율성도 활용한다.
- 플랫폼 독립성 : 중간 언어는 플랫폼과 무관하며, 런타임 환경에서 기계어로 변환되므로 여러 플랫폼에서 실행할 수 있다.
- 자원 관리 : 컴파일 언어의 효율적인 자원 관리와 인터프리터 언어의 유연한 메모리 관리를 조합하여 향상된 자원 관리를 제공한다.
- 보안 : 중간 코드까지 번역되므로, 일정 수준의 보안을 제공한다.
- 유연성 및 확장성 : 인터프리터 언어의 유연성과 컴파일 언어의 엄격한 구조를 결합하여 확장 가능하고, 적응력 있는 프로그래밍 환경을 제공한다.
- 실행 환경 : 런타임 환경(가상 머신 등)이 필요하다.
예시 언어
- C#, Java, Kotlin, PyPy 등
728x90
'언어(C, C++, C#)' 카테고리의 다른 글
[C#] 가상 함수 테이블 (0) | 2024.11.17 |
---|---|
[C#] 리플렉션(Reflection)과 속성(Attribute) (0) | 2024.11.14 |
[C#] const vs readonly (0) | 2024.11.09 |
[C#] delegate와 event (3) | 2024.11.08 |
[C#] .NET, 컴파일 과정, CLS, CTS, CIL, CLI, CLR, JIT 컴파일 (1) | 2024.11.06 |