[Kotlin] 코틀린이 정적 타입인 이유
모든 프로그래밍 언어는 정적타입과 동적 타입의 언어로 나뉜다.
우리가 사용하는 코틀린은 정적타입 언어라고 하는데 그 이유에 대해서 공부를 해 볼것이다.
그전에 알아야 할 개념으로 타입이 무엇인지 그리고 정적타입이 무엇인지, 그와 반대되는 동적 타입은 무엇인지를 먼저 알아보자.
1) 타입이란?
int, float, short, bool
- 타입은 변수가 값의 종류를 나타내는 개념이다.
- 우리는 변수를 선언할때 변수가 어떠한 값을 가질 수 있는지 그 자료에 어떤 연산을 할수 있는지를 정의한다.
2) 정적타입(Static Typing)
- 프로그램이 컴파일 시간에 타입을 결정하고, 컴파일러가 변수의 타입을 검사한다.
- 변수의 타입이 컴파일 시점에 고정되므로, 타입 불일치로 인한 오류를 사전에 방지할 수 있다.
- 대표적인 정적 타입 언어로는 C, C++, Java, Kotlin 등이 있다.
💡 컴파일(Compile): 프로그래머가 작성한 소스 코드를 기계어나 바이너리 코드로 변환하는 과정을 말한다. 이 변환은 주로 고수준 언어로 작성된 코드를 저수준 언어로 변환하는 것을 의미한다. 컴파일러(Compiler)는 이러한 변환 작업을 수행하는 도구이다.
3) 동적타입(Dynamic Typing)
- 프로그램이 실행 중에 타입을 결정하고, 런타임에 변수의 타입을 검사한다.
- 타입에 관계없이 모든 값을 변수에 넣을 수 있고 변수의 타입이 실행 중에 동적으로 변경될 수 있다.
- 유연성이 높지만, 런타임에 발생하는 타입 오류를 방지하기 어려울 수 있습니다.
- 대표적인 동적 타입 언어로는 Python, JavaScript, Ruby, PHP 등이 있습니다.
4) 정적타입의 장점
- 실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 없어서 메소드 호출이 빠르다.
- 컴파일러가 정확성(Correctness)을 검증하기 때문에 오류가 생길 확률이 줄어든다.
- 코드에서 다루는 객체가 어떤 타입인지 알 수 있어서 코드를 읽는 사람들은 변수나 함수의 타입 정보를 통해 코드를 이해하기 쉽다.
- 대규모 프로젝트에서는 코드의 유지보수가 중요하다. 정적 타입 언어는 코드의 안전성을 보장하고, 코드베이스가 커져도 유지보수를 더 쉽게 할 수 있다.
- 정적 타입 언어는 코드를 공유하는 동료들 간에 의사소통을 용이하게 만든다. 코드의 타입 정보를 통해 각자의 역할과 업무를 명확히 이해할 수 있습니다.
5) 코틀린은 왜 정적 타입일까?
정리하자면 모든 프로그래밍 언어는 정적,동적 두가지 타입으로 나뉘는데
코틀린은 변수의 타입을 미리 지정해줌으로써 컴파일 시점에 타입을 미리 검사해 오류를 사전에 방지하고, 코드의 가독성이 향상되며, 타입의 정보를 쉽게 알 수 있기때문에 대규모 프로젝트관리에 용이성을 가지게 된다. 그렇기 때문에 정적 타입이라고 할 수 있고 동적타입은 타입에 관계없이 모든 타입을 변수에 넣어줄 수 있기때문에 실행시에 오류를 검증하고 실행 도중에 변수의 타입이 동적으로 변경될 수 있다는점이 다르게 된다.