brunch

Kotlin - Expression Oriented

코드 표현력(expressiveness)을 위한 코틀린

by mars

프로그래머는 세상의 모든 것을 코드로 표현(expression)하려는 야망을 가진 자들이다. 그리고 코틀린은 이러한 프로그래머들의 야망에 화답하듯 자신을 표현 지향 언어(Expression Oriented Programming Language), 즉 EOP라고 주장한다.


그 정의

위키피디아의 Expression Oriented Programming Language에 대한 정의에 따르면 프로그래밍 언어의 구성요소가 모두(혹은 대부분) 표현식이어야 하며, 작성된 프로그램은 당연히(혹은 어쩔 수 없이) 표현식으로 값을 생성해야 한다고 설명한다.


“모든(혹은 거의 모든) 언어의 구성이 표현식으로 이루어져 있어 값을 생성한다.— 위키피디아”


즉, 문장(statement)이 아닌 표현식(expression)을 중심으로 하는 프로그래밍 언어라고 할 수 있겠다.


EOP를 추구하는 Kotlin

KotlinConf23의 Kotlin Functional Programming 세션에서는 코틀린이 추구하는 프로그래밍 철학이 EOP라고 소개했다. EOP는 함수형 프로그래밍(FP)의 한 갈래로, "모든 것을 표현식(expression)화" 하려는 프로그래밍 기법이다. 여기서 말하는 표현(혹은 표현식)이란 값을 계산하거나 반환하는 코드 조각을 뜻하는데, 사실 새롭게 탄생한 개념이나 철학은 아니다.


그렇다면 코틀린은 과연 이러한 EOP를 지원하는 언어일까? 자바에서는 문장이었던 구문들이(if, switch, try/catch 등)이 코틀린에서는 실용적인 범위 내에서는 표현식으로 전환되었다. 따라서 코틀린은 EOP를 지향하는 언어라고 말할 수 있겠다.


그래서 뭐가 좋은데?

이제 우리는 몇 가지 질문을 던질 수 있게 되었다. 문장이 아닌 표현식을 사용했을 때, 어떤 장점이 있는데? 이것이 왜 함수형 프로그래밍이 추구하는 Purity, Lambda, Higher Order Function, Composition, Monad 등을 더욱 실용적인 방식으로 사용할 수 있는데?


앞으로의 기고를 통해서 이러한 질문에 답할 수 있는 힘을 기르도록 하겠다.


Disclaimer

1. 향후 몇 편은 계속 떡밥만 던지는 식이라서 죄의식이 느껴진다.

2. 이 글은 이후의 글들을 고려해서 완전히 재작성되었다.




keyword
작가의 이전글왜?라는 질문에 답해야 하는 이유