[Kotlin] 코틀린이란?

수인·2022년 4월 2일
1

kotlin

목록 보기
1/1


코틀린에 대해서 간단하게 설명하고자 한다.

역사

JetBrains

IntelliJ IDEA 프로그램을 개발한 JetBrains 기업에서 만든 언어다.

이전까지 Android 개발 언어는 JAVA로 많이 사용됐지만,
2017년 5월 Google I/O에서 Kotlin을 공식 언어로 채택한 후,
Kotlin으로 앱을 개발하는 기업들이 많아졌다.
실제 Kotlin은 2011년에 출시되었고, 2012년에 오픈소스 프로젝트로 공개되었다. 공식 언어는 2017년에 채택되었지만 출시는 2011년도에 했다는 사실..

특징

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

JAVA는 객체지향 프로그래밍, Kotlin은 함수형 프로그래밍이다.

  • 객체지향 프로그래밍 : class가 프로그램의 최우선이 되는 방식
  • 함수형 프로그래밍 : 함수의 유기적 연결 및 동작이 프로그램의 최우선이 되는 프로그래밍 방식. 함수가 일급 객체로써의 의미를 가짐

일급 객체

다른 객체들에 적용 가능한 연산을 모두 지원하는 객체

일급 객체는 함수의 인자로 전달할 수 있다.
일급 객체는 함수의 반환 값에 사용할 수 있다.
일급 객체는 변수에 담을 수 있다.

코틀린에서의 일급 객체(함수)

  • 코틀린은 하나의 함수에 변수, 함수만 정의하는 것이 아닌 class도 선언 및 정의가 가능하다.
	fun eatFood() {
        val pizza = "pizza"                     // 변수
        fun setTable() {                        // 함수
            val knife = "knife"
            val fork = "fork"
            println("i need $knife, $fork")
        }

        class LetsPizza {                       // 클래스
            fun eatPizza() {
                setTable()
            }
        }

        LetsPizza().eatPizza()                  // 실행
    }

eatFood() 함수에 변수, 함수, 클래스가 모두 들어가있다.

  • 함수를 변수처럼 사용 가능하다.
	fun eatFood() {
        val pizza = "pizza"                     // 변수
        fun setTable() {                        // 함수
            val knife = "knife"
            val fork = "fork"
            println("i need $knife, $fork")
        }

        class LetsPizza {                       // 클래스
            fun eatPizza() {
                setTable()
            }
        }

        LetsPizza().eatPizza()                  // 실행
    }

    val hungry = ::eatFood      // 변수명 = ::함수명

    fun main() {
        hungry.call()           // 실행
    }

hungry 변수에 eatFood() 함수를 선언한 것을 볼 수 있다.
main()에서 hungry 변수를 호출 함으로써 eatFood() 함수를 실행하게 된다.

  • 함수 객체를 함수의 결과로 리턴할 수 있다.
	private val hamburger = "hamburger";
    fun letFastFood(): String {                     // String을 return 하는 함수
        return hamburger
    }

    fun main() {
        val returnEat: String = letFastFood()       // 함수를 변수로 선언
        print(returnEat)                            // 실행
    }

letFastFood() 함수는 "hamburger" String을 return한다.
returnEat 변수를 출력함으로써, 함수의 return 결과를 알 수 있다.

장점

  1. 간결한 문법을 제공한다.
  2. JAVA와 100% 호환이 가능하며 JVM에서 동작한다.
  3. JAVA에서는 객체 선언 후 메모리 할당을 위해 인스턴스로 사용되면 new 키워드를 사용하는데, 코틀린은 new 키워드를 사용 할 필요가 없이 바로 값을 할당해주면 된다.
  4. Nullable과 Non-nullable 이라는 개념을 가지고 있어, NullPointException이 발생하지 않도록 만들어 주는 Null Safe 언어다.

마치며


처음 작성하는 벨로그라 어떤 흐름으로 작성해야 할지 감이 안잡힌다.
꾸준히 벨로그를 작성하면 감이 잡히지 않을까..
다음글은 코틀린의 문법에 대해서 작성하려고 한다.

profile
Android Dev.

0개의 댓글