[Kotlin in Action] 1. 코틀린이란 무엇이며, 왜 필요한가? (부제 : 코드없는 coroutine)

akim·2022년 10월 5일
0

Kotlin in Action

목록 보기
2/12
post-thumbnail

Kotlin in Action의 1장에서는 코틀린의 기본 기능과 특성, 활용 분야, 장점 등에 대해 다룬다.
사실 이 내용은 Kotlin에 대해 구글링 몇 번만 해보면 알 수 있는 내용들이다.
따라서 1장은 책 내용을 기반으로 하기 보다는 내가 생각하는 Kotlin의 장점에 대해 정리해보며 시작하려고 한다.

Kotlin을 접해본 사람이라면 널(null) 안정성에 대해 한 번쯤은 들어봤을 것이다.
그래서 나도 자연스럽게 Kotlin의 nullability에 대해 도입부에서 다뤄보려고 했으나, 이미 이 책의 6장에서 아주 자세하게 다루고 있는 것을 깨달았다.

그래서 책에서 다루지 않는 내용을 찾다가 본편이 아닌 부록에서 coroutine을 다루는 것을 발견했다.

부록의 내용에 덧붙여 Android 공식문서, Kotlin 공식문서등을 참고하여 coroutine의 개념에 대해 간략하게 도입부에서 정리하며 Kotlin에 한 층 더 친숙해져보기로 했다. 그러기에는 다소 어려운 내용이지만...



위 영상에서는 친절하게 Kotlin의 coroutine에 대해 설명해준다.
그러나 영어다!
그리고 코드를 기반으로 설명한다!
1장부터 다루기에는 헤비한 내용이 맞았다...~

그래서 코드 없이, Kotlin을 모르는 사람들도 누구나 쉽게 코루틴을 이해할 수는 없을까 하는 생각에 코드없는 coroutine 을 주제로 간략하게나마 정리해보고자 한다.

Coroutine이란?

coroutine하면 어떤 것들이 연상되는가?
MainRoutine 과 SubRoutine을 떠올렸다면 당신은 진정한 개발자다. (?)

MainRoutine이 SubRoutine을 호출하면 진입 시점부터 코드를 실행하다가 return문을 만나는 시점에 해당 SubRoutine을 탈출하게 된다.

즉, SubRoutine은 진입 시점과 탈출 시점이 명확하게 하나씩 정의되어 있는 루틴이다.

그러나 coroutine의 경우는 조금 다르다.
coroutine에 대해 Kotlin 공식 문서에서는 이렇게 설명하고 있다.

A coroutine is an instance of suspendable computation.

즉, 언제든 일시중단 가능한, 탈줄 시점이 한 개가 아닌 routine이라고 할 수 있다.
이러한 특징은 coroutine의 큰 장점이라고 할 수 있는데, 바로 동시성 프로그래밍을 스레드보다 효율적으로 가능하게 하기 때문이다.

Coroutine과 동시성 프로그래밍

스레드는 일종의 프로세스 실행 단위이고, 동시성 프로그래밍을 위해 멀티 스레딩을 하려면 context switching이 필요하다.
쉽게 말해 여러 개의 스레드를 이용해 동시성 프로그래밍을 하게 될 경우 이 스레드에서 한 번, 저 스레드에서 한 번, 점유했다, 놓아줬다, 왔다 갔다를 계속 반복해야 한다는 것이다.

하지만 coroutine을 이용하면 이러한 동시성 프로그래밍을 좀 더 효율적으로 할 수 있다.
앞서 말했듯, coroutine도 일종의 routine이다.
따라서 하나의 스레드 내부에서 그냥 routine만 옮겨다니며 동시성 프로그래밍을 할 수 있게 되는 것이다.

Kotlin과 Coroutine

이렇듯 coroutine 자체는 언뜻봐도 너무 좋은 개념이지만 언어에 따라 coroutine을 지원하지 않는 경우도 있다... (지원 언어 목록 참고)
Kotlin의 경우는 특정 coroutine을 언어가 지원하는 형태는 아니고 coroutine을 구현할 수 있는 기본 도구를 언어가 제공하는 형태다.
또한 1.3부터는 설치만 하면 별도의 설정 없이도 coroutine 지원 기본 기능들을 사용할 수 있게 되었다.
Kotlin에서 coroutine을 어떻게 구현하는 지에 대해서는 Kotlin을 제대로 공부한 후에 더 깊이있게 알아볼 계획이다.


코틀린 이해에 도움이 될 만한 공식 자료들 (아래 내용을 참고하여 작성하였습니다.)

공식 자료들은 다 영어다. 영어공부 하자.

profile
학교 다니는 개발자

0개의 댓글