티스토리 뷰

반응형

코틀린의 특성

특성 1: 대상 플랫폼 - 서버, 안드로이드 등 자바가 실행되는 모든 곳

 코틀린의 주목적은 자바가 실행되고 있는 곳에 적합하고 간결하고 생산적이며 안전한 언어를 제공하는 곳이다. 자바는 Spring 같은 백엔드나 안드로이드의 모바일 애플리케이션을 제작하는 데 사용되는데 코틀린은 자바의 역할을 대체해 줄 수 있다.

 

특정 2: 정적 타입 지정 언어

 자바와 마찬가지로 코틀린도 정적 타입(statically typed) 지정 언어이다. 정적 타입의 특징은 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 객체의 필드나 메서드를 사용할 때 컴파일러가 타입을 검증해준다.

 자바 10부터 자바도 var 키워드를 사용해서 변수의 타입을 명시할 필요가 없다. 코틀린도 자바 var과 같이 코틀린 컴파일러에 의해서 변수 타입을 자동으로 유추해준다. 따라서 타입을 생략해도 된다. 컴파일러가 문맥을 고려해 변수 타입을 결정하는 기능을 타입 추론(type inference)라고 부른다.

 

정적 타입 지정의 장점

▪︎ 성능: 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠르다

▪︎ 신뢰성: 컴파일러가 프로그램의 정확성을 검증하기 때문에 런타입에 프로그램이 중단될 가능성이 감소한다

▪︎ 유지 보수성: 객첵가 어떤 타입에 속하는지 코드 자체로 알 수 있기 때문에 코드를 다룰 때도 더 쉽다

▪︎ 도구 지원: 리팩토링이 더 안전해지고, 코드 완성 기능도 더 정확해지며, IDE가 지원하는 기능들을 잘 활용할 수 있다

 

특성 3: 함수형 프로그래밍과 객체지향 프로그래밍

함수형 프로그래밍의 핵심 개념

▪︎ 일급 시민(first-class)인 함수: 함수를 일반 값처럼 다룰 수 있다. 함수를 다른 함수에 인자로 전달할 수 있고, 함수가 새로운 함수를 생성해서 반환할 수 있다.

▪︎ 불변성: 생성되면 상태가 변하지 않는 불변 객체를 사용해 프로그램을 작성한다.

▪︎ 부수 효과(side effet) 없음: 입력이 같으면 항상 같은 결과값을 가지며, 다른 객체의 상태를 변경하지 않으며, 함수 외부의 환경과 상호작용하지 않은 순수 함수(pure function)을 사용한다.

 

함수형 프로그래밍의 장점

▪︎ 간결성: 강력한 추상화를 통해 코드 중복을 막을 수 있다.

▪︎ 멀티 스레드 환경에서 안전: 멀티 스레드 환경에서는 동기화가 중요하다. 함수형 프로그래밍에서는 불변 데이터 구조와 순수 함수를 통해서 같은 데이터를 여러 스레드가 변경하는 것을 방지한다. 따라서 복잡한 동기화를 적용하지 않아도 된다.

▪︎ 테스트하기 쉬움: 테스트를 위한 준비 코드(setup code)가 필요하지 않아, 독립적인 테스트가 가능하다.

 

코틀린이 지원하는 함수형 프로그래밍

▪︎ 함수를 인자로 받을 수 있다.

▪︎ 함수가 새로운 함수를 반환할 수 있다.

▪︎ 람다 식을 지원하여 준비 코드를 작성하지 않아도 코드 블록을 정의하고 전달할 수 있다.

▪︎ 데이터 클래스를 통해 불변적인 값 객체(value object)를 간단하게 만들 수 있다.

▪︎ 코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API를 제공한다.

 

특성 4: 무료 오픈소스

 코틀린 언어, 컴파일러, 라이브러리 등 코틀린과 관련있는 도구들은 모두 오픈소스이며 무료로 사용할 수 있다(Apache 2 라이선스하에 제공됨). 

 

 

코틀린의 철학

 코틀린은 자바와의 상호운용성에 초점을 맞춘 실용적이고 간결하며 안전한 언어라고 설명한다. 이에 대해서 알아보겠다.

 

철학 1: 실용성

 코틀린은 실제 문제를 해결하기 위해 만들어진 실용적인 언어이다.

 

철학 2: 간결성

 코드를 새로 작성하는 것보다는 기존 코드를 파악하는 것이 더 오래 걸린다. 만약 코드를 수정해야 하는 상황에서  코드가 간단하고 간결할 수록 더 쉽게 이해할 수 있을 것이다. 그리고 코드가 간결하면 더 적게 타이핑을 할 수 있기 때문에 생산성이 향상되고 개발 시간이 단축된다.

 

철학 3: 안전성

 코틀린은 JVM에서 실행되고, 이는 상당한 안전성을 보장한다. 컴파일 시점의 검사를 통해 오류를 방지할 수 있다.

 

철학 4: 상호운용성

 코틀린에서는 자바에서 사용하는 기존의 라이브러리를 그대로 사용할 수 있다. 자바 코드에서 코틀린 코드를 호출하는 것도 간편하다. 자바와 코틀린 소스파일이 섞여 있어도 프로그램을 컴파일할 수 있다.

▪︎ 자바와 코틀린 소스 파일을 탐색할 수 있다.

▪︎ 여러 언어로 이루어진 프로젝트를 실행 및 디버깅할 수 있다.

▪︎ 자바 코드를 리팩토링할 때 코틀린 코드 또한 리팩토링된다. 역으도로 가능하다.

 

출처

▪︎ Kotlin in Action

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함