4개월 전 (4개월 전 수정됨)
『코틀린 멀티패러다임 이터레이션』은 『멀티패러다임 프로그래밍』의 부록으로, 본서의 일부 내용을 코틀린 언어에 특화하여 풀어낸 자료입니다. 멀티패러다임 프로그래밍은 특정 언어에 국한되지 않는 언어 독립적인 개념으로, 현대의 대부분의 프로그래밍 언어에 적용할 수 있는 방법론이자 기술입니다.
보러가기: https://github.com/marpple/kotlin-multi-paradigm-iteration
현대 프로그래밍 언어들은 이터레이션(Iteration)에 대해 객체 지향, 함수형, 명령형 개념을 통합하고, 이를 유기적으로 동작하게 하는 규약을 제공합니다. 『멀티패러다임 프로그래밍』에서는 타입스크립트를 중심으로 함수형·명령형·리스트 프로세싱·객체지향 프로그래밍을 조합해 활용하는 사례들을 살펴봤습니다. 이번에는 멀티패러다임 언어인 코틀린(Kotlin)의 멀티패러다임 이터레이션을 중심으로 멀티패러다임 프로그래밍 언어의 응용 능력을 더욱 확장해보고자 합니다.
코틀린은 멀티패러다임 프로그래밍 언어입니다. 오라일리 미디어의 부사장이자 여러 기술 서적의 저자인 마이크 루키데스는 최근 그의 글에서 "우리는 함수형, 객체 지향, 명령형 패러다임을 제공하는 멀티패러다임 언어를 효율적으로 사용하는 법에 대해 배워야 한다"면서 "많은 툴들이 개선되었고 이제 우리는 어떻게 잘 사용할지를 배울 차례다. 그리고 이제는 오랫동안 각각 특별히 고유했고 심지어 갈등 속에 있던 패러다임들을 섞어야 할 때다"라고 했습니다.
이러한 환경이 갖춰진 지금, 어느 한쪽 패러다임만 사용하는 것은 어쩌면 큰 기회를 놓치는 것일 수 있습니다. 우리가 해결해야 하는 문제 중에는 함수형으로 해결하는 것이 우세한 경우가 있고, 객체 지향 프로그래밍으로 해결하는 것이 더 우세한 경우들도 있습니다. 프로그래머들은 이제 더 이상 함수형이 좋은지, 객체 지향이 좋은지, 정적 타입이 좋은지, 동적 타입이 좋은지 논쟁할 필요가 없습니다. 언어를 만들고 표준을 정의하는 단체와 기업들이 이미 하나의 언어와 플랫폼에서 여러 패러다임을 지원하도록 만들어주었고, 우리는 하나의 프로젝트, 심지어는 하나의 함수 안에서도 여러 패러다임을 조합하여 프로그래밍할 수 있게 되었습니다.
코틀린은 Iterable, Iterator, Sequence, Flow, Channel 같은 구조를 통해 지연 평가(lazy evaluation)와 비동기 코드를 정교하고 유연하게 다룰 수 있다는 점이 특징입니다. 여기에 확장 함수와 풍부한 표준 라이브러리 헬퍼 함수가 결합되어, 단순한 리스트 순회 이상의 다양한 패턴을 더욱 간결하게 표현할 수 있습니다. 이를 통해 별도의 라이브러리 없이도 높은 수준의 리스트 프로세싱을 실현할 수 있습니다. 코틀린 특유의 정교하게 맞물린 구조와 유연한 확장성, 풍부한 편의 기능들은 언어를 사용하는 개발자에게 많은 영감과 즐거움을 안겨줍니다. 그런데 만일 이러한 기능을 충분히 활용하지 못하고 있다면, 코틀린 프로그래밍이 주는 즐거움을 온전히 누리고 있지 못한 것일지도 모릅니다.
『멀티패러다임 프로그래밍』의 부록 컨텐츠인 『코틀린 멀티패러다임 이터레이션』에서는 『멀티패러다임 프로그래밍』의 일부 내용을 코틀린 이터러블, 이터레이터, 시퀀스를 객체 지향·함수형·명령형 패러다임을 연결하는 관점으로 풀어냅니다. 객체 지향적으로 설계된 이터레이터와 명령형 스타일로 작성하는 시퀀스의 관계를 알아보고, 함수형 확장 함수로 시퀀스이자 이터레이터인 객체를 다루는 코드를 살펴봅니다. 또한 함수형 확장 함수로 연산을 쌓은 시퀀스를 명령형으로 다루었다가 다시 함수형으로 전환하면서, 코틀린 이터레이션이 지닌 패러다임 전환 능력을 확인해봅니다.
아울러 시퀀스와 이터레이터의 지연 평가를 깊이 파악하고, LISP의 철학을 차용해 코드와 데이터를 융합하는 시각을 탐구하며, 이러한 기법들의 실전 응용력을 높이는 내용도 다룹니다. 또한 유연하고 견고한 코드 구조를 설계하고 효율적이며 정확하고 안전하게 동작하는 코드를 만드는 방법을 탐구하게 될 것입니다. 이를 통해 멀티패러다임 언어 코틀린의 다양한 가능성을 실감하고, 소프트웨어 공학과 프로그래밍의 즐거움을 한층 깊이 누릴 수 있는 계기가 되길 바랍니다.