관리 메뉴

오늘도 더 나은 코드를 작성하였습니까?

1장 - 코틀린이란 무엇이며, 왜 필요한가? 본문

kotlin in action (2nd edtion)

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

hik14 2025. 9. 28. 21:54

kotlin In Action 2end Edition을 학습후 중요한 부분과 기억해야될 부분을 기록합니다.

 

1.1  코틀린 맛보기.

data class Person( // 데이터 클래스
    val name: String, // read only 프로퍼티
    val age: Int? = null // null이 가능한 타입과 파라미터 기본값
)


fun main(){ // 최상위 함수
    val persons = listOf(
        Person("영희", age= 29), // 이름 붙은 파라미터
        Person("철수"), // 트레일링 콤마
    )

    val oldest = persons.maxBy { // 람다식
        it.age ?: 0 // null값에 적용된 엘비스 연산자
    }
    println("가장 나이가 많은 사람:$oldest") //문자열 템플릿
}

 

1.2 코틀린의 주요 특성.

코틀린은 다중 패러다임 언어.

- 정적 타입 지정 언어

- 객체지향 언어

- 함수형 언어

- 코루틴의 구조화된 동시성

 

타입지정 언어

  1. 프로그램의 모든 식(express)의 타입을 컴파일 시점에 알수있다. (런타임중에 버그가 일어나 프로그램이 중단되지 않음)
  2. 컴파일러가 문맥을 고려해 변수타입을 결정하는 타입추론 기능
  3. 코틀린이 "널이 될 수 있는 타입 지원" 하여 "널 포인터 예외가 발생"하는지 여부를 컴파일 시점에 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.  

함수형 프로그래밍과 객체지향 프로그래밍의 조합

 

함수형 프로그램의 핵심 구성요소.

  1. first-class function
    • 함수를 일반적인 값 처럼 다룰수 있음(변수에 저장, 인자로 전달, 함수를 반환) 람다, 멤버참조.. 
  2. immutability(불변성)
    • 생성후 내부 상태가 절대로 변경되지 않는 객체를 사용함.(data class)
  3. side-effect 없음
    • 입력이 같으면 항상 같은 결과반환
    • 다른 객체의 상태를 변경하지 않으며 함수 외부환경에 상호작용하지 않는 순수함수(.filter{ ... } .map{ ... } .sortedBy{ ... })

함수형 프로그램 장점

  1. 코드중복을 피할수있음
  2. 안전한 동시성
  3. 테스트의 용이성

코루틴을 이용한 동시성과 비동기코드의 구조적 사용

 

suspendable computation (일시 중단 가능한 계산)

- 코드가 자신의 실행을 잠시 중단시켰다가 나중에 작업을 계속 수행할 수 있다.

suspend fun processUser(credentials: Credentials){
    val user = authenticate(credentials)
    val data = loadUserData(user)
    val profilePicture = loadImage(data.imageID)
	...
}

suspend fun authenticate{ ... }

suspend fun loadUserData{ ... }

suspend fun loadImage{ ... }

 

3개의 네트워크 요청은 순서대로 실행되며, processUser 함수의 실행은 일시 중단되고 결과를 기다리게 된다.

핵심은 이 코드가 실행되면서 스레드는 블록되지 않는다는 것이다.

 

1.3 코틀린이 자주 쓰이는 분야 

- 1.3.1  백앤드 

- 1.3.2 안드로이드

- 1.3.3 다중플랫폼.

 

1.4 코틀린의 철학

1.4.1 코틀린은 실용적인 언어다.

- 실제문제를 해결하기 위해 만들어진 언어

 

1.4.2 코틀린은 간결한다

- 개발자는 새로운 코드를 작성하는 시간보단, 기존 코드를 읽는 시간이  더 길다.

- 코드의 의미를 최대한 전달하고 프로그램 언어가 요구하는 구조를 만족시키기 위한 요소를 줄임

(여러가지 번거로운 준비 코드 암시적 제공, 강력한 타입추론 등)

- 기능이 풍푸한 표준 라이브러리 제공.

 

1.4.3 코틀린은 간결한다

- 프로그램에서 발생할 수 있는 오류중에서 일부 유형의 오류를 프로그램 설계가 원칙적으로 방지해 준다.

 

JVM에서 실행 --> 메모리 안정성을 보장. 버퍼 오버플로 방지. 동적 할당 메모리 잘못 사용에 대한 문제 예방.

타입지정 언어 --> 타입 안정성을 보장

불변변수 및 불변클래스(데이터 클래스) --> 다중 스레드 어플리 케이션에서 안정성 

널포인터 예외를 없애기 위한 많은 제공.

타입케스팅 예외를 방지 예외 is (타입 검사 와 케스트)를 한번에 수행. 

 


1.4.4 코틀린은 상호운용성이 좋다. 

- 자바와 코틀린 소스 파일을 자유롭게 내비게이션 할 수 있다.

- 코틀린은 자바와 코틀린 소스 파일이 섞여 있어도, 각 소스 파일 사이의 관꼐가 어떤 식으로 이뤄지든 상관없이 컴파일이 가능하다. 

 

1.5 코틀린 도구 사용

- https://play.kotlinlang.org/