Kotlin
- 코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어로 등장
자바가 사용되고 있는 모든 용도에 더 간결하고 생산적이며 안전한 대체 언어 제공을 목적으로 함. - 특징
- 자바 코드와의 상호운용성
- 서버 개발, 안드로이드 앱 개발 등의 분야에서 사용
- 함수형 프로그래밍 가능
- 람다 식 -> 람다 식의 it은 람다 식의 유일한 인자를 바로 사용 가능!
- 함수 타입
- 안전성 강조
- Nullable 타입 -> 해당 객체가 null일 경우 대체 값 지정 가능
- ClassCastException 방지
정적 타입 지정 언어
모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증
- 단, 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요 X
- 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추 가능 -> 타입추론
- 정적 타입 지정의 장점
- 성능 : 컴파일 시점에 타입이 정해져있기 때문에 빠르다.
- 신뢰성 : 컴파일러가 프로그램의 정확성 검증
- 유지 보수성 : 처음 보는 코드를 다룰 때도 다루는 객체의 타입을 파악 가능
- 코틀린의 Nullable type : null이 될 수 있는 타입을 지원함에 따라 컴파일 시점에 null pointer exception 발생 여부 검사 -> 신뢰성 증가
함수형 프로그래밍
- 간결성 보장 -> 람다식을 통해 간결하게 표현 가능
fun findAlice() = findPerson{it.name == "Alice"}
fun findBob() = findPerson{it.name == "Bob"}
- 다중 쓰레드를 사용해도 안전
- 동기화 없이 사용 시 데이터 변경 위험
- 함수형 프로그래밍 -> 불변 데이터 구조 사용
- 테스트 쉬움 -> 함수 독립적으로 테스트 가능
코틀린의 함수형 프로그래밍 지원
- 함수 타입 지원 -> 함수가 다른 함수를 파라미터로 받거나 새로운 함수를 반환 가능
- 람다 식 지원
- 데이터 클래스 -> 불변적인 값 객체를 간편하게 생성 가능
- 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API 제공
- 즉, 코틀린은 때에 따라 명령형 방식, 객체 지향 방식, 함수형 방식 모두 사용 가능!!!
코틀린의 철학
- 실용성
- 실제 문제를 해결하기 위해 만들어진 실용적인 언어
- 간결성
- 준비 코드(getter, setter) 묵시적 제공
- 다양한 표준 라이브러리 제공 -> 코드의 양 감소
- 연산자 정의 X(연산자 오버라이딩 불가) -> 읽기 쉬움
- 안전성
- 오류 중 일부 유형을 원천적으로 방지
- JVM 사용 -> 메모리 안전성(garbage collection), 버퍼 오버플로우 방지, 동적 메모리 오사용 방지
- 정적 타입 지정
- NullPointerException 감소 -> Nullable 값 추적
- ClassCastException 방지
- 상호운용성
- 자바와 코틀린 코드를 프로젝트에서 섞어 쓸 수 있음
if(value is String)
println(value.toUpperCase())
코틀린 코드 컴파일
- 코틀린은 .kt라는 확장자을 가짐
- 컴파일 시 자바와 같이 .class 파일로 변환
- 코틀린에서 제공하는 추가적인 API를 동작시기키 위해 코틀린 런타임 라이브러리 필요
- Maven, Gradel, Ant 등의 빌드 시스템 사용
대화형 쉘
- REPL
- REPL에서 코틀린 코드를 한 줄 입력하면 즉시 그 코드를 실행한 결과를 볼 수 있다.
- REPL 시작법
- kotlinc 명령어 사용
- IntelliJ 아이디어 플러그인 메뉴(Tool -> 코틀린 -> 코틀린 REPL)
🔔 성찰
6개월 정도 안드로이드 스튜디오를 사용하면서 코틀린 언어를 사용해왔다. 코틀린 언어란 무엇인가에 대해서 고민을 하지 않고 사용해왔고 코틀린이란 무엇인지에 대해 공부하면서 이때까지 코틀린 언어에서 사용하던 것들이 왜 그런 구조를 가지고 있는지에 대해 이제 알게 되었다. 기존에 자바를 매우 좋아하고 즐겨쓰던 내가 코틀린 언어를 사용하면서 매우 간결한 매력에 코틀린도 좋아했지만 코틀린이 이런 철학을 가지고 있고 훨씬 더 많은 고민을 가지고 탄생한 언어라는 것을 알게 된 것 같다. 코틀린 언어는 정말 매력적인 언어고 단순히 코딩을 공부하는 것으로는 많이 부족하다는 생각이 들었다.
- 앞으로 공부하고 싶은 것
- 안드로이드 스튜디오를 사용하면 접하던 gradle이 빌드 시스템이란 것을 알게 됨. gradle에 대해 깊이 공부해보고 싶음.
- 코틀린으로 함수형 방식을 정말 잘 알고 사용하고 싶다. 함수형 프로그래밍 언어와 코틀린이 어떻게 사용되는지에 대해 공부해보자.
참조 : KOTLIN IN ACTION
'코틀린' 카테고리의 다른 글
Iteration (0) | 2023.01.26 |
---|---|
선택 표현과 처리 (0) | 2023.01.25 |
클래스와 프로퍼티 (0) | 2023.01.25 |
함수와 변수 (0) | 2023.01.25 |
🔥코틀린 시작 (0) | 2023.01.06 |