코틀린이란 무엇이며, 왜 필요한가?

윤성민·2020년 10월 22일
0

kotlin

목록 보기
1/1

코틀린Kotlin은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어다.

코틀린은 자바 코드와 상호운용이 가능하고, 간결하고 실용적이다.

1.1 코틀린 맛보기

코틀린의 특징을 보여줄 수 있는 예제

Person이라는 클래스를 정의하고, 클래스를 사용해 사람을 모아둔 콜렉션을 만들고, 가장 나이가 많은 사람을 찾아 결과를 출력한다.

http://try.kotl.in 에 접속하면 간단한 코틀린 코드를 실행해볼 수 있다.

data class Person(val name:String, // '데이터' 클래스
                 val age: Int? = null) // null이 될 수 있는 타입(Int?)과 파라미터 디폴트 값
fun main(args:Array<string>){ // 최상위 main 함수
    var persons = listOf(Person("영희"),
                        Person("철수", age = 29)) // 이름 붙은 파라미터
    var oldest = persons.maxBy {it.age ?: 0 } // 람다 식과 엘비스 연산자
    println("나이가 가장 많은 사람: $oldest") // 문자열 템플릿
}
// 나이가 가장 많은사람: Person(name=철수, age=29) toString 자동 생성

nameage라는 프로퍼티가 들어간 간단한 데이터 클래스를 정의한다.

age 프로퍼티의 디폴트 값은 null이다.

사람 리스트를 만들면서 영희의 나이를 지정하지 않았기 때문에 null이 쓰였다.

maxBy 함수에 전달한 람다 식은 파라미터를 하나 받는다. it이라는 이름을 사용하면 람다 식의 유일한 인자를 사용할 수 있다.

엘비스 연산자라고 부르는 ?:agenull인 경우 0을 반환하고, 그렇지 않은 경우 age의 값을 반환한다.

영희의 나이를 지정하지 않았지만 엘비스 연산자가 null을 0으로 변환해주기 때문에 철수가 가장 나이 많은 사람으로 선정된다.

1.2 코틀린의 주요 특성

코틀린을 통해 만들 수 있는 애플리케이션의 종류를 알아보자.

1.2.1 대상 플랫폼: 서버, 안드로이드 등 자바가 실행되는 모든 곳

코틀린의 주목적은 자바가 사용되고 있는 모든 곳에 간결하고 생산적이며 안전한 대체 언어를 제공하는 것.

자바는 현재 구글, 트위터, 링크드인 등 대부분의 기업이 다양한 환경에서 사용되고 있다.

이런 환경에 코틀린을 도입한다면 더 간결한 코드로 편하게 코딩할 수 있을 것이다.

코틀린을 활용하기 좋은 영역

  • 서버상의 코드(특히 웹 애플리케이션의 백엔드)
  • 안드로이드 디바이스에서 실행되는 모바일 애플리케이션

하지만 코틀린은 다양한 환경에서도 작동한다.

  • 인텔의 멀티OS 엔진을 통해 IOS 디바이스에서 실행
  • 코틀린과 토네이도FX, 자바FX를 활용해서 데스크탑 애플리케이션 작성
  • 자바스크립트, 노드, 브라우저 환경에서 컴파일

이처럼 코틀린이 활용될 수 있는 곳은 무궁무진하다.

1.2.2 정적 타입 지정 언어

자바와 마찬가지로 코틀린도 정적 타입 지정 언어이다.

정적 타입 지정이라는 말은 모든 프로그램 구성 요소의 타입을 컴파일 시점에서 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다.

동적 타입 지정 언어는 타입과 관계없이 모든 값을 변수에 넣을 수 있고, 메소드나 필드 접근에 대한 검증이 실행 시점에 일어나며, 그에 따라 코드가 간결해지고 데이터 구조를 유연하게 생성하고 사용할 수 있다.

하지만 이름을 잘못 입력하는 등의 실수를 컴파일 시에 걸러내지 못하고 실행 시점에 오류가 발생한다.

코틀린에서는 모든 변수의 타입을 직접 명시할 필요가 없다. 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 타입 선언을 생략해도 된다.

var x = 1

위 코드는 변수를 정의하면서 정수 값으로 초기화한다. 코틀린은 이 변수의 타입을 Int임을 자동으로 알아낸다. 컴파일러가 문맥을 고려해 변수 타입을 결정하는 이런 기능을 타입 추론이라 부른다.

정적 타입 지정의 장점

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

코틀린은 타입 추론을 지원하므로 직접 타입을 선언해야 하는 불편함이 사라진다.

코틀린의 타입시스템은 자바와 비슷하게 클래스, 인터페이스, 제네릭스가 있다. 이외에도 코틀린만의 새로운 타입 시스템이 있다.

코틀린은 null이 될 수 있는 타입을 지원한다. 널이 될 수 있는 타입을 지원함에 따라 컴파일 시점에서 널 포인터 예외가 발생할 수 있는 여부를 검사할 수 있어 프로그램의 신뢰성을 높일 수 있다.

또한 코틀린은 함수 타입을 지원하기 때문에 코틀린으로 함수형 프로그래밍을 구현할 수 있다.

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

profile
기록은 기억보다 강하다.

0개의 댓글