ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] 코틀린이란
    Kotlin 2021. 4. 2. 10:22
    반응형

    1. 대상 플랫폼 : 자바가 실행되는 모든 곳

    코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.

    주로 자바가 많이 사용되는 백엔드, 안드로이드 app에서 주로 쓰인다.

     

    2. 특징

    1.  정적 타입 지정 언어

      자바와 마찬가지로 정적 타입 지정 언어다.
      코틀린은 타입 추론을 지원하므로 정적 타입 지정 언어에서 타입을 직접 선언해야 하는 불편함이 사라진다.
      정적 타입 지정 언어는 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고
      프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다.
      정적 타입 지정 언어의 특징은 다음과 같다.
      1.  성능 - 실행 시점에 어떤 메소드를 호출할지 찾는 과정이 필요 없으므로 메소드 호출이 빠르다.
      2.  신뢰성 - 컴파일러가 프로그램의 정확성을 검증하므로 실행 시 프로그램이 오류로 중단될 가능성이 적다.
      3.  유지 보수성 - 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 쉽다.
      4.  도구 지원 - 더 안전하게 리팩토링 할 수 있고, 더 정확한 코드 완성 기능을 제공할 수 있다
    2.  함수형 프로그래밍

      코틀린은 함수 타입을 지원한다.

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

     

    더보기

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

    val test = fun() { println("test") }

    2. 불변성 - 일단 만들어지면 내부 상태가 불변 객체를 사용해 프로그램을 작성한다.

    3. 부수 효과 없음 - 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나

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

      함수형 프로그래밍의 특징

    더보기
    1.  간결성 - 함수를 값처럼 활용하여 추상화를 더 강력하게 할 수 있고 코드 중복을 막을 수 있다.
    2.  다중 스레드 안전 - 적절한 동기화 없이 같은 데이터를 여러 스레드가 변경하는 경우 문제가 많이 생긴다.
      하지만 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 같은 데이터를
      여러 스레드가 변경 할 수 없다. 그러므로 다중 스레드를 사용할때 안전하게 사용 할 수 있다.
    3. 테스트 용이 - 부수 효과가 있는 함수는 그 함수를 실행 할 때 환경을 구성하는 준비 코드가 
      따로 필요하지만, 순수 함수는 준비 코드 없이 독립적으로 테스트 할 수 있다.

    코틀린은 함수형 스타일로 프로그램을 짤 수 있게 다음과 같은 지원을 해준다.

    더보기
    1.  함수 타입을 지원하여 함수에서 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환 할 수 있다.
    2.  람다 식을 지원하여 준비 코드를 작성하지 않아도 코드 블록을 쉽게 정의하고 전달 할 수 있다.
    3.  데이터 클래스를 지원하여 불변적인 값 객체를 간편하게 만들 수 있다.
    4.  코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API를 제공한다.

    3. 철학

    • 실용성
      더보기
      - 코틀린은 실제 문제를 해결하기 위해 만들어진 실용적인 언어다.

      - 다른 프로그래밍 언어가 채택한 이미 검증된 해법과 기능에 의존한다.
        이로 인해 언어의 복잡도가 줄어들고 기존 개념을 통해 쉽게 배울 수 있다.

      - 특정 프로그래밍 스타일이나 패러다임을 사용할 것을 강제하지 않는다.
    • 간결성
      더보기
      - 자바의 게터, 세터등 여러 가지 준비 코드를 묵시적으로 제공한다.

      - 람다를 지원하여 반복되거나 길어질 수 있는 코드를 작은 코드 블록으로 대체 할 수 있다.
    • 안정성
      더보기
      - 애플리케이션의 타입 안전성을 보장하면서 자바보다 더 적은 비용으로 타입 안전성을 사용할 수 있다.

      - 실행 시점에 오류를 발생시키는 대신 컴파일 시점 검사를 통해 오류를 더 많이 방지해준다.

      - 타입 시스템은 null이 될 수 없는 값을 추적하며, 실행 시점에 NullPointerException이 발생할 수 있는
        코드를 금지 한다.
    • 상호운용성
      더보기
      - 라이브러리가 어떤 API를 제공하던 활용할 수 있다.

      - 자바와 코틀린 코드를 원하는 대로 섞어 쓸 수 있다.
    반응형

    'Kotlin' 카테고리의 다른 글

    [Kotlin] 람다  (0) 2021.03.29
    [Kotlin] 스트림 함수(2)  (0) 2019.10.17
    [Kotlin] 스트림 함수(1)  (0) 2019.10.17
    [Kotlin] for문  (0) 2019.09.27
    [Kotlin] 자료형  (0) 2019.09.27

    댓글

Designed by Tistory.