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

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

코틀린(Kotlin)?

  • 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어
  • 간결, 실용적, 자바 코드와의 상호운용성 중시

주요 특성

대상 플랫폼

  • 서버, 안드로이드 등 자바가 실행되는 모든 곳

정적 타입 지정 언어

* 정적 타입 지정 언어: 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다.
* 동적 타입 지정 언어: 타입과 관계없이 모든 값을 변수에 넣을 수 있고, 필드나 메서드 접근에 대한 검증이 실행 시점에 일어난다.
  • 정적 타입 지정의 장점
    • 성능: 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요없어서 빠르다.
    • 신뢰성: 컴파일러가 검증하기 때문에 실행 시 오류로 중된될 가능성이 적다.
    • 유지 보수성: 코드에서 다루는 객체가 어떤 타입인지 알 수 있기 때문에, 처음 보는 코드를 다루기 쉽다.
    • 도구 지원: 리팩토링이 안전하고, 더 정확한 코드 완성 기능을 제공할 수 있으며 IDE의 다른 지원 기능도 더 잘 만들 수 있다.

타입 추론 (type inference)

코틀린은 정적 타입 지정 언어이지만, 자바와 다르게 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 타입 선언을 생략해도 된다.

var x = 1

Nullable type 제공

컴파일 시점에 NullPointerException 발생 가능 여부를 검사할 수 있다.

함수 타입 지원

함수형 프로그래밍

함수형 프로그래밍의 핵심

  • first-class (일급 시민) 함수: 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장 / 인자로 다른 함수에 전달 / 함수에서 새로운 함수를 반환할 수 있다.
  • immutability (불변성): 함수형 프로그래밍에서는 불변 객체를 사용해 프로그램을 작성한다.
  • side effect (부수효과) 없음: 입력이 같으면 항상 같은 출력을 반환하고, 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 외부 환경과 상호작용하지 않는 순수 함수(pure function)를 사용한다.


  • 함수형 프로그래밍의 장점
    1. 간결성: 함수를 값처럼 활용하면 더 강력한 추상화를 할 수 있고, 따라서 코드 중복을 막을 수 있다.
    2. 다중스레드 안전성: 불변 데이터 구조를 사용하면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다.
    3. 테스트 용이: side effect가 없는 순수 함수는 독립적으로 테스트할 수 있다.


자바 8 이전의 자바는 함수형 프로그래밍을 지원할 수 있는 기능이 거의 없었다.
코틀린은 처음부터 함수형 스타일로 프로그램을 짤 수 있게 지원해왔다. (강제하지는 않는다.)
객체 지향과 함수형 접근 방법을 함께 조합해서 문제에 가장 적합한 도구를 사용하면 된다.

코틀린의 철학

1. 실용성

  • 코틀린은 실용적인 언어다.
  • IDE 도구 지원도 풍부하다.

2. 간결성

  • 개발자가 작성하는 코드에서 의미없는 부분을 줄이고, 부수적인 요소를 줄이기 위해 노력했다.
  • 다양한 표준 라이브러리를 제공하여 반복되거나 길어질 수 있는 코드를 라이브러리 함수 호출로 대치할 수 있다.
  • 람다를 지원하기 때문에 작은 코드 블록을 쉽게 전달할수 있다.
  • 코드가 간결하면 쓰는 데 시간이 덜 걸린다. -> 읽는 데도 시간이 덜 걸린다.

3. 안정성

  • Nullable type 지원
  • 타입 캐스트 간편화

4. 상호운용성

  • 자바 메서드 호출, 자바 클래스 상속, 인터페이스 구현, 자바 애노테이션 사용 등 모두 가능하다.

코틀린 빌드 과정

Comments