[코틀린(Kotlin) - 1일차] 왜 코틀린(Kotlin)을 배워?
프로그래밍/코틀린(Kotlin)

[코틀린(Kotlin) - 1일차] 왜 코틀린(Kotlin)을 배워?

코틀린(Kotlin)이란?

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

왜 코틀린을 배우는가?

코틀린을 배우고 싶은 마음이 샘솟기 위해서는 코틀린의 장점에 대해 알아보면 된다.

  1. 간결성: 코드 작성을 위해 불필요한 부분을 최소화
  2. 실용성: 기존의 여러 프로그래밍 언어들에 의해 검증된 방법을 채택
  3. 안정성: 오랜 기간 검증된 자바의 JVM위에서 돌아가기 때문에 안정적 + 컴파일시 Null, 형 변환(Cast)에 대한 검증
  4. 자바 코드와의 상호운용성: 기존 자바 코드와 호환

위 글만 읽어보면 장점이 와닿지 않는다. 이제 예시를 보며 코틀린의 장점을 하나씩 느껴보자.

 

1. 간결성

어떤 언어가 간결하다는 말은 그 언어로 작성된 코드를 읽을 때 의도를 쉽게 파악할 수 있는 구문 구조를 제공하고, 그 의도를 달성하는 방법을 이해할 때 방해하 될 수 있는 부가적인 준비 코드가 적다는 뜻이다.

자바를 사용한 적 있는 사람들은 알겠지만, 코드를 작성하며 불필요하다고 느끼는 타이핑이 많아 불편함을 많이 느껴보았을 것이다. 또한 불필요한 타이핑이 늘어나면 코드를 봤을 때 한 눈에 코드를 이해하기 힘들다.

아래 코드는 처음 언어를 배우면 거의 반드시 거쳐간다는 전설의 문장 "Hello, world!!"를 출력하는 코드이다. 언어에 대해 잘 모르더라도 코틀린의 코드가 자바보다 훨씬 간결하다는 것을 느낄 수 있을 것이다.

자바(Java) code

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!!");
    }
}

 

코틀린(Kotlin) code

fun main() {
    print("Hello, world!!")
}

 

위 코드에서 public static void main(String[] args)는 fun main()와, System.out.println("Hello, world!!")는 print("Hello, world!!")와 동일한 기능을 한다. 자바에서 public, static, void, System.out 각각이 의미하는 바가 있지만 그래도 매번 치려면 번거롭다. 코틀린은 위와 같이 타이핑을 최소화하여 간결성을 획득한다.

주의할 점은 간결성과 짧은 코드는 동일하지 않다는 점이다.

 

 

간결성은 코드를 봤을 때 의도를 파악하기 쉽다는 의미(가독성)도 포함하고 있는데, 코드가 짧다고 해서 반드시 읽기 쉬운 것은 아니기 때문이다. 아래는 짧은 코드가 반드시 읽기 쉬운 코드가 아니라는 것을 보여준다.

삼항연산자 사용

public String example1(int input) {
    return (input > 10) ? "Good" : "Bed";
}

 

if-else문 사용

public String example1(int input) {
    if(input > 10) {
        return "Good";
    } else{
        return "Bed";
    }
}

삼항연산자를 사용하는 경우 if-else문을 사용한 경우보다 코드의 길이가 짧다. 삼항연산자를 모르는 경우 코드의 의미를 유추하기 위해 고민을 해야 한다. 반면 if-else문으로 짜인 코드는 이해하는데 큰 어려움이 없다. 위 예시는 간단한 예지만, 로직이 복잡한 코드의 경우 가독성이 떨어지면 이해를 위해 더 많은 시간을 사용해야 할 것이다. 코드를 읽고 이해하는 것 역시 프로그래밍을 하는것과 마찬가지로 매우 중요하기 때문에 프로그래밍 언어의 가독성이 높다는 점은 중요한 장점이다.

 

2. 실용성

코틀린은 기존 여러 프로그래밍 언어들에 의해 검증된 방법을 채택하여 만들었다. 따라서 기존 프로그래밍 언어들을 통해 불필요한 부분을 최소화 하여 언어를 더 간결하게 만들었다. 앞서 "Hello, world!!" 예제 코드를 통해 보았지만 코틀린은 정말 간결하다.

개인적으로 코틀린에 대한 설명중 마음에 드는 문구이다.

코틀린은 연구를 위한 언어가 아니다. (중략) 이미 성공적으로 검증된 해법과 기능에 의존한다.

위 문구를 보면 여러 언어들의 장점만 골라와 만든 언어라는 느낌이 들지 않는가?

 

3. 안정성

프로그래밍 언어가 안전하다는 말은 프로그램에서 발생할 수 있는 오류 중에서 일부 유형의 오류를 프로그램 설계가 원천적으로 방지해준다는 뜻이다.

코틀린은 오랜 기간 검증된 JVM에서 실행함으로서 상당한 안정성을 보장한다. 추가적으로 실행시 자주 오류를 발생시키는 null과 형 변환(cast)에 대해서도 안전성을 보장한다.

  • null에 의해 발생하는 오류를 방지하기 위해 기본적으로 변수는 null값을 가질 수 없도록 설계되었다. (그렇다고 null을 사용할 수 없는 것은 아니다. 이에 대해서는 나중에 알아보겠다.)
  • 형 변환(cast)에 대해서도 안정성을 보장한다. 형 변환시 타입 검사를 하지 않으면 오류가 발생하도록 설계되어 있는데, 이는 잘못된 타입으로 형 변환하여 오류가 나는것을 방지한다. 매번 타입 검사를 하는 코드를 짜는 것은 귀찮은데, 코틀린은 간결성을 위해 타입 검사시 자동으로 형 변환까지 되게 하여 간결성을 유지한다.

 

4. 상호운용성

상호운용성과 관련해 자바 프로그래머들이 던지는 첫 번째 질문은 아마도 "기존 라이브러리를 그대로 사용할 수 있느냐?"일 것이다. 코틀린의 경우 그에 대한 답은 "물론 그렇다"이다.

자바 코드를 코틀린에서 사용할 수 있으며, 자바에서 코틀린 코드를 사용할 수 있다. 이는 기존에 자바로 짜인 많은 코드들을 그대로 이용하면서 코틀린을 도입할 수 있음을 의미한다. 사용 언어를 자바에서 코틀린으로 바꾼다고 전체 코드를 새로 짤 필요가 없다!

 

 

오늘은 왜 코틀린을 배우는지 알아보기 위해 코틀린의 장점에 대해 알아보았다.
기존에는 자바를 주로 사용했었는데, 코틀린의 간결성과 자바 코드와 상호운용성을 보고 코틀린을 공부하게 되었다.
잠깐 사용해 보았지만 정말 편하다.

 

이 글은 Kotilin in action을 참고하여 작성하였습니다.

Kotlin in Action
국내도서
저자 : 드미트리 제메로프(Dmitry Jemerov),스베트라나 이사코바(Svetlana Isakova) / 오현석역
출판 : 에이콘출판사 2017.10.31
상세보기