자바와 마찬가지로 코틀린도 정적 타입 지정 언어다. 정적 타입 지정이라는 말은 모든 프로그램 구성 요소의 타입을 "컴파일 시점" 에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 "컴파일러가 타입을 검증" 해준다는 뜻이다. 이런 점은 다른 동적 타입 지정 언어와는 다르다.
동적 타입 지정 언어에서는 타입과 관계없이 모든 값을 변수에 넣을 수 있고 메소드나 필드 접근에 대한 검증이 실행 시점에 일어나며, 그에 따라 코드가 더 짧아지고 데이터 구조를 더 유연하게 생성하고 사용할 수 있다. 하지만 반대로 이름을 잘못 입력하는 등의 실수도 컴파일 시 걸러내지 못하고 실행 시점에 오류가 발생한다.
정적 타입 지정의 장점은?
성능
-실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠르다.
신뢰성
-컴파일러가 프로그램의 정확성을 검증하기 떄문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어진다.
유지 보수성
-코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다.
일급 시민인 함수
-함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다.
불변성
-함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.
부수효과 없음
-함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수를 사용한다.