참고
Kotlin을 왜 사용하는가?
NOTE
코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어이다.
data class Person(
val name: String,
val age: Int? = null
)
fun main(args: Array<String>) {
val person = listOf(
Person("Alice"),
Person("Bob", age=29) // 이름이 붙는 파라미터
)
val oldest = persoms.maxBy { it.age ?: 0} // 람다식과 엘비스 연산자
println("The oldest is: $oldest"} // 문자열 템플릿
}
Kotlin
복사
간단한 코틀린 코드
코틀린의 주요 특성
NOTE
대상 플랫폼 ⇒ 자바가 지원하는 모든 플랫폼
코틀린의 주요 목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것입니다. 코틀린을 활용할 수 있는 가장 일반적인 영역은 다음과 같습니다.
•
서버 상의 코드
•
안드로이드 디바이스의 코드
단순히 자바뿐만 아니라, 자바스크립트도 코틀린으로 컴파일할 수 있으며, 코틀린 코드를 웹 브라우저나 노드에서 실행할 수 있습니다.
정적 타입 지정언어 (타입추론)
자바와 동일하게 정적 타입 지정 언어이지만, Kotlin은 컴파일러가 문맥에서 변수 타입을 자동으로 유추해주기 때문에 프로그래머가 타입 선언을 생략할 수 있습니다.
var x = 1 // x를 정수(Int) 값으로 초기화합니다.
Kotlin
복사
정적 타입 지정의 장점은 다음과 같습니다.
•
성능: 실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 필요 없으므로 호출이 빠릅니다.
•
신뢰성: 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 오류로 인한 중단 가능성이 적습니다.
•
유지 보수성: 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있습니다.
•
도구 지원: 안전한 리팩토링과 정확한 코드 완성을 지원할 수 있습니다.
함수형 프로그래밍과 객체지향 프로그래밍
NOTE
함수형 프로그래밍의 핵심 개념은 다음과 같다!
•
일급 함수
◦
함수를 변수처럼 다룰 수 있습니다.
◦
함수를 변수에 저장하거나, 다른 함수에 인자로 전달하거나, 새로운 함수로 반환할 수 있습니다.
•
불변성
◦
함수형 프로그래밍은 불변 객체를 사용하여 프로그램을 작성합니다.
•
부작용 없음
◦
함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 반환하며, 다른 객체의 상태를 변경하지 않고 외부 환경과 상호작용하지 않는 순수 함수를 제공합니다.
그러면 코틀린은 어떻게 함수형 프로그래밍을 지원하는 걸까요?
•
함수 타입을 지원하여 함수를 파라미터로 받거나 반환할 수 있습니다.
•
람다 식을 지원하여 코드 블록을 쉽게 정의하고 전달할 수 있습니다.
•
데이터 클래스를 사용하여 불변적인 값 객체를 간편하게 만들 수 있습니다.
•
코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다루는 API를 제공합니다.
◦
함수를 일반 값(변수)처럼 다룰 수 있다.
◦
함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 새로운 함수로 만들어서 반환할 수 있다.