코틀린의 주요 특성
정적 타입 지정 언어
- 자바와 마찬가지로 코틀린도 정적 타입 지정 언어이다.
정적 타입 지정 언어란? 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드(fleld)나 메소드(method)를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻
코틀린은 타입 추론을 지원하므로 정적 타입 지정 언어에서 프로그래머가 직접 타입을 선언하지 않아도 된다.
코틀린은 NULL이 될 수 있는 타입을 지원한다. 널이 될 수 있는 타입을 지원함에 따라 컴파일 시점에 NULL Pointer Error가 발생할 수 있는지 여부를 검사할 수 있다.
함수 타입을 지원한다.
함수 타입이 뭔지 알려면 함수형 프로그래밍에 대해 알아야한다.
함수형 프로그래밍
일급 시민인 함수 함수를 일반 값 처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고 함수를 인자로 다른 변수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어 반환할 수 있다.
불변성 함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용하여 프로그램을 작성한다.
부수 효과 없음 함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부의 다른 바깥 환경과 상호 작용하지 않는 순수 함수를 사용한다.
장점
함수형 코드는 명령형 코드에 비해 더 간결하다. (함수를 값처럼 활용하면 추상화가 가능하므로)
다중 스레드를 이용해도 안전하다. 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다.
테스트하기 쉽다. 순수 함수를 사용하면 부수 효과가 일어나지 않기 때문에 부수 효과에 대한 테스트는 할 필요가 없다.