Programming Language/Kotlin

[Kotlin In Action] 1장. 코틀린이란 무엇이며, 왜 필요한가?

수연초이 2022. 5. 30. 04:27

코틀린의 주요 특성

주 목적: 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것

정적 타입 지정 언어

  • ↔️ 동적 타입 지정 언어(ex. Groovy, JRuby)
  • 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있다.
  • 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증한다.
  • 코틀린은 모든 변수 타입을 직접 명시하지 않아도 된다. 코틀린 컴파일러가 변수 타입을 자동으로 유추하기 때문이다. ➡️ 타입추론
  • 성능, 신뢰성, 유지 보수성, 도구 지원성에서 장점을 갖는다.
  • 코틀린은 nullable type을 지원한다. 컴파일 시점에 NullPointerException을 검사하여 프로그램의 신뢰성을 높인다.(6장)

 

함수형 프로그래밍과 객체지향 프로그래밍

함수형 프로그래밍

  • 일급 시민인 함수
    • 함수를 일반 값처럼 다룰 수 있다.
    • 변수에 저장하거나 인자로 다른 함수에 전달하거나 새로운 함수로 만들어 반환할 수 있다.
  • 불변성
    • 불변 객체를 사용한다.
  • 부수 효과 없음
    • 입력이 같으면 항상 같은 출력이다.
    • 다른 객체의 상태를 변경하지 않고, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수함수를 사용한다.
  • 간결성, 다중 스레드 환경에서의 안정성, 테스트 용이성의 장점을 갖는다.

코틀린의 함수형 프로그래밍 지원

  • 함수 타입 지원: 함수가 또 다른 함수를 파라미터로 받거나 새로운 함수를 반환 가능
  • 람다식 지원: 번거로운 준비 코드 작성 불필요. 코드 블록을 쉽게 정의 및 전달 가능
  • 데이터 클래스: 불변적인 값 객체를 간편하게 만들 수 있는 구문 제공
  • 코틀린 표준 라이브러리: 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API 제공

 

코틀린의 철학

  • 실용성: 쉽게 배울수 있으며 간결한 코드를 작성할 수 있다. 도구의 지원을 강조한다.
  • 간결성: 프로그램의 부수적인 요소(게터, 세터 등)를 줄일 수 있다.다양한 라이브러리를 지원한다. 짧은 코드를 작성할 수 있고, 짧은 코드를 읽으면 된다!
  • 안전성: JVM에서 실행되어 상당한 안전성을 보장한다. 추가로, 컴파일 시점 검사를 통해 오류를 더 많이 방지한다(ex.  NullPointerException, ClassCastException 방지).
  • 상호운용성: 기존(Java) 라이브러리를 그대로 사용할 수 있다.

 

코틀린 코드 컴파일(빌드 과정)