티스토리 뷰

Kotlin

[Kotlin] 코틀린이란

woo'^'chang 2022. 11. 30. 14:38

코틀린(Kotlin)은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어입니다. 자바 코드와 상호운용성을 중요하게 여기기에 자바 라이브러리나 프레임워크와 함께 잘 동작하며 성능도 자바와 같은 수준입니다. 자바가 사용 중인 곳이라면 거의 코틀린을 활용할 수 있기에 서버 개발, 안드로이드 앱 개발 등에서 사용하고 있습니다.

코틀린의 주요 특성

코틀린은 간결하고 실용적이기에 자바가 사용되고 있는 모든 용도에 생산적이고 안전한 대체 언어가 될 수 있습니다. 예를 들면 웹 애플리케이션의 백엔드 서버상의 코드나 모바일 애플리케이션 개발에 사용될 수 있습니다. 그뿐 아니라 코틀린이 정한 영역은 광범위하므로 여러 다른 환경에서도 작동하도록 하는데 자바스크립트로도 컴파일할 수 있다고 합니다.

정적 타입 지정 언어

정적 타입 지정 언어는 프로그램 구성 요소 타입을 컴파일 시점에 알 수 있고 컴파일러가 타입을 검증해주는 언어를 의미합니다. 타입에 대한 검증이 런타임에 일어나는 동적 타입 지정 언어와는 다릅니다.

 

코틀린도 자바와 마찬가지로 정적 타입 지정 언어인데 모든 변수의 타입을 직접 명시할 필요가 없습니다. 코틀린 컴파일러가 컨텍스트를 미리 읽어 타입을 추론할 수 있기에 타입 선언 생략이 가능합니다. 이를 타입 추론이라고 합니다.

 

정적 타입 지정 언어의 장점은 다음과 같습니다.

  • 성능 : 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없기에 메서드 호출이 더 빠릅니다.
  • 신뢰성 : 컴파일러가 검증 역할을 수행하기에 프로그램 오류 가능성이 적습니다.
  • 유지 보수성 : 다루는 객체가 어떤 타입인지 알 수 있기에 다루기 쉽습니다.
  • 도구 지원 : 정적 타입 지정으로 인해 안전하게 리팩토링할 수 있고 코드 완성 기능, IDE의 다른 기능도 지원받을 수 있습니다.

함수형 프로그래밍

자바 8부터 함수형 프로그래밍을 지원한 자바와 달리 코틀린은 처음부터 함수형 프로그래밍을 풍부하게 지원해 왔습니다. 함수형 프로그래밍의 핵심 개념은 아래와 같습니다.

  • 일급 시민 함수 : 함수를 변수에 저장할 수 있고, 함수를 다른 함수에 매개변수로 전달할 수 있으며 함수에서 새로운 함수를 만들어서 반환할 수 있습니다.
  • 불변성 : 함수형 프로그래밍에서는 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해서 프로그램을 작성합니다.
  • 부수 효과 없음 : 함수형 프로그래밍에서는 입력이 같으면 항상 출력이 같고 내부적으로 외부의 값과 상호작용하지 않는 순수 함수를 사용합니다.

함수형 프로그래밍은 다음과 같은 장점이 존재합니다.

  1. 간결성 : 함수를 값처럼 사용할 수 있기에 간결하고 우아하며, 코드의 중복을 막을 수 있습니다.
  2. 안전성 : 불변성을 기본으로 하고 있기에 멀티스레드 환경에서 복잡한 동기화를 적용하지 않아도 됩니다.
  3. 테스트 : 순수 함수를 사용하기에 독립적으로 테스트하기 쉽습니다.

무료 오픈소스

코틀린 언어와 컴파일러, 라이브러리 및 코틀린과 관련된 모두 도구는 모두 오픈소스이며, 어떤 목적에든 무료로 사용할 수 있습니다. 또한 아파치 2.0 라이선스를 가지고 있는데 이 라이선스는 소스 코드 공개 의무가 존재하지 않으며, 상업적 이용에 제한을 두고 있지도 않습니다. 그렇기에 코틀린을 사용해 만들어진 프로그램은 소스 코드를 공개하지 않고 상업적으로 이용해도 괜찮습니다.

안정성

코틀린은 NullPointerException을 없애기 위해 노력합니다. 실행 시점에 NPE이 발생할 수 있는 연산을 사용하는 코드를 금지합니다. 어떤 타입이 null이 될 수 있는지를 표시하기 위해서는 오직 ? 한 글자만 추가하면 됩니다.

'Kotlin' 카테고리의 다른 글

[Kotlin] 코틀린 시퀀스 (sequence)  (0) 2024.03.30
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Total
Today
Yesterday