Beeeam

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

Kotlin

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

Beamjun 2023. 7. 5. 17:11

Kotlin In Action 책을 읽고 작성한 글 입니다.

 

Kotlin in Action - YES24

코틀린이 안드로이드 공식 언어가 되면서 관심이 커졌다. 이 책은 코틀린 언어를 개발한 젯브레인의 코틀린 컴파일러 개발자들이 직접 쓴 일종의 공식 서적이라 할 수 있다. 코틀린 언어의 가장

www.yes24.com

 

코틀린?

자바 플랫폼에서 동작하는 언어이다. 자바가 사용되는 곳에서는 거의 대부분 활용할 수 있다. ex) 안드로이드, 서버 개발

정적 타입 지정 언어

정적 타입 지정: 프로그램의 모든 요소의 타입을 컴파일 시점에서 알 수 있고, 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻이다. 정적 타입 지정 언어에서는 변수의 타입을 명시적으로 지정해줘야 한다. ex) String name = “Beeeam”

동적 타입 지정?
 정적 타입 지정의 반대 개념으로 검증이 
런타임 시점
에서 일어난다. 변수의 타입을 명시적으로 지정하지 않아도 되기 때문에 더 유연한 코딩이 가능하다.

코틀린정적 타입 지정 언어이지만 컴파일러가 타입 추론을 할 수 있기 때문에 변수의 타입을 명시적으로 지정하지 않아도 된다!

성능, 신뢰성, 유지 보수, 도구 지원 측면에서 장점을 가진다.

Nullable type

코틀린은 Null이 될 수 있는 타입을 지원한다. 컴파일 시점에서 Null Pointer Exception 발생 검사를 하여 프로그램의 신뢰성을 높인다.

안드로이드 앱을 개발해서 테스트를 하다보면 ‘프로세스가 중단됨’ 이라는 대화 상자를 많이 볼 수 있다. 이는 처리 되지 않은 예외가 발생하기 때문에 나타나는데 주로 Null Pointer Exception 때문이다. 자바에서 NPE가 발생하는 코드를 코틀린에서 실행하면 컴파일 자체가 안되는데 이러한 점 때문에 코틀린을 사용하면 사용자에게 더 신뢰성 있는 앱을 제공할 수 있다.

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

→ 함수를 인자로 사용 가능, 람다 식 지원, 데이터 클래스 지원

 

함수형 스타일로 작성했을 때 장점

  1. 코드가 간결하다. (함수를 변수처럼 사용하여 추상화를 할 수 있기 때문)
  2. 다중 스레드를 사용해도 안전하다. (불변 객체를 사용하여 여러 스레드가 동일한 데이터를 변경하는 것을 막기 때문)
  3. 테스트에 용이

코틀린의 철학

  • 실용성
  • 간결성 → 코드를 더 간단하고, 간결하게!
  • 안전성 → 예외를 컴파일 시점에서 잡을 수 있도록 노력! ex) NPE
  • 상호운용성 → 코틀린과 자바를 섞어서 사용 가능!

내 생각

1장에서는 코틀린이 어떤 것인지에 대한 설명이 많은 것 같다. 자바를 기반으로 만들어서 그런지 대부분의 설명을 자바와 비교하면서 하였다. 자바보다 코드가 간결하고, 안전하다는 것을 강조를 많이 한다는 느낌을 받았다. 그리고 정적 타입 지정 언어이지만 타입 추론 기능 때문에 변수의 타입을 명시적으로 정의 하지 않아도 되는 점은 인상적 이였다. 추가적으로 본인은 안드로이드에서만 사용하지만 이를 백엔드 분야에서도 사용할 수 있는 것도 인상적이였다. 백엔드 = 자바로 생각하고 있었는데 이번 장을 읽으면서 나의 시야가 많이 좁았다는 것을 느꼈다.

본인은 처음 안드로이드 개발을 자바로 시작을 했다가 코틀린으로 넘어와서 두 언어를 모두 사용해봤는데 코틀린이 자바보다 코드가 더 간결하다는 것은 많이 느끼고 있었다. 사소한 것이지만 변수마다 타입을 지정하지 않아도 되는 것도 굉장히 편하고, 람다 식을 사용하여 더 보기 좋은 코드를 작성할 수 있는 점에서 코틀린이 자바보다 더 좋다고 생각한다. 추가적으로 Nullable Type을 지원해서 null에 대한 처리도 편리하고, 많은 NPE를 컴파일 시점에서 잡아주기 때문에 안전하다고 생각한다.