Scala is a multi-paradigm language, supporting both object-oriented and functional
programming approaches. Scala is scalable, suitable for everything from short scripts
up to large-scale, component-based applications. Scala is sophisticated, incorporating
state-of-the-art ideas from the halls of computer science departments worldwide. Yet
Scala is practical. Its creator, Martin Odersky, participated in the development of Java
for years and understands the needs of professional developers.
Both of us were seduced by Scala, by its concise, elegant, and expressive syntax and by
the breadth of tools it put at our disposal. In this book, we strive to demonstrate why
all these qualities make Scala a compelling and indispensable programming language.
If you are an experienced developer who wants a fast, thorough introduction to Scala,
this book is for you. You may be evaluating Scala as a replacement for or complement
to your current languages. Maybe you have already decided to use Scala, and you need
to learn its features and how to use it well. Either way, we hope to illuminate this
powerful language for you in an accessible way.
We assume that you are well versed in object-oriented programming, but we don’t
assume that you have prior exposure to functional programming. We assume that you
are experienced in one or more other programming languages. We draw parallels to
features in Java, C#, Ruby, and other languages. If you know any of these languages,
we’ll point out similar features in Scala, as well as many features that are new.
Whether you come from an object-oriented or functional programming background,
you will see how Scala elegantly combines both paradigms, demonstrating their com-
plementary nature. Based on many examples, you will understand how and when to
apply OOP and FP techniques to many different design problems.
In the end, we hope that you too will be seduced by Scala. Even if Scala does not end
up becoming your day-to-day language, we hope you will gain insights that you can
apply regardless of which language you are using.
Conventions Used in This Book
The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, file names, and file extensions. Many
italicized terms are defined in the Glossary on page 393.
Constant width
Used for program listings, as well as within paragraphs to refer to program elements
such as variable or function names, databases, data types, environment variables,
statements, and keywords.
Constant width bold
Shows commands or other text that should be typed literally by the user.
xviii | Preface