"If new programmers have time to learn only one language this year, it should be Scala." That's a quote from a top MIT engineer and professor and Google employee, from a conference I attended on "Most likely successors to JAVA." Say what? I'm a roboticist and engineer, and to look absolutely idiotic, I'd never even HEARD of Scala until that moment!
But I HAD heard of LISP, Haskell, C#, Java and my beloved Python. Little did I realize before the conference (3 years ago) that Scala actually COMBINES the best of all those, runs on the Java JVM, uses tools like Ant seamlessly, and has non-glue access to ALL the Java libraries.
But that's just the beginning. Scala is niether purely functional nor purely imperative, is static typed, yet works wonderfully in my real time robotics applications. Unlike even C#, let alone Java, you can do "quick" object compile commands without statics or class declarations, just like a script! You can access the JVM compiler, or .net. or scala's own interpreter, depending on your need. WOW. Scala has the functional bennies of pattern matching, macros, currying, tail recursion, immutability, algebraic types, lazy evaluation, pattern matching and many more; fixes the non unified type and type erasure as well as checked exceptions problems in Java (and many others); Scala has a unified type system (like C#) unlike Java, even though it is Java seamless!
So what do all these wonderful things have to do with this gem of a book? Easy: what good is a book if it just rehashes the Java features and misses the unique wonders of Scala? THIS TEXT DELIVERS! By that I mean it gives examples of ALL the differences, in English and code, that make this language a winner among winners.
At over 700 pages, you can frame this amazing book as a learning text, a reference, a cookbook, an encyclopedia, and for sure a valued friend for the library of every Java and C# jock. Because of parallel, concurrency and run time features (dear to the heart of roboticists, circuit folks like me), I believe that this text gives powerful evidence that Scala could not only be the next Java, but next C in circuits, Erlang in parallel (Early Scala used the Actor model, but that is being phased out for AKKA in the next few releases), and Lisp in functional!
You don't need to know Scala to benefit from this book, and in fact you CAN LEARN Scala just as well with this book as any of the intro Scala texts, and save yourself a ton of money and duplication, BUT like those many fine intro texts, you still have to understand basic OOP/ functional or both (in other words use it to learn your soon to be favorite language, but not to learn basic programming). In other words, if classes, functions, types, recursion, objects etc. still confuse you, this isn't the place to start. Another cool thing about both this text and Scala is that they get rid of the very silly "never use go to" that was supposedly the hallmark of imperative, and cut through all that baloney (can you say jump statements?) with very clear and simple switch and other alternatives. Both day to day coders like myself will love this cookbook, as well as "purists" who look down their noses at Java itself due to Prolog or Lisp. THIS TEXT AND THIS LANGUAGE truly blend all the best features of both worlds!
Highly recommended for coders of all skills, even advanced pros, and of course oddballs like me who are more into circuits, embedded and run - real time monsters, robotics, etc. If you're just getting out of High School and are considering which language to get started with, I'm not trashing Java (and still LOVE Lisp and Python), but I've got to say I wish I'd read this text when making those decisions! Due to being an O'reilly tome, the code also is relatively bulletproof and most of the snippets I tried ran flawlessly, but out of nearly 1,000 yummy pieces of this pie, I've only tried about 100, so take it in that context. Most authors (including this text) don't consider Scala a good language to use to "learn basic programming" -- but also concede that since Twitter, Netflix and LinkedIn run on it (among many others) it IS worth eventually learning.
ROBOTICIST/ INVENTOR EMAILER ANSWER: YES, I do think this also could be a C or C++ successor, including in embedded. Surely not as a "spice" circuit compiler, but more for very large, data intensive applications just as when you move from Arduino schemes to Linux as you evolve. If I were Apple, I'd be eyeing it in lieu of C++ right now. I mean, think about it, both .net and JVM are used in embedded bricks today. One of our most complex, 60 degrees of freedom pick and pack machines includes the JVM. There are Haskell and Scheme solutions that would make the Java used MUCH better, and Scala allows that "big data," parallel combination to happen ON the JVM, while adding the wonderfully robust Matlab/simulink like libraries of functional CAS approaches, and soon, AKKA.
Truly next decade's language in my opinion, granted after only using it for a few years (remember, fully stable versions are still coming out as this review is being written! If you're a patent type or circuit/ software developer, N.B.). If you also think the relatively new Oracle/Sun thing might mean bye bye Java innovation... well, here's a place to turn! We get a lot of requests to review books, and there seems to be a new Scala book coming out every month, so if that's any indication, here's a language that looks like a clear frontrunner for the Java throne.
Library Picks reviews only for the benefit of Amazon shoppers and has nothing to do with Amazon, the authors, manufacturers or publishers of the items we review. We always buy the items we review for the sake of objectivity, and although we search for gems, are not shy about trashing an item if it's a waste of time or money for Amazon shoppers. If the reviewer identifies herself, her job or her field, it is only as a point of reference to help you gauge the background and any biases.