50 of 51 people found the following review helpful:
5.0 out of 5 stars
A comprehensive guide to Scala, January 4, 2009
This review is from: Programming in Scala: A Comprehensive Step-by-step Guide (Paperback)
Scala is a relatively new language that combines object-oriented programming with functional programming. Usually, when a new language gets some press coverage, some hastily written books are published, that merely give the user some impression of a language, rather than a good basis to build on.
This book is completely different: right from the start you will notice that it is carefully written and comprehensive. Sections naturally flow from one to another, and every concept is introduced good examples and rationale for why Scala uses a concept in a particular way. For example: Scala Ints are compiled as primitive types where possible, but they can also be treated as class instances (e.g. by invoking instance methods). The book not only explains that this is the case, but also how it works, and how it differs from auto-boxing in Java. Such in-depth coverage is provided for all major Scala language constructs.
Besides the covering language concepts, there are also some chapters discussing library functionality, such as containers, actors, building parsers, XML, and Swing programming. The book concludes with a hands-on chapter, where a simple spreadsheet application is implemented.
I wouldn't recommend this book to newcomers to programming, but anyone interested in functional programming or a user of the Java programming language should at least give it a serious consideration. It's a very interesting read that may widen your horizons and show that a good blend of object-oriented and functional programming does indeed exist. Additionally, it is poised to become the standard work for learning Scala.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
43 of 44 people found the following review helpful:
5.0 out of 5 stars
Perfect complement to resources available on the web, April 27, 2009
This review is from: Programming in Scala: A Comprehensive Step-by-step Guide (Paperback)
It's difficult not to let one's enthusiasm for the Scala programming language color one's affection for this book. Nevertheless, _Programming in Scala_ is a rich book with reward after reward for the interested reader. Much can be found on the web about Scala, but this book is still indispensable for the Scala enthusiast for a number of reasons.
First, the prose is clear and gentle, finding the right medium between terseness and belaboring hard points. The authors reveal motivations for many aspects of the language, so that one cultivates a feel for Scala as one progresses through the text. The reader's surprise decreases the farther one gets, as a sense of taste is acquired.
Second, the ordering of the topics is well thought out. This makes the book cohesive, and it's more useful than trying to build one's own curriculum from web materials. For example, pattern matching is explained before XML parsing. This allows the reader to grok the rich support for XML found in Scala. As another example, the "for" expression is covered after exposure to higher order methods. This illustrates their equivalence, and enhances one's understanding of both. As a third example, functional objects are introduced before exploring stateful objects. This gives those readers more familiar with imperative programming early exposure to functional concepts, and sets the stage for appreciating the real power of Scala.
Third, Scala's features are explored with meaningful examples, or mini case studies. Functional class design is introduced with a Rational number class. OO class design is explored with a two dimensional layout library. A circuit simulation API demonstrates writing DSLs. Abstract types are illustrated with a Currency example. Pattern matching is demonstrated by a simple arithmetic expression parser. The richness of "for" expressions is driven home with a solution to the famous eight queens problem. These and other examples flow naturally without appearing contrived, and they make learning Scala a pleasure.
Finally, this book's coverage of the Scala type system, including parameterized types, covariance, implicits, and view bounds, is worth its weight in gold. There's much ado in the programming community about static vs. dynamic type systems. This debate is rather like arguing about whether hammers or screwdrivers are the better tools -- the answer of course depends on context. _Programming in Scala_ arms the reader with enough insight into Scala's design to approach this debate intelligently.
I've only had the book a short while, but the binding appears to be durable. The quality of the print and paper is good. The glossary and index weigh in at a respectable 42 pages.
The text is remarkably free of errors. This eliminates distractions and lets the reader get to the good stuff. I found just one missing punctuation symbol in 700 pages of prose, and no problems at all with the code samples. This sets the bar high for other technical books, where the error checking typically is not nearly so careful.
The books and articles cited within _Programming in Scala_ read like a Who's Who of required reading for the professional programmer, and this speaks both to the thoughtfulness of the designers of the language and to the relevance of this book. For examples, Abelson & Sussman's _SICP_, Evans' _Domain Driven Design_, Fowler on Inversion of Control, Bloch, Goetz, and the list goes on. If these authors' writings are interesting to you, you will love this book.
Challenging concepts (like contravariance) and abusable language features (like implicits) can scare off would-be Scala programmers. This book explores such concepts and features sensitively, and affords the patient reader with deep insights into why the language designers really "got it right." Upon digesting this book, programmers will be able to write beautifully expressive code using these concepts and features. Moreover, the diligent may even contribute meaningfully to the blogosphere's dynamic vs. static discussions. Polyglot programming is the future, but Scala's domain of applicability is especially vast. So, both hobbyists and career programmers would neglect to learn Scala at their peril.
This book is a "must have" for any Scala enthusiast.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
20 of 22 people found the following review helpful:
5.0 out of 5 stars
A great introduction to an intriguing language, February 6, 2009
This review is from: Programming in Scala: A Comprehensive Step-by-step Guide (Paperback)
The Scala language first crossed my consciousness over a year ago, at a stage where I was just starting to get into functional languages. But even with the various quick tour documents on the language web site, it was clear there were a lot more subtleties to this one that were not being explained.
With the stairway book, that gap has been bridged.
The book is aimed at the experienced programmer in 'C' derived imperative languages, with at least some familiarity with the Java(tm) language, and ideally some notion about functional programming techniques -- it is not by any stretch of the imagination a "my first programming book". For the intended audience, it is an extremely effective step-by-step guide to the features, and the syntax, of the language (this is a great contrast with e.g.
Foundations of F# (Expert's Voice in .Net), a book aimed at a similar subject and audience, but which expends very little effort towards separating the accidents of the particular example from the generic syntax). While I am by no means yet fluent in the language, I feel that when I'm using it for hobby coding that I'm not just groping in the dark, but instead have a solid guide and reference to lead me.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No