본문 바로가기
안드로이드/Kotlin

[Kotlin] Kotlin 이란

by jinwo_o 2024. 12. 8.

Kotlin

  • 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어
  • 간결하고 실용적이며, 자바 코드와의 *상호운용성을 중시한다.
    • 상호운용성 : 하나의 시스템이 동일 또는 이기종의 다른 시스템과 아무런 제약이 없이 서로 호환되어 사용할 수 있는 성질
    • 목적 : 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것
  • 자바와 마찬가지로 코틀린도 정적 타입 지정 언어다.
  • 널이 될 수 있는 타입을 지원함에 따라 *컴파일 시점에 널 포인터 예외(NullPointerException)가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.
  • 어떤 객체를 다른 타입으로 캐스트하기 전에 타입을 미리 검사하지 않아 발생할 수 있는 ClassCastException 을 방지해준다. 타입 검사와 캐스트가 is 연산자에 의해 모두 이뤄진다.
  • 객체 지향 프로그래밍과 함수형 프로그래밍을 모두 지원하는 다중 패러다임 언어

정적 타입 지정 언어

  • 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻
  • 자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없다.
    • 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 타입 선언을 생략해도 된다. (타입 추론)
  • vs 동적 타입 지정 : 타입과 관계없이 모든 값을 변수에 넣을 수 있고, 메서드나 필드 접근에 대한 검증이 실행 시점에 일어나며, 그에 따라 코드가 더 짧아지고 데이터 구조를 더 유연하게 생성하고 사용할 수 있다.
    • 그러나 이름을 잘못 입력하는 등의 실수도 컴파일 시 걸러내지 못하고 실행 시점에 오류가 발생한다.

 

정적 타입 지정 언어 장점

  • 성능 : 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요없으므로 메서드 호출이 더 빠르다.
  • 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 작아진다.
  • 유지 보수성 : 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다.
  • 도구 지원 : 정적 타입 지정을 활용하면 더 안전하게 리팩토링 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE 의 다른 지원 기능도 더 잘 만들 수 있다.

객체 지향 프로그래밍

 

[Kotlin] 객체 지향 프로그래밍(Object-Oriented Programming)

프로그래밍 방식1. 명령형 프로그래밍(Imperative Programming, IP)프로그래밍의 상태와 상태를 변경하는 구문의 관점에서 연산을 설명하는 방식무엇(What)을 ‘어떻게(How)’ 할 것인지에 집중한다.1-1.

dev-baik.tistory.com

 

함수형 프로그래밍

 

[Kotlin] 함수형 프로그래밍(Functional Programming), 람다(lambda)

프로그래밍 방식1. 명령형 프로그래밍프로그래밍의 상태와 상태를 변경하는 구문의 관점에서 연산을 설명하는 방식What 이 아니라 How 에 집중한다.1-1. 절차지향 프로그래밍 : 문제를 순차적으로

dev-baik.tistory.com

 

다중 패러다임

  • 초기에 코틀린이 다중 패러다임이라는 말의 의미는 자바와 같은 전형적인 주류 프로그래밍 언어가 지원하는 일반적인 객체지향 패러다임 외에 함수형 프로그래밍을 지원한다는 뜻이었다.
  • 코틀린은 함수형 프로그래밍에 필요한 도구를 처음부터 제공했다. 특히 함수 타입을 부드럽게 조화시킨 타입 시스템과 함수 타입의 값을 코드 블록에서 만들어낼 수 있는 람다를 처음부터 제공했다.
  • 코틀린 언어가 성장해 나가면서, *두 가지 프로그래밍 패러다임을 더 지원하기 시작했다. 
    • 두 가지 프로그래밍 패더라임
      • 도메인 특화 언어(Domain Specific Language, DSL) : API 를 도메인 특화 언어로 정의할 수 있는 기능 덕분에 코틀린을 선언적인 스타일로 코딩할 수 있다.
      • 동시성 프로그래밍(Concurrent Programming) : 코루틴을 도입하면서 코틀린도 동시성 프로그래밍을 지원한다.
  • 이 모든 요소를 한꺼번에 제공하기 때문에 다중 패러다임은 언어의 표현력을 크게 향상시켜, 언어를 더 유연하고 다양한 용도로 사용할 수 있는 도구로 만들어 준다.

 

1장 코틀린이란 무엇이며, 왜 필요한가? | Incheol's TECH BLOG

KOTLIN IN ACTION 1장을 요약한 내용입니다.

incheol-jung.gitbook.io

 

[Kotlin] 코틀린이란 무엇인가 그리고 특징과 주요 개발까지

지금까지 코틀린을 이용하여 앱개발을 하면서도 코틀린이란 무엇인지에 대해서 명확히 알고 넘어가지는 않았던 것 같다. 그래서 이번에는 코틀린에 대해서 공부를 해보자. 코틀린이란 무엇인

superohinsung.tistory.com