This book is for anyone who wants to learn how to build real software from scratch with a cutting-edge language. Maybe you learned Scala or Clojure on the job, but want to learn more about how to work “close to the metal” in a functional language. Maybe you’re an enthusiast and want to write smaller, lightweight Scala programs that perform on tiny, near-embedded Linux systems. Or maybe you’re a devops engineer with a strong Java background, who is just learning Scala, and you want to write strongly typed, testable code that doesn’t impose the runtime penalties of the JVM. In other words, this book is for the folks who are my peers and colleagues in the Scala and greater JVM-language community.
I’ve tried my hardest to make this book accessible to folks with no prior systems programming experience—you’ll learn about arrays, pointers, and the rest, as we go along.
All the code is in Scala, but we won’t be using the advanced Scala techniques you might find in a functional programming text. When we do use intermediate-level techniques like implicits, I’ll call them out.
That said, a few days’ worth of experience with Scala is highly recommended. If you’re totally new to Scala, there are a lot of great resources online. The official Tour of Scala[1] is a great place to start, and if you want to go deeper, Dave Gurnell’s and Noel Welsh’s Creative Scala[2] or Martin Odersky’s Functional Programming Principles in Scala[3] online course are both excellent resources. Pragmatic Scala[4] by Venkat Subramaniam offers a great, approachable book-length treatment, as does Scala for the Impatient[5] by Cay Horstmann. Programming in Scala,[6] by Martin Odersky, Lex Spoon, and Bill Venners, is the official book by the author of the language, and is a great, thorough reference guide, but make sure you get the third edition—the second and first editions are significantly out of date now.