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