There’s a lady who’s sure
All that glitters is gold
And she’s buying a stairway to heaven
~ Led Zeppelin (lyrics from Stairway to Heaven)
Behold the prospects of finding some stairs; like, everywhere! That’s because the word “Scala” comes from the Italian word for stairway. So we’re going to keep our eyes peeled, lest we stumlble on one.
Seriously, though, here’s the deal: Polyglot programming is in. Totally in. In an epic way.
The (mostly) artificial divisions foisted upon the siloed ecosystem of programming languages are melting away; the hoary, mossy walls—check the pic below for proof, should you care—are coming crashing down. Watch out, Humpty Dumpty.
Where Have We Been? ⛱
Let’s see where we’ve been, as an uber programming community, so we can gauge better where we are heading. Yo, on second thoughts, methinks that such an undertaking is going to engender a whole new essay; let’s leave that for another time, shall we?
Today—and before I introduce the glittering gold that is the best set of (newer) books in the finest Scala geek entertainment—we will first glance at a past set of really cool (Scala) books with which we had some fun a few years ago.
The glorious past regaled us in gems such as these:
- Programming Scala: Scalability = Functional Programming + Objects (O’Reilly), by Dean Wampler and Alex Payne ⛳
- Scala in Action (Manning) by Nilanjan Raychaudhuri 🚁
- Scala Cookbook: Recipes for Object-Oriented and Functional Programming (O’Reilly) by Alvin Alexander 🍔
- Scala in Depth (Manning) by Joshua Suereth 🏊
- Functional Programming in Scala (Manning), by Paul Chiusano and Rúnar Bjarnason 📐
- Scala for the Impatient (Addison-Wesley), by Cay S. Horstmann ⏳
Okay, so those books won’t reappear on this new list. Having said that, each one of the above-mentioned books has aged well and is well worth your time.
And oh yes, the fun is back, red hot. Even that bike yonder is glistening in its new sheen, bedaubed crimson, in hues unforetold. Heady stuff: Woh!
Ushering In The New Breed 🚴
With that, let’s roll out the cool, new stuff. These are a handful of books that I’ve devoured over the past five years or so. Having done a hilarious thing like that—brah, leave this sort of thing to your truly—I sense some vindication in reporting a simulacrum of what I saw at the (programming) revolution:
- Programming in Scala: A comprehensive step-by-step guide, Third Edition by Martin Odersky, Lex Spoon, and Bill Venners (Artima)
- Scala Design Patterns: Learn how to write efficient, clean, and reusable code with Scala, Second Edition by Ivan Nikolov (Packt)
- Scala Puzzlers: The fun path to deeper understanding, by Andrew Phillips and Nermin Šerifović (Artima)
- Scala for Data Science: Leverage the power of Scala with different tools to build scalable, robust data science applications, by Pascal Bugnion (Packt)
- Scala for Machine Learning: Leverage Scala and Machine Learning to study and construct systems that can learn from data, Second Edition, by Patrick R. Nicolas (Packt)
Oh, as for our running metaphor of stairs, let’s throw in a nice, pagoda-like portal, shall we? With that, check the oh-so colorful pagoda below, framed in the background by… the Eiffel Tower! What’s up with that?
Abandon All Hope, Ye Who Enter Here 🎪
Just kidding (so don’t you pay any attention to that macabre title above.) What I am saying, though, is that you will need to generate some motivation—hence the “hope” trope sans Bob Hope—and recalibrate your mindset to get up to snuff with this stuff. And I have full confidence in you, just as I had in myself when setting out to conquer this material.
Fear not, cuz here we go. Starting with an awesome boat-anchor-of-a-book, here’s a bunch of books that I’ve devoured over the past five years or so…
#1 Programming in Scala (Third Edition) 🎩
- When this book’s authors claim—as they do in the subtitle—that it’s comprehensive, they really, really mean it: I have yet to see anyone outdo this fine tome for its comprehensiveness when it comes to covering Scala in all its rich detail. Remember, applications abound.
- “Hey, what’s that fine, blue-emblazoned china teapot doing alongside my copy of the book as it stands tall on one of my stair steps?“, you ask. Glad you did, because you’re going to need a whole lot of brewed tea to make it through this epic volume on Scala—particularly so if you wish to do so in a state of mild wakefulness.
- Turning again to the picture above, you will spy from taking a peek at the towering canopy of colorful, ragtag tape-flags that I’ve managed to affix—as in “plaster”—to the upper-right region of my copy of this tome, that this book is a keeper.
- It’s nothing less than a masterpiece of didactic brilliance (Channeling the late John Vlissides’ awesome take on such matters.) Trust me, the pages are replete with readable gems; virtuosity on full display.
- Programming in Scala (Third Edition) delivers the goods: If you grab only one book from this list, make it this one!
How about we check some cool (Scala-style) designs now?
#2 Scala Design Patterns (Second Edition) 🍎
- I read the first edition of this amazing book, cover-to-cover, when it first came out, and was blown away by the high quality of the content. I was especially impressed by the clarity of presentation.
- Well, in the second edition of the book, all the goodness is still very much there, plus several improvements. Frankly, this is one of my all-time favorite (technical) books that has only gotten even better!
- Scala Design Patterns is simply a pleasure to read. As its subtitle—”Learn how to write efficient, clean, and reusable code with Scala“—rightly claims, its pages are replete with copious amounts of nicely annotated code which nicely illustrate the ideas at hand.
- The coverage of design ideas—cast in the Scala mindset—is remarkable both for its quality and quantity, and one in which Ivan has shared some of the highest quality Scala (production level) that I have seen to date. Superb coverage of design patterns (which you will find yourself quickly relating to) can be found in its pages.
- I thought I knew a thing or two about Scala, but was pleasantly surprised to learn a bunch of great ideas to level up my coding skills and design repertoire!
- Well done, Ivan Nikolov: We look forward to your next book!
Now on to an interlude filled with… puzzles!
#3 Scala Puzzlers 🚀
- Here’s a book that is bursting with fun. If you liked—as I sure did!—its Java cousin that goes by the name Java Puzzlers, you’re going to like Scala Puzzlers a lot.
- It’s not perfect—for example, I would’ve liked to seen more on —but it stays true to the claim its title makes (“The fun path to deeper understanding“.)
- Each of the two coauthors is eminently qualified for crafting this tantalizing ragtag of fun (Scala) puzzles. Nermin Šerifović is an active Scala community member, and he organized the Boston Area Scala Enthusiasts user group; Andrew Phillips is a long-standing open-source developer and community member specializing in concurrency and high-performance applications.
- What I’m getting at—with my preceding blurb—is that this book is a compendium of quality material. No fluff in here.
- You don’t have to read Scala Puzzlers to become a better programmer, though you’ll inevitably find yourself moving in that direction, be prepared to find your mind stretched.
And now it’s time to cast our eyes heavenward in order to catch a glimpse of the gleaming skyscrapers and spires erected by data science, powered by—you guessed it—Scala and its libraries.
#4 Scala for Data Science 📺
- Quite broad in scope, this fine book will help you gain awareness of some great Scala libraries out there. Both programmers and data scientists will find a bunch of useful stuff in its pages
- I would advise you to keep in mind that Scala for Data Science is geared to help you grok programming with Scala’s functional programming capabilities placed front-and-center in its narrative, which is kind of cool—the way I look at it, if you’re going to program in Scala, you might as well tap into its impressive parallel computing capabilities, not to mention how dozens of lines of code (in your favorite programming language) will likely melt into a mere handful of Scala lines!
- I invite you to check out its superb coverage of the Breeze library in particular.
- Oh, and while you’re at it, be sure to also have a look at tapping into a functional wrapper called Slick, which, dare I say, will give you a unique insight into how one can work with stored data almost as if you were using Scala collections, all the while giving you complete control over when a database access happens and which data is transferred. Pretty cool, eh?
- Disclaimer: If you spied that bright, saffron, squish ball in the picture above, please know that it, too—like its peers that appear in other pictures in this essay—is holding its own when it comes to symbolism. Indeed, is there to remind us of just how malleable (“squishy”!) practice of data science is, both in kind and degree, as we slice and dice through seemingly endless reams of data.
- The coverage given to the Actor model of programming—specifically, getting a solid grip on concurrency using Akka—was interesting and instructive. Let’s put all those multicores to good use, shall we?
- Data scientists who have wondered what Scala brings to the table (as a tool for doing data science) can start with skimming through this book. They won’t be disappointed.
- Meanwhile, programmers of all stripes—yep, that’s you and me—can rejoice in this good book through subtitle says it all: “Leverage the power of Scala with different tools to build scalable, robust data science applications“
Hang tight, our final stop is coming up next: Yo, let’s keep climbing those stairs while we are at it!
#5 Scala for Machine Learning (Second Edition) 🔭
- First things first: This intense book is not for the faint of heart. Having said that, I hasten to add that it’s intense in a good way that will not overwhelm you.
- This is a workhorse of a book that I though remains sure-footed in accomplishing the claim of its subtitle, which is a mouthful: “Leverage Scala and Machine Learning to study and construct systems that can learn from data.“
- Scala for Machine Learning will give you plenty of opportunity to go through some fairly intense functional coding, all in the service of machine learning and “stuff like that.”
- In full candor, the narrative of this book run somewhat unevenly, but don’t let that deter you from checking it out: A good number of design ideas—the Scala way, of course—are to be garnered from its pages.
- “But what’s up with that Matryoshka doll?” I hear you ask, “Yes, Akram, the gleaming red, brightly painted one, standing upright, right next to my copy of the book.” Glad you asked: That’s a subtle reminder of the power of nested function calls (aka recursion.) Okay now—read my lips—no more spoilers, so go grab a copy and check what’s happening for yourself!
And that’s all we got for you this time. Hey, all good things come to an end, so perk up: Let’s all look the part of our friend the stoic—and spunky—pelican who bids us farewell.