컴퓨터 언어에는 여러가지 종류가 있다.
제일 하위 언어로는 어셈블리어가 있는데, 어셈블리어는 기계가 이해할 수 있는 0과 1을 이용해서 만들어진 언어이다. 각각의 하위 명령어 세트로 이루어진 내용물을 우리가 다 일일히 외우고 있을 수는 없기에 상당히 어려운 프로그래밍에 속한다. 따라서 기계가 이해하기는 쉽지만 사람이 이해하기에는 어려운 언어이다.
어셈블리어 이후에 절차지향 언어로 C언어가 있다. C언어는 하드웨어를 다루는데 인간 친화적이면서도 유용하기 때문에 임베디드 분야에 많이 이용된다.
C언어 이후에는 대형 프로그램을 만들기 위한 객체지향형 패러다임을 도입한 언어인 Java가 만들어졌다. 객체지향형 패러다임은 대형 소프트웨어를 만들기에 적합해서 Java 언어가 오랫동안 많은 분야에 사용되고 있다.
Java 이후에는 목적에 따라서 파이썬이나 스크립트와 같은 언어가 만들어지기도 했다.
Kotlin은 다양한 플랫폼에서 잘 동작할 수 있도록 만들어졌다. 풀스택 웹 개발, Android와 iOS앱, 임베디드, IoT등 다양한 플랫봄에서 개발할 수 있도록 만들어 졌다.
Kotlin은 다음과 같은 특징을 갖추고 있다.
1. 통합개발환경(IDE, Android Studio의 모체)을 JetBrain에서 개발하고 보급한다.
2. 코드가 간결하고 다재다능하며 호환성이 높다.
3. 함수형 프로그래밍과 객체지향 프로그래밍 모두 가능하다.
4. 문장 끝에 세미콜론(;)을 생략해도 된다.
5. Android Studio에서 Android 공식 언어로 추가되었다.
6. 기존의 Java 언어로 만든 프로그램이 있다면 Kotlin으로 바꾸는 과정에서 전체적으로 다시 만들 필요 없이 부분 수정만으로도 Java와 상호 운영이 가능하다.
7. Null 포인터로 인한 프로그램의 중단을 예방할 수 있다. 즉 NPE(Null Pointer Exception)에서 자유롭다.
8. 변수는 Null값을 사용할 수 있는 Nullable과 Null값을 사용할 수 없는 Not-Null이 있는데, 변수 선언 할 때에 물음표(?)를 붙여서 Nullable로 만들 수 있다.
ex) Nullable 변수 선언 val num:Int? = null (가능)
ex) Not-Null 변수 선언 val num:Int = null (불가능)
9. 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어(Statically Typed)이다. 다른 스크립트 언어같은 경우에 컴파일 단계가 없기 때문에 코드를 읽을 때마다 검사해야 하지만 Kotlin같은 경우 컴파일러가 타입을 검증해준다.