1장. 코틀린이란 무엇이며, 왜 필요한가?
1. 코틀린 맛보기
* 코틀린 Kotlin
- 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어
- 간결하고 실용적, 자바 코드와의 상호운용성 중시
- 아래 사이트에서 코틀린 코드 연습 가능.
* 코틀린 맛보기
- name, age라는 property가 들어간 간단한 data class 정의
- age property의 디폴트 값은 따로 설정하지 않은 경우 null
- 리스트에서 가장 나이가 많은 사람을 찾기 위해 maxByOrNull 사용
- maxByOrNull 함수에 전달한 람다 식은 파라미터 하나 전달 받음
- 엘비스 연산자(Elvis operator)라고 불리는 ?: 은 age가 null이면 0 반환, 그렇지 않은 경우 null 반환
- 위 코드에서는 영희 나이를 지정하지는 않았지만, 엘비스 연산자가 null을 0으로 변환하므로 철수가 가장 나이 많은 사람으로 선정
2. 코틀린의 주요 특성
* 대상 플랫폼
- 서버, 안드로이드 등 자바가 실행되는 모든 곳
- 이 외에도 iOS 디바이스(인텔의 멀티OS 엔진 사용), 데스크탑 애플리케이션(토네이도FX, 자바FX)에서 사용 가능
- 자바스크립트로 코틀린 컴파일 가능 → 브라우저나 노드에서 실행 가능
* 정적 타입 지정 언어
- 코틀린은 정적 타입 지정 언어.
- 모든 프로그램 구성 요소의 타입을 컴파일 시점에서 알 수 있음
- 프로그램 안에서 객체의 필드나 메소드를 사용할 때 컴파일러가 타입 검증해줌.
- 코틀린은 모든 변수 타입을 프로그래머가 직접 명시할 필요 X.
- 타입 추론(type inference) : 컴파일러가 문맥 고려하여 변수 타입 결정
- 정적 타입 지정의 장점
- 메소드 호출 빠름
- 실행 시 프로그램이 오류로 중단할 가능성 낮음
- 처음 보는 코드 다룰 때 유리
- 더 안전하게 리팩토링(refactoring) 가능
- 더 정확한 코드 완성 기능 등 IDE의 다른 도구 지원 가능
- 널이 될 수 있는 타입 지원 (nullable type)
- 컴파일 시점에서 널포인터 예외 발생(null pointer exception) 여부 검사 → 신뢰성 높임
- 함수 타입 지원
- 함수형 프로그래밍 개념
- 반면, 동적 타입 지정 언어는..
- 타입과 관계없이 모든 값을 변수에 넣을 수 있고 메소드나 필드 접근에 대한 검증이 실행 시점에 일어남.
- 코드가 더 짧고 데이터 구조 보다 유연하게 사용 가능.
- But 이름 잘못 입력 등의 실수는 컴파일 시 걸러내지 못함.
* 함수형 프로그래밍
- 핵심 개념
1) 일급 시민(first-class) 함수
→ 함수를 변수에 저장 가능, 함수를 인자로 다른 함수에 전달 가능, 함수에서 새로운 함수 만들어서 반환 가능
2) 불변성(immutability)
→ 내부 상태가 절대 바뀌지 않는 불변 객체를 사용하여 프로그램 작성
3) 부수 효과(side effect) 없음
→ 입력이 같으면 항상 같은 출력 반환, 다른 객체 상태 변경 X, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수(pure function) 사용
- 장점
- 간결성 : 함수를 값처럼 활용 가능, 강력한 추상화를 사용해 코드 중복 막음
- 다중 스레드 사용해도 안전 : 복잡한 동기화 X
- 테스트하기 쉬움
* 무료 오픈소스
- 코틀린 언어, 컴파일러, 라이브러리 및 코틀린 관련 도구는 모두 오픈소스
- 아파치2 라이선스 하에서 제공
3. 코틀린 응용
* 코틀린 서버 프로그래밍
- 자바 코드와 매끄럽게 상호운용 가능
- HTML 생성 라이브러리
- 영속성(persistence) 프레임워크
* 코틀린 안드로이드 프로그래밍
4. 코틀린의 철학
- 실용성
- 간결성
- 안전성
- 상호운용성
5. 코틀린 도구 사용
- 코틀린 코드 컴파일
- 대화형 셸
- 이클립스 플러그인
- 온라인 놀이터 : http:/try.kotl.in/
- 자바-코틀린 변환기
'Dev Books > <Kotlin in Action>' 카테고리의 다른 글
2장. 코틀린 기초 - 클래스와 프로퍼티 (0) | 2022.03.18 |
---|---|
2장. 코틀린 기초 - 기본 요소 (함수 변수) (0) | 2021.11.03 |
<Kotlin in Action> - 코틀린 컴파일러 개발자가 직접 알려주는 코틀린 언어 핵심 (0) | 2021.10.05 |