itstedp***
2016-07-08

이 책은 다양한 코드 예제가 포함된 실전 바이블이다. 초보자와 고급 사용자를 한데 아우를 뿐 아니라, 실제 개발자들의 실용적 관심사에 초점을 맞추어 실전 활용법을 안내한다. 2.11.x 버전에 대응한 최신 스칼라 언어의 특징부터 패턴 매칭, for 내장(comprehension), 고급 함수형 프로그래밍 등의 새로운 내용을 소개한다. 또한 스칼라 명령행 도구와 서드파티 도구, 라이브러리, IDE의 스칼라 지원에 대해 살펴보고, 그 과정
프로그래밍 스칼라 -한빛 미디어- Disclaimer: 먼저 한빛 리더스에 선정해 되었고, 의무적으로 해야만 하는 리뷰이지만,최대한 공정하고 객관적으로 그리고 능동적으로 리뷰를 진행하겠습니다. 책을 무료로 배송 받긴 하였지만, 저는 필자와 출판사쪽과는 아무 커넥션이 없음을 알려 드립니다.
Background: 먼저 전공은 Computer Science 학사, 필드에서 일을 한지는 6년차, 학부때 코딩 경험까지 포함하면 12년 정도이며, 현재는 기술 기반 스타트업을 운영하고 있습니다. 필드에서 프리랜서 혹은 A.A. 정도의 role 을 수행하였음을 밝혀 둡니다. 클로저라든지 lisp 라든지, haskell 같은 순수 함수형 랭귀지를 계속해서 활용하려고 노력하는 중입니다. Node.js + React.js 같은 js 기반의 Resume 온라인 관리 도구 http://www.commitcareer.com 을 개발하고 있습니다.
대상독자: Scala 를 master? 레벨로 올려줄 수 있는 수준있는 설명과 활용법에 관한 휼룡한 책이라고 생각합니다. (하지만 이 책이 scala 를 처음 접하는 분에게 적합하지 않다는 점도 알려드립니다.)
리뷰:
먼저 저의 학습 스타일(?)에 대해 알려드리고 시작을 하는게 좋을것 같습니다.
저는 프로그래밍 랭귀지를 공부할때 구입할 수 있는(?) 책들은 다 구입해서 읽어봅니다.(수능을 볼때 부터 들인 습관입니다….)
장점으로는 읽다보면 중요한 개념들이 여러책에서 반복되는 걸 느낄 수(?) 있습니다.
당연한 말이지만 프로그래밍 언어에서 중요한 개념은 어떤 책이라도 반복되게 마련이지요.
또 다른 장점으로는 가령 a라는 개념을 여러책에서 다양한 관점으로 설명을 듣게 된다는 점이지요.
골고루 다양한 시각에서 개념들을 바라보는 통찰력을 느낄 수 있어서 좋아하는 학습법인데요.
아마 저는 scala 를 2014년 부터 공부했고 함수형 랭귀지들을 접하면서 더욱 더 scala 에 대한
이해가 깊어진 케이스 입니다. (물론 구입할 수 있는 scala 책들은 거의 구입했습니다..;)
PROS.
이 책의 구성은 크게 함수형에 대한 내용부터 시작합니다.
그 후 8장에서 OOP 에 대한 내용이 시작됩니다.
4장, 5장은 어렵습니다만 중요한 주제입니다.
제가 먼저 읽어본 책 중 “빠르게 시작하는 스칼라” 책과 Martin Odersky 의 책과 비교를 해보자면, “빠르게”는 그냥 쿨하게 리뷰한다는 식으로 쭉 보면 아 이게 이런 얘기구나 하고 이해가 가는 느낌이고(난이도가 높지 않다는 뜻입니다.), Martin Odersky 의 책을 보면 아 역시 교수 출신이라 아카데믹 하구나.. 아 책이 두껍구나.. 이 개념은 실제 코드에서 어떻게 쓰이는 걸까.. 하는 생각들이 남는 반면에, 이 책의 장점은 코드를 이용해 유용한! 실제 사례를 바탕으로 그것도 고급주제를 가지고! 여러 다양한 내용들이 이어집니다.
사실 java 로도 함수형처럼 쓰려고 노력을 하면 그렇게 코드를 짤 수(?)도 있습니다.
또 javascript 로 OOP 처럼 쓰려고 노력을 하면 그렇게 코드를 짤 수(?)도 있습니다.
하지만 둘다 어색 하겠죠?
그럼 scala 는 뭐냐..네 scala 는 함수형에서도 몇가지 패러다임을 가져왔고, OOP 의 패러다임도 가져왔기에, 맘만 먹으면 간결하게 함수형 패러다임에 가깝게 코드 작성이 가능하고, OOP 의 패러다임에 가깝게도 코딩이 가능한 패러다임을 가진 언어다라고 정의 하면 좋을것 같습니다.
그래서 이책에서도 함수형에 해당하는 scala 의 기능을 앞쪽에 배치하고, OOP 에 대한 내용은 조금 뒤쪽에 배치를 해둔 센스를 알 수 있습니다. 독자가 함수형 언어를 경험하지 않았다면 scala 의 언어 스펙이 어떤게 함수형 언어에서 가져왔을지 모르니까 구분한게 아닌가 생각도 됩니다. (Lisp 에서 가져온 패턴매칭이나 가비지컬렉션등등이 있겠군요.)
CONS.
항상 그렇지만 조금이라도 난이도 있는 책들이 왜 난이도 때문에 단점이 되어야 하는지 모르겠습니다.
scala 에 대한 고급주제도 잘 설명하였고, 이 정도면 scala master 레벨로 가는데 많은 도움이 되는 책이라고 생각합니다.
전자책이 없다는게 단점은 아니겠고.. 저는 읽으면 적어도 실력이 오를 수 있는 책들이 시중에 번역이 안되서 원서를 구해 읽는 불편함을 항상 느끼고 있기 때문에 단 하나의 단점도 없이 만족 한다라고 결론 내리고 싶습니다.
CONCLUSION.
함수형 언어에서 극혐(?)으로 여기는 게 변수입니다.
언제 어떻게 변할지 모르는 변수야 말로 side effect 의 근본 원인이라고 보고 있지요.
해서 변수 바인딩을 한번 하면 값을 변경할 수 없게 막아버리는 함수형 랭귀지들의 특징이 있습니다. 하지만 scala 는 그런거 없습니다. 그냥 다 허용합니다.
그래도 값을 대입을 해야하는 상황이 오면 함수형 랭귀지들은 나름대로의 방법을 가지고 좀 더 조심스럽게 처리를 합니다.
어찌보면 함수형언에 입장에서 OOP 는 좀 위험하다? 라고 생각을 할수 도 있겠지요.
패러다임의 문제인데 정답은 없습니다.
사설이 길었는데요.
“빠르게” -> Martin Odersky -> 이 책 순으로 보시면 좋을것 같습니다.
그럼 당신도 scala master 레벨에 다다를수 있을거라 확신합니다!