[책] Effective Kotlin - 그다지 Effective 하지 않은

이펙티브 코틀린

1992년 스콧 마이어스Effective C++이 출간된 이후, More Effective C++, Effective STL, Effective Modern C++로 이어지는 이 시리즈는 C++ 개발자의 필독서로 자리 잡았다. C++은 복잡하기로 악명 높은 언어다. 문법을 안다고 해서 좋은 C++ 코드를 작성할 수 있는 것은 아니다. 스콧 마이어스의 이 책들은 언어 명세만 읽어서는 얻기 어려운 실전 지식을 구체적으로 정리했다.

그 후 Effective는 하나의 장르가 됐다. 같은 출판사에서 기획한 단일 시리즈는 아니기 때문에 책마다 깊이와 완성도에는 차이가 있지만, 이 장르에는 공통된 기대가 생겼다. 해당 언어의 문법을 익힌 개발자가 다음 단계로 나아갈 때 필요한 그 언어만의 이디엄과 자주 빠지는 함정, 라이브러리와 언어 기능을 올바르게 조합하는 방법을 알려주는 책이라는 기대다.

그런데 Effective Kotlin은 그런 기대를 만족시키지 못한다. 지금까지 읽은 Effective 계열의 책 가운데 해당 언어에 관해 새롭게 배울 내용이 가장 적었다. 이는 작가의 문제라기보다 언어의 설계 차이에서 비롯된다.

C++은 물론이고 그보다 가다듬어진 Java나 C#도 제대로 모르고 사용하면 예상하지 못한 결과를 낳기 쉽다. 높은 자유도에 따른 복잡성을 사용자가 감당하게 된 경우도 있고, 언어의 역사와 하위 호환성 때문에 남아 있는 동작도 있고, 간결한 문법 뒤에 숨어 있는 규칙이 있는 경우도 있다. 이런 언어에서는 문법적으로 올바른 코드와 그 언어답게 잘 작성된 코드 사이의 거리가 크다. 그래서 무엇을 해야 하는지뿐 아니라 무엇을 피해야 하는지도 알아야 한다.

하지만 Kotlin은 개발자들이 겪었던 문제를 고려해 설계된 언어다. 실수하기 쉬운 기능은 줄이고 안전한 방식을 선택하도록 유도한다. 이 덕분에 개발자가 별도로 공부해야만 알 수 있는 함정이 다른 언어보다 적다. 이는 Kotlin의 장점이지만, 동시에 Effective Kotlin이 다룰 수 있는 Kotlin 고유의 내용이 줄어드는 이유이기도 하다.

그 결과 Effective Kotlin은 Kotlin을 깊이 이해하기 위한 내용보다 일반적으로 프로그래밍을 잘하기 위해 알아야 할 원칙에 상당한 지면을 할애한다. 읽기 쉬운 코드를 작성하고, 적절하게 추상화하고, 변경하기 쉬운 구조를 만들고, 불필요한 복잡성을 피하라는 조언도 중요하긴 하다. 다만 이런 원칙은 Kotlin에만 해당하지 않는다. 다른 언어에도 그대로 적용된다.

그렇다고 책이 전달하는 원칙이 틀렸거나 쓸모없다는 뜻은 아니다. 좋은 프로그래밍 원칙을 이해하기 쉽게 정리했다는 점에서 가치는 있다. 하지만 Effective 계열의 책에 기대하는 것은 이런 일반론을 넘어선 언어 특유의 무언가다. 문법을 알고 있어도 익숙한 기능의 비용이나 위험을 새롭게 이해하고, 이전에는 보이지 않던 선택의 차이를 발견하게 만드는 내용이다.

Effective Kotlin에 대한 평가는 무엇을 기대하고 읽느냐에 따라 달라질 것이다. Kotlin 문법을 막 익혔거나 실무 경험이 많지 않은 개발자라면 일반적인 설계 원칙을 익히는 데 도움을 받을 수 있다. 반면 여러 언어로 개발 경험을 쌓았고, Kotlin 개발에만 필요한 특수한 지식을 기대한다면 얻을 것은 많지 않을 수 있다.

댓글

이 블로그의 인기 게시물

[책] 알고리즘 산책: 수학에서 제네릭 프로그래밍까지 - 추상화를 어떻게 해야 하는지에 대한 수학적 설명

[책] 프로그래머의 뇌 - 좋은 코드가 무엇인지에 대한 인지과학적 설명

노트북 하판에 구멍내기

[책] 사악한 디자인