프로그래밍 언어/C#
컴파일(Compile)과 런타임(Runtime)
가든_
2023. 10. 3. 23:18
컴파일과 런타임은 프로그램의 생명주기에서 중요한 두가지 단계이다.
컴파일은 실행파일을 만들고, 런타임에서 실행파일을 실행한다.
컴파일
개념
- 개발자의 소스코드를 기계가 이해할 수 있는 2진수 바이너리 코드로 바꿔주는 과정
과정
- 프로그래머가 고수준 언어(C, C++, C#, Java...)로 소스 코드를 작성한다.
- 컴파일러가 해당 코드를 컴퓨터가 이해하고 실행할 수 있는 기계어 코드로 변환한다.
- 컴파일 과정을 마치면 실행 파일이 생성된다. (아직 실행되지는 않는다)
❓ 컴파일 언어와 스크립트 언어
컴파일 언어(C,C++,C#,Java)는 실행전 소스 코드를 컴파일해서 기계어로 바꾼 후 해당 파일을 실행한다. 스크립트 언어(Python, JavaScript)는 코드 작성과 동시에 인터프리터가 기계어로 번역하고 실행한다. 그렇기 때문에 보통 컴파일언어는 스크립트 언어보다 빠른 경향이 있고, 대신 컴파일 과정에서 문법 오류를 발견하기 때문에 문법적 제약이 더 크다. 스크립트 언어는 실행과정에서 번역이 진행되므로 비교적 느리고, 문법적 제약이 적으나 문법 오류를 발견하기 어려운 특징이 있다.
컴파일 에러
- 컴파일 과정에서 컴파일러가 이해하지 못한 문법적 오류가 있으면 발생한다
- ex) 문법 오류, 오타, 잘못된 변수나 함수 사용, 타입 불일치 등
런타임
개념
- 프로그램이 실제로 실행 및 동작하는 단계
과정
- 컴파일된 실행 파일은 런타임 환경에서 실행된다.
- 사용자의 입력, 데이터 처리, 로직을 수행한다.
- 메모리를 할당하고 해체하거나 파일을 읽고 쓰는 등의 작업을 수행한다.
런타임 에러
- 프로그램 실행중에 발생하는 에러
- 예상치 못한 조건이나 실행시간에 발생한 오류로 발생한다.
- ex) 0으로 나누었을 경우, null 참조 오류, 배열 인덱스 참조 오류 등