[기술 면접 준비] 정적 타입 언어 & 동적 타입 언어
정적 타입 언어(Statically-typed language)
- 컴파일 시 변수의 타입이 결정되는 언어
- 작성자가 소스 코드 작성 시, 변수에 들어갈 값에 따라 변수의 타입을 직접 지정해야
- 컴파일 시 타입에 맞지 않는 값이 변수에 들어갈 경우, 컴파일 에러 발생
- ex. C, C#, C++, Java, Kotlin
- 장점
- 타입 에러 컴파일 시 발견 -> 타입 관련 런타임 에러 방지 -> 타입 안정성 높음
- 컴파일 시 타입 결정 -> 실행 속도 빠름
- 코드 가독성 좋음 -> 협업/유지보수 유리
- 단점:
코드를 작성할 때 모든 변수에 타입을 미리 결정해야 -> 번거로움
var a: Int = 123
a = "abc"
동적 타입 언어(Dynamically-typed language)
- 런타임 시 변수의 타입이 결정되는 언어
- 작성자가 소스 코드 작성 시, 변수의 타입 지정 X 값만 지정 가능
- ex. Groovy, Python, JavaScript, Ruby, Smalltalk, Lisp, Objective-C, PHP, Prolog
- 장점:
코드 작성 시 타입 명시 X -> 빠르게 코드 작성 가능
- 단점:
런타임 시 결정된 변수의 타입과 다른 타입의 값이 들어갈 경우, 런타임 타입 에러 발생 가능
def a = 123
a = "abc"