-
[Kotlin] 코틀린이란 무엇이고 왜 필요할까Computer Science/Kotlin 2021. 1. 17. 00:55
코틀린의 목적은 무엇인가
- 현재 자바가 사용되고 있는 모든 용도에 더 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것
- 자바 대신에 코틀린을 도입하면 더 적은 코드로 더 편하게 프로그래머의 목표를 달성할 수 있음
- 코틀린은 서버 사이드, 안드로이드 앱, 데스크탑 앱, ios 등 여러 분야에서 폭넓게 활용할 수 있음
- 자바와 거의 대부분 호환 가능함
정적 타입 지정 언어
- 자바와 마찬가지로 코틀린도 정적 타입 지정 언어(Statically typed)
- 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다
- 코틀린에서는 자바와 달리 타입 추론 기능이 있기 때문에 타입 선언을 생략해도 됨
정적 타입 지정 언어의 장점
- 실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠름
- 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어짐
- 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉬움
코틀린 타입 시스템의 차이
- 코틀린은 널이 될 수 있는 타입을 지원함
- nullable type을 지원함에 따라 컴파일 시점에 널 포인터 예외가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있음
- 함수 타입을 지원함
함수형 프로그래밍과 객체지향 프로그래밍
함수형 프로그래밍의 핵심 개념
- First-class 함수
- 함수를 일반 값처럼 다룰 수 있음. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있음
- 불변성
- 함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 별변 객체를 사용해 프로그램을 작성
- Side effect 없음
- 함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수를 사용함
함수형 스타일로 작성했을 때 장점
- 간결성, 더 강력한 추상화를 사용해 코드 중복을 막을 수 있음
- 다중 스레드를 사용해도 안전함
- 불변 데이터 구조를 사용하고 순수 함수를 데이터 구조에 적용하면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없음
- 테스트가 쉽다
→ 코틀린으로 작성할 때는 객체지향과 함수형 접근 방법을 함께 조합해서 문제에 가장 적합한 도구를 사용할 수 있다.
코틀린의 철학
실용성
- 실제 문제를 해결하기 위해 만들어진 언어
간결성
- 자바보다 코드를 훨씬 짧고 간결하게 작성할 수 있음
안전성
- 애플리케이션의 타입 안전성을 보장함
상호운용성
- 자바의 기존 라이브러리들을 그대로 사용할 수 있음
- 자바에서 코틀린 코드를 호출할 수 있고, 자바와 코틀린 코드를 프로젝트에서 원하는대로 섞어 쓸 수 있음
- 자바 메소드를 리팩토링해도 그 메소드와 연관 있는 코틀린 코드까지 제대로 변경됨
'Computer Science > Kotlin' 카테고리의 다른 글
[Kotlin] 함수 정의와 호출 (0) 2021.01.19 [Kotlin] 코틀린 기초 - 반복문 (0) 2021.01.17 [Kotlin] 코틀린 기초 - 제어문 (0) 2021.01.17 [Kotlin] 코틀린 기초 - 클래스, 프로퍼티 (0) 2021.01.17 [Kotlin] 코틀린 기초 - 함수, 변수 (0) 2021.01.17