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

2021. 10. 5. 23:48

 

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/

- 자바-코틀린 변환기

BELATED ARTICLES

more