728x90
코틀린의 주요 특성
- 코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도, 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
- 코틀린의 활용할 수 있는 가장 일반적인 영역
- 서버상의 코드(웹 애플리케이션의 백엔드)
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
- 자바뿐 아니라 자바스크립트로도 코틀린을 컴파일할 수 있다.
- 코틀린 코드를 브라우저, 노드에서 실행할 수 있다.
- 코틀린은 어느 한 문제 영역만을 해결하거나 소프트웨어 개발이 처한 어려움 중 일부만을 다루기 위한 언어가 아니다.
- 코틀린은 개발과정에서 수행해야 하는 모든 과업에 있어 폭넓게 생성성을 향상해준다
- 코틀린은 구체적인 영역의 문제를 해결하거나 특정 프로그래밍 패러다임을 지원하는 여러 라이브러리와 잘 융합된다.
코틀린의 언어적인 특성
코틀린은 정적 타입 지정 언어이다
- 정적 타입 지정 : 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 프로그램 안에서 객체의 필드, 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다.
- 장점
- 성능 : 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠르다.
- 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어진다.
- 유지 보수성 : 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다.
- 도구 지원 : 더 안전하게 리팩토링 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE의 다른 지원 기능도 더 잘 만들 수 있다.
- 장점
- 동적 타입 지정 언어와는 차이점이 있다.
- 동적 타입 지정 언어에서는 타입과 관계없이 모든 값을 변수에 넣을 수 있고, 메서드나 필드 접근에 대한 검증이 실행 시점에 일어나며, 코드도 짧아지고, 데이터 구조를 유연하게 가지고 갈 수 있다.
- 반대로, 이름을 잘못 입력하는 등의 실수도 컴파일 시 걸러내지 못하고 실행 시점에 오류가 발생한다.
- 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요 없다.
- 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추한다.
- 컴파일러가 문맥을 고려해 변수 타입을 결정하는 것을 타입 추론이라고 부른다.
- 코틀린은 타입 추론을 지원하므로 정적 타입 지정 언어에서 프로그래머가 직접 타입을 선언해야 함에 따라 생기는 불편함이 대부분 사라진다.
- 코틀린은 날이 될 수 있는 타입을 지원한다
- 컴파일 시점에 널 포인터 예외가 발생할 수 있는지 여부를 검사할 수 있어 프로그램의 신뢰성을 높일 수 있다.
코틀린은 함수 타입에 대한 지원을 한다.
- 함수형 프로그래밍의 핵심 개념
- 일급 시민인 함수 : 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다.
- 불변성 : 함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.
- 부수 효과 없음 : 입력이 같으면 항상 같은 출력을 내놓고, 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수를 사용한다.
- 함수형 스타일로 프로그램을 작성하면서 얻을 수 있는 이점
- 간결성
- 함수형 코드는 그에 상응하는 명령형 코드에 비해 더 간결하며, 우아하다.
- 순수 함수를 값처럼 활용하면, 더 강력한 추상화를 할 수 있고, 강력한 추상화를 통해 코드 중복을 막을 수 있다.
- 다중 스레드를 사용해도 안전하다.
- 다중 스레드 프로그램에서는 적절한 동기화 없이 같은 데이터를 여러 스레드가 변경하는 경우 가장 많은 문제가 생긴다.
- 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면, 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다.(복잡한 동기화 사라짐)
- 테스트가 쉽다.
- 부수 효과가 있는 함수는 실행할 때, 전체 환경을 구성하는 준비 코드가 필요하지만, 순수 함수는 준비 코드 없이 독립적으로 테스트할 수 있다.
- 간결성
- 코틀린은 처음부터 함수형 프로그래밍을 풍부하게 지원해왔다.
- 함수 타입을 지원함에 따라 어떤 함수가 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환할 수 있다.
- 람다식을 지원함에 따라 번거로운 준비 코드를 작성하지 않아도 코드 블록을 쉽게 정의하고 전달할 수 있다.
- 데이터 클래스는 불변적인 값 객체를 간편하게 만들 수 있는 구문을 제공한다.
- 코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API를 제공한다.
- 코틀린은 함수형 스타일로 프로그램을 짤 수 있게 지원하지만 강제하지는 않는다.
무료 오픈소스
- 코틀린 언어와 컴파일러, 라이브러리 및 관련된 모든 도구는 모두 오픈소스며, 어떤 목적에든 무료로 사용 가능하다.
- 개발은 깃허브를 통해 이뤄지고 있으며, 코틀린 프로그래밍 커뮤니티의 기여에 대해 열려있다.
- 코틀린 애플리케이션을 개발하고 싶은 경우, IntelliJ 커뮤니티 에디션, 안드로이드 스튜디오, 이클립스 같은 오픈소스 IDE를 활용해 개발할 수 있다.
728x90
'KotlinInAction > 코틀린이란 무엇이며, 왜 필요한가' 카테고리의 다른 글
| 코틀린 도구 사용 (0) | 2022.07.25 |
|---|---|
| 코틀린 철학 (0) | 2022.07.25 |
| 코틀린 응용 (0) | 2022.07.25 |