[책 리뷰] Programming in Scala

[책 리뷰] Programming in Scala

Programming in Scala 는 Scala 의 창시자인 마틴 오더스키(Martin Odersky) 가 집필한 Scala 서적이다.

저자 소개

일단 책의 저자인 마틴 오더스키에 대한 설명이 필요할 것같다.

마틴 오더스키는 세계적인 명문 대학인 스위스의 로잔 연방 공과대학교(약칭 EPFL)의 교수이며,

Akka[1] 를 만든 Jonas Boner 등과 함께, 현재는 라이트밴드(Lightbend)로 이름이 바뀐 타입세이프(Typesafe)사의 공동 창업자다.

프로그래밍 언어와 시스템 분야에서 일해왔으며, 주로 객체지향과 함수형 프로그래밍을 조합하는 분야를 연구해왔다.

자바 제네릭 설계자 중 한 명으로 자바 언어에 크게 기여하였고, javac 컴파일러를 맨 처음 작성한 프로그래머다.

2001년 이후에는 스칼라를 설계하고 구현하고 다듬는 일을 해왔으며, ACM의 펠로우이기도 하다.

책 구매 동기

내가 처음 스칼라를 공부하려고 할 때 처음으로 본 것은 Coursera 에 있는 마틴 오더스키의 강좌[2]였다.

언어의 창시자가 강좌를 올리는 경우는 흔하지 않는데다, 꽤 유명한 강좌였고, 평도 좋은 편이기 때문에 한 번 쯤은 보고 싶었다.

강의의 내용은 굉장히 좋았다. 사실 이 강좌의 이름은 Functional Programming Principles in Scala 인데,

이름 처럼 단순히 스칼라에 대한 강의라기 보다는 함수형 프로그래밍에 대한 내용이 중심이다.

하지만 '스칼라를 통한' 함수형 프로그래밍 강좌인 만큼,

스칼라의 몇몇 API 와 문법들에 대한 설명도 있기 때문에 스칼라에 대해서도 어느정도 경험할 수 있었다.

하지만 이것만으로는 뭔가 조금 아쉬운 느낌이 들었다. 스칼라에 대해 좀 더 알고 싶었다.

그래서 924 페이지에 달하는 분량의 Programming in Scala[3] 를 구매하게 되었다.

엄청난 분량임에도 이 책을 구입한 이유는, 우선 저자인 마틴 오더스키가 스칼라 언어의 창시자라는 점이 꽤 컸고,

코세라 강좌에서 처럼 책에서도 설명을 잘 해주지 않을까 하는 기대에서였다. 읽어보니 정말 설명이 괜찮았다.

그리고 스칼라의 모든 문법을 한 번쯤은 다 훑어보고 싶었다.

책의 특징

스칼라의 창시자 답게 스칼라를 만든 동기와 철학, 역사에 대해서도 기술 하였으며,

단순히 스칼라의 기본적인 문법과 API, 그리고 활용에 대한 내용 뿐 아니라 함수형 프로그래밍에 대한 내용도 있어 굉장히 유익하다.

물론 함수형 프로그래밍에 대해서 더욱 상세하게 알고 싶다면 '스칼라로 배우는 함수형 프로그래밍(functional programming in scala)'[4] 와 같은 책을 별도로 봐야겠지만,

이 책에도 순수 함수, 부수 효과, 일급 함수 등 함수형 프로그래밍의 기본적인 용어에 대한 내용을 가볍게 다뤄서 FP 에 대한 기본적인 개념에 대해 배울 수 있다.

명령형(imperative)이 아닌 functional 하게 코드를 작성하는 방법에 대한 팁이나 FP 의 장점 등에 대한 내용도 있어 유익하다.

자바에 큰 기여를 한 사람 답게 자바와의 차이를 중심으로 설명하는 부분들도 꽤 있는데, 자바에 익숙한 개발자라면 이런 부분은 더 잘 읽힐 것이다.

유일한 단점을 꼽자면 책의 분량이 너무 많다는 것인데, 그럼에도 불구하고 충분히 읽을만 한 가치가 있다고 생각한다.

왜냐하면 그 만큼 유익한 내용이 많고, 스칼라의 거의 모든 문법을 상세히 다루기 때문이다.

결론

스칼라를 제대로 알고 사용하고 싶은 사람이라면 추천하고 싶다.

하지만, 만약 새로운 언어를 배울 때 빠르게 기본적인 문법을 훑고 바로 써먹는 것을 좋아하는 싶은 사람이라면 맞지 않을 수도 있을것 같다.

물론 이 책을 모두 읽는다고 해서 스칼라 프로그래밍을 잘 할 수 있게 되는 것은 아닐 것이다.

함수적으로 코드를 작성하는 것은 제쳐 두더라도, 스칼라 자체가 굉장히 공부할 게 많은 언어라고 생각하고,

실무에서 스칼라를 사용하여 개발을 하기 위해서는 추가적으로 다양한 라이브러리를 알아야 하기 때문이다.

Scala 라는 언어가 굉장히 매력적인 언어긴 하지만 러닝 커브가 높은 언어임에는 분명하다는 생각이 든다.

하지만 이 책을 읽고나서 든 생각은 읽길 잘했다는 것이었다.

개인적으로 어떤 언어를 처음 배울 때 구글링을 통해 기본 문법과 함수들을 빠르게 학습하여 사용하면 어딘가 허전한 기분이 들 때가 있다.

이 책은 이런 허전함을 없애 주기에 충분했고 스칼라의 여러 매력을 느끼게 해준 매우 유익한 책이었다.


  1. https://akka.io/ ↩︎

  2. http://coursera.org/learn/progfun1 ↩︎

  3. http://www.yes24.com/Product/Goods/96640057 ↩︎

  4. http://www.yes24.com/Product/Goods/16969986 ↩︎

Comments