Skils/Kotlin

[kotlin] 코틀린이란 무엇일까?

재한 2022. 7. 21. 16:10

내가 이번 방학에 공부하기로 한 언어는 kotlin [코틀린]이다.

보통 애플리케이션을 개발할 때 사용하는 언어이고 훌륭하고 효율적인 언어로 평가받는다.

 

코틀린은 안전성, 간결성, 상호 윤용성을 강조하는 다중 패러다임, 다중 플랫폼 프로그래밍 언어다.

 

📕코틀린의 장점

1. 안전성

프로그래밍 언어가 안전하려면 프로그래머의 오류를 방지할 수 있어야 한다. 실전에서 오류를 방지하려면 대가가 필요하기 때문에 안전성을 고려해 언어를 설계하는 것은 트레이드오프의 문제이다.

코틀린의 설계 목표 중 하나는 황금비를 찾아내는 것이었다.

즉 자바보다 더 안전성을 보장하는 언어를 설계하되, 개발자의 생산성을 덜 해치는 언어를 만드는 것이다.

  • 타입 추론으로 인해 개발자가 명시적으로 지정하지 않아도 된다
  • 날이 될 수 있는 타입을 통해 null의 사용을 제한할 수 있고, 악명 높은 NullPointerException 예외를 좀 더 쉽게 방지할 수 있다.
  • 스마트캐스트를 통해 타입을 안전하게 변환할 수 있고, 실행 시점에 타입 캐스트 오류를 방지할 수 있다.

2. 다중 패러다임

  • 객체지향 패러다임을 지원
  • 함수형 프로그래밍을 지원
  • 동시성 프로그래밍을 지원
  • 선언적인 스타일의 코딩 가능

💡이 모두를 한꺼번에 제공하기 때문에 다중 패러다임은 언어의 표현력을 매우 많이 늘려주며, 언어를 더 유연하고 다용도에 사용할 수 있는 도구로 만들어 준다.

3. 간결성과 표현력

개발자 생산성은 다른 사람이 짠 코드를 보든 본인 스스로가 짠 것을 한참 후에 보든 관계없이 빠르게 읽고 이해할 수 있는 코드를 작성할 수 있는지와 주로 연관돼 있다.

코틀린은 필드 게터(getter)나 세터(setter), 익명 클래스 , 명시적인 위임 등과 같은 자바의 악명 높은 불필요한 준비 코드를 제거하고 언어를 가능한 한 간결하게 만들기 위해 노력했다.

코틀린의 간결성은 DSL과 밀접히 연관된다. DSL은 문법적인 잡음을 최소화하면서 특정 프로그래밍 범위에 대한 기술을 아주 간결하게 만들어준다.

4. 상호 운용성

코틀린은 독립적으로 존재하는 언어가 아니며 가능한 기존의(자바) 코드 기반과 부드럽게 협력해야만 했으므로, 자바 상호운용성은 코틀린 설계 시 중요한 목적이었다.

따라서 코틀린 코드를 아무런 노력 없이 자바에서 사용할 수 있고, 기존 자바 코드를 코틀린에서 사용할 수 있다.

코틀린이 JVM을 능가하고 다른 플랫폼으로 빠져나감에 따라 상호운용성 보장은 자바스크립트, 즉 JS플랫폼이나 네이티브 애플리케이션인 C/C++/오브젝티브 C/스위프트 코드와의 상호작용까지 포함하는 범위로 확장됐다.

5. 다중 플랫폼

코틀린의 원래 의도에 다중 플랫폼은 없었다. 하지만 시간이 지남에 따라 다중 플랫폼의 지원이 제기되었고, 

여전히 JVM과 안드로이드가 코틀린 개발의 주 대상이지만, 요즘 코틀린은 다음과 같은 플랫폼도 지원한다.

  • 브라우저나 노드(Node.js) 애플리케이션, 자바스크립트 라이브러리까지 포함하는 자바스크립트 지원
  • macOS나 리눅스, 윈도 라이브러리 및 애플리케이션을 포함하는 네이티브 지원
주된 용례로는 안드로이드와 IOS애플리케이션 사이에 코드 기반을 공유하거나 JVM/JS/네이티브 세계에서 사용할 다중 플랫폼 라이브러리를 만드는 것 등이 있다.

 

 

👀정리

  • 코틀린 언어의 특징은 5가지가 있다.
    • 안전성
    • 다중 패러다임
    • 간결성과 표현력
    • 상호운용성
    • 다중 플랫폼