-
[Kotlin] 코틀린이란Kotlin 2021. 4. 2. 10:22반응형
1. 대상 플랫폼 : 자바가 실행되는 모든 곳
코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
주로 자바가 많이 사용되는 백엔드, 안드로이드 app에서 주로 쓰인다.
2. 특징
- 정적 타입 지정 언어
자바와 마찬가지로 정적 타입 지정 언어다.
코틀린은 타입 추론을 지원하므로 정적 타입 지정 언어에서 타입을 직접 선언해야 하는 불편함이 사라진다.
정적 타입 지정 언어는 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고
프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다.
정적 타입 지정 언어의 특징은 다음과 같다.- 성능 - 실행 시점에 어떤 메소드를 호출할지 찾는 과정이 필요 없으므로 메소드 호출이 빠르다.
- 신뢰성 - 컴파일러가 프로그램의 정확성을 검증하므로 실행 시 프로그램이 오류로 중단될 가능성이 적다.
- 유지 보수성 - 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 쉽다.
- 도구 지원 - 더 안전하게 리팩토링 할 수 있고, 더 정확한 코드 완성 기능을 제공할 수 있다
- 함수형 프로그래밍
코틀린은 함수 타입을 지원한다.
함수형 프로그래밍의 핵심 개념
더보기1. 일급 시민 함수- 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달 할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다.
val test = fun() { println("test") }
2. 불변성 - 일단 만들어지면 내부 상태가 불변 객체를 사용해 프로그램을 작성한다.
3. 부수 효과 없음 - 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나
다른 바깥 환경과 상호 작용하지 않는 순수 함수를 사용한다.
함수형 프로그래밍의 특징
더보기- 간결성 - 함수를 값처럼 활용하여 추상화를 더 강력하게 할 수 있고 코드 중복을 막을 수 있다.
- 다중 스레드 안전 - 적절한 동기화 없이 같은 데이터를 여러 스레드가 변경하는 경우 문제가 많이 생긴다.
하지만 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 같은 데이터를
여러 스레드가 변경 할 수 없다. 그러므로 다중 스레드를 사용할때 안전하게 사용 할 수 있다. - 테스트 용이 - 부수 효과가 있는 함수는 그 함수를 실행 할 때 환경을 구성하는 준비 코드가
따로 필요하지만, 순수 함수는 준비 코드 없이 독립적으로 테스트 할 수 있다.
코틀린은 함수형 스타일로 프로그램을 짤 수 있게 다음과 같은 지원을 해준다.
더보기- 함수 타입을 지원하여 함수에서 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환 할 수 있다.
- 람다 식을 지원하여 준비 코드를 작성하지 않아도 코드 블록을 쉽게 정의하고 전달 할 수 있다.
- 데이터 클래스를 지원하여 불변적인 값 객체를 간편하게 만들 수 있다.
- 코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API를 제공한다.
3. 철학
- 실용성
더보기- 코틀린은 실제 문제를 해결하기 위해 만들어진 실용적인 언어다.
- 다른 프로그래밍 언어가 채택한 이미 검증된 해법과 기능에 의존한다.
이로 인해 언어의 복잡도가 줄어들고 기존 개념을 통해 쉽게 배울 수 있다.
- 특정 프로그래밍 스타일이나 패러다임을 사용할 것을 강제하지 않는다. - 간결성
더보기- 자바의 게터, 세터등 여러 가지 준비 코드를 묵시적으로 제공한다.
- 람다를 지원하여 반복되거나 길어질 수 있는 코드를 작은 코드 블록으로 대체 할 수 있다. - 안정성
더보기- 애플리케이션의 타입 안전성을 보장하면서 자바보다 더 적은 비용으로 타입 안전성을 사용할 수 있다.
- 실행 시점에 오류를 발생시키는 대신 컴파일 시점 검사를 통해 오류를 더 많이 방지해준다.
- 타입 시스템은 null이 될 수 없는 값을 추적하며, 실행 시점에 NullPointerException이 발생할 수 있는
코드를 금지 한다. - 상호운용성
더보기- 라이브러리가 어떤 API를 제공하던 활용할 수 있다.
- 자바와 코틀린 코드를 원하는 대로 섞어 쓸 수 있다.
반응형'Kotlin' 카테고리의 다른 글
[Kotlin] 람다 (0) 2021.03.29 [Kotlin] 스트림 함수(2) (0) 2019.10.17 [Kotlin] 스트림 함수(1) (0) 2019.10.17 [Kotlin] for문 (0) 2019.09.27 [Kotlin] 자료형 (0) 2019.09.27 - 정적 타입 지정 언어