IT 관련 책 정리 및 후기/Kotlin IN Action

[1장] 코틀린이란 무엇이며 왜 필요한가?

JUN0126 2022. 11. 17. 00:35

이번에 코틀린 인 액션 책 스터디를 시작하면서 회고록 및 정리한 내용을 정리하고자 합니다

이번 스터디는 이전에 했던거와 달리 전체를 읽지 않고 중요하다고 생각되는 부분을 여러명에서 읽고 하기 때문에 전체적인 내용은 아닙니다.

자세한 내용은 책을 참고하시길 바랍니다.

 

1.2.2 정적 타입 언어 지정

자바와 마찬가지로 코틀린은 정적 타입 지정 언어이다. 타입을 지정하여 사용하는 언어라는 뜻이며 객체의 필드나 메서드를 사용할 때 마다 컴파일러가 타입을 검증해준다는 뜻이다.

하지만 코틀린은 변수 지정 시 해당 변수가 타입이 무엇인지 문맥을 고려하여 추론하여 타입을 지정하는데 이것을 타입 추론 이라고 한다.

 

정적 타입 지정의 장점

1. 성능

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

2. 신뢰성

 - 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어졌다.

3. 유지 보수성

 - 코드에서 다루는 객체가 어떤 타입에 속하는 지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다.

4. 도구 지원

 - 정적 타입 지정을 활용하면 안전하게 리팩토링 할 수도 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있다.

 

1.2.3 함수형 프로그래밍과 객체지향 프로그래밍

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

1. 일급 시민인 함수 (first-class)

 - 함수를 일반 값 처럼 다룰 수 있으며, 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달 할 수 있으며, 함수에서 새로운 함수를 만들어 반환할 수 있다.

2. 불변성

 - 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.

3. 부수 효과 없음 

 - 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수함수를 사용한다.

 

함수를 값철머 활용할 수 있으면 더 강력한 추상화를 할 수 있고 강력한 추상화를 사용해 코드 중복을 막을 수 있다.

불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경 할 수 없으므로 다중 스레드를 사용해도 안전하다.

테스트하기가 쉽다

위와 같은 내용들은 코틀린은 처음부터 함수형 프로그래밍을 풍부하게 지원한다.

 

1.4 코틀린의 철학

코틀린이 자바와의 상호운용성에 초점을 맞춘 실용적이고, 간결하며 안전한 언어라고 설명 되어오는데 이에 대한 내용을 살펴본다.

1. 실용성 

 - 코틀린은 다른 프로그래밍 언어가 채택한 이미 성공적으로 검증된 해법과 기능에 의존한다.

 - 코틀린은 IntellJ 아이디어의 개발과 컴파일러의 개발이 맞물려 이루어져있어 해당 도구를 사용하여 개발 시 도움을 쉽게 받을 수 있다.

2. 간결성

 - 언어가 간결하다는 말은 그 언어로 작성된 코드를 읽을 때 의도를 쉽게 파악할 수 있는 구문 구조를 제공하고, 그 의도를 달성하는 방법을 이해할 때 방해가 될 수 있는 부가적인 준비 코드가 적다는 뜻이다

 - 그러하여 코틀린은 기능이 다양한 표준 라이브러리를 제공하기 때문에 반복되거나 길어질 수 있는 코드를 라이브러리 함수 호출로 대치 할 수 있다.

3. 안전성

 - NullPointerException 이 발생할 수 있는 연산을 사용하는 코드를 금지한다.

 - ClassCastException 예외도 방지해주는데 어떤 객체를 다른 타입으로 캐스트 하기전에 타입을 검사하지 않으면 나타나는 예외인데 해당 타입을 검사해야지 메서드를 사용할 수 있게 끔 사용할 수 있다.

4. 상호운용성

 - 코틀린은 자바와 호환성을 지니고 있으며 코틀린에서는 모든 자바 라이브러리를 사용 할 수 있다. 그러하여 기존 자바 라이브러리에 추가된 기능들을 얹어서 사용할 수도 있다.

- 하지만 null값 체크, 스마트캐스트 등 호환이 되어 컴파일은 진행되어도 런타임 단계 시 발생할 수 있는 에러 사항이 있으니 확인이 필요하다

 

1.5  코틀린 코드 컴파일

- 코틀린 컴파일러는 자바 컴파일러가 자바 소스코드를 컴파일할 때와 마찬가지로 코틀린 소스코드를 분석해서 .class 파일을 만들어내며 만들어진 파일은 개발 중인 애플리케이션의 유형에 맞는 표준 패키지 과정을 거쳐 실행될 수 있다.

 - 코틀린 컴파일러로 컴파일한 코드는 코틀린 런타임 라이브러리에 의존하며 코틀린으로 컴파일한 애플리케이션을 배포 할때는 런타임 라이브러리도 함께 배포해야한다.

 - 개발 진행 시 메이븐과 그레이들은 애플리케이션을 패키지할 떄 알아서 코틀린 런타임을 실행시켜준다.

 

 

http://www.yes24.com/Product/Goods/55148593

 

Kotlin in Action - YES24

코틀린이 안드로이드 공식 언어가 되면서 관심이 커졌다. 이 책은 코틀린 언어를 개발한 젯브레인의 코틀린 컴파일러 개발자들이 직접 쓴 일종의 공식 서적이라 할 수 있다. 코틀린 언어의 가장

www.yes24.com