컴파일타임(Compiletime) vs 런타임(Runtime)
컴파일타임(Compiletime) vs 런타임(Runtime)
컴파일타임과 런타임 은 각각 프로그램 개발의 서로 다른 두 단계를 의미한다.
우선 컴파일타임에 대하여 알아보자.
컴파일타임
- 개발자는 소스코드를 작성한 후 컴파일 과정을 통해 “프로그래밍언어 ( ex. C언어 ) → 기계어” 과정을 수행한다.
정확히는 컴파일러가 수행한다.이 과정을 거친 후에야 개발자가 작성한 코드를 컴퓨터가 인식할 수 있게되며 비로소 코드가 실행 가능한 프로그램을 만들어낸다. - 이, “프로그래밍언어 ( ex. C언어 ) → 기계어” 변환 과정의 시간을 컴파일타임 이라고 부른다.
- 컴파일타임을 성공적으로 보냈을 때 컴파일링 성공이라고 하는데, 작성한 소스 코드가 1. 문법 오류 , 2. 파일 참조 오류 등의 오류를 포함하면 컴파일링에 실패한다. 이 경우 컴파일러는 컴파일 타임 에러를 발생시키고 일반적으로 문제를 일으킨 소스코드 라인을 지시한다.
런타임
-
컴파일 과정을 마친 프로그램은 사용자에 의해 동작할 수 있다. 바로 응용프로그램이 동작되는 이 시간을 런타임이라고 부른다.
-
어떤 소스 코드가 컴파일링에 성공하여 실행 가능한 프로그램이 되었다고 하더라도, 여전히 런타임, 즉 프로그램이 동작하는 시간동안 에러가 발생할 수 있다. 이 경우가 런타임 에러이다.
Null point exception
런타임에 발생하는 에러 중 흔히 볼 수 있는 유형이 바로 이 Null point exception, 줄여서 NPE 이다. 이 에러는, null 상태의 객체를 참조할 때 발생한다.
Null Safety
NPE 는 런타임 에러로서, 프로그램을 동작 시킨 이후에 발견할 수 있는 오류이다. 근데 이 것을 코드를 작성하고 컴파일 하는 시간에 발견할 수 있다면 굳이 프로그램을 동작 시킨 이후 에러를 발견하고 고칠 필요가 있을까!?
이런 생각에 기초하여 Null
Late 키워드
non nullable 인데 초기값을 나중에 줘야할 경우 ex 특정 함수 실행시 - > 이 때 late tkdyd
Reference
- https://spaghetti-code.tistory.com/35
- https://kkangsnote.tistory.com/98