In Italian, Scala means a stairway, or steps. Indeed, Scala lets you step up to a programming environment that incorporates some of the best recent thinking in programming language design while also letting youuse all your existing Java code.
Artima is very pleased to publish a new edition of the best-sellingbook on Scala, written by the designer of the language, Martin Odersky.Co-authored by Lex Spoon and Bill Venners, this book takes astep-by-step tutorial approach to teaching you Scala. Starting with thefundamental elements of the language, Programming in Scala introducesfunctional programming from the practitioner's perspective, anddescribes advanced language features that can make you a better, moreproductive developer.
Author(s): Martin Odersky, Lex Spoon
Get up to speed on Scala, the JVM language that offers all the benefits of a modern object model, functional programming, and an advanced type system. Packed with code examples, this comprehensive book shows you how to be productive with the language and ecosystem right away, and explains why Scala is ideal for today’s highly scalable, data-centric applications that support concurrency and distribution.
This second edition covers recent language features, with new chapters on pattern matching, comprehensions, and advanced functional programming. You’ll also learn about Scala’s command-line tools, third-party tools, libraries, and language-aware plugins for editors and IDEs. This book is ideal for beginning and advanced Scala developers alike.
- Program faster with Scala’s succinct and flexible syntax
- Dive into basic and advanced functional programming (FP) techniques
- Build killer big-data apps, using Scala’s functional combinators
- Use traits for mixin composition and pattern matching for data extraction
- Learn the sophisticated type system that combines FP and object-oriented programming concepts
- Explore Scala-specific concurrency tools, including Akka
- Understand how to develop rich domain-specific languages
- Learn good design techniques for building scalable and robust Scala applications
Author(s): Dean Wampler, Alex Payne
3. Functional Programming in Scala (2014)
Functional Programming in Scala is a serious tutorial for programmers looking to learn FP and apply it to the everyday business of coding. The book guides readers from basic techniques to advanced topics in a logical, concise, and clear progression. In it, you’ll find concrete examples and exercises that open up the world of functional programming.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
Functional programming (FP) is a style of software development emphasizing functions that don’t depend on program state. Functional code is easier to test and reuse, simpler to parallelize, and less prone to bugs than other code. Scala is an emerging JVM language that offers strong support for FP. Its familiar syntax and transparent interoperability with Java make Scala a great place to start learning FP.
About the Book
Functional Programming in Scala is a serious tutorial for programmers looking to learn FP and apply it to their everyday work. The book guides readers from basic techniques to advanced topics in a logical, concise, and clear progression. In it, you’ll find concrete examples and exercises that open up the world of functional programming.
This book assumes no prior experience with functional programming. Some prior exposure to Scala or Java is helpful.
- Functional programming concepts
- The whys and hows of FP
- How to write multicore programs
- Exercises and checks for understanding
About the Authors
Paul Chiusano and Rúnar Bjarnason are recognized experts in functional programming with Scala and are core contributors to the Scalaz library.
Table of Contents
- What is functional programming?
- Getting started with functional programming in Scala
- Functional data structures
- Handling errors without exceptions
- Strictness and laziness
- Purely functional state
- Purely functional parallelism
- Property-based testing
- Parser combinators
- Applicative and traversable functors
- External effects and I/O
- Local effects and mutable state
- Stream processing and incremental I/O
PART 1 INTRODUCTION TO FUNCTIONAL PROGRAMMING
PART 2 FUNCTIONAL DESIGN AND COMBINATOR LIBRARIES
PART 3 COMMON STRUCTURES IN FUNCTIONAL DESIGN
PART 4 EFFECTS AND I/O
Author(s): Paul Chiusano, Rúnar Bjarnason
Save time and trouble when using Scala to build object-oriented, functional, and concurrent applications. With more than 250 ready-to-use recipes and 700 code examples, this comprehensive cookbook covers the most common problems you’ll encounter when using the Scala language, libraries, and tools. It’s ideal not only for experienced Scala developers, but also for programmers learning to use this JVM language.
Author Alvin Alexander (creator of DevDaily.com) provides solutions based on his experience using Scala for highly scalable, component-based applications that support concurrency and distribution. Packed with real-world scenarios, this book provides recipes for:
- Strings, numeric types, and control structures
- Classes, methods, objects, traits, and packaging
- Functional programming in a variety of situations
- Collections covering Scala’s wealth of classes and methods
- Concurrency, using the Akka Actors library
- Using the Scala REPL and the Simple Build Tool (SBT)
- Web services on both the client and server sides
- Interacting with SQL and NoSQL databases
- Best practices in Scala development
Author(s): Alvin Alexander
5. Scala for the Impatient (2nd Edition) (2016)
Interest in the Scala programming language continues to grow for many reasons. Scala embraces the functional programming style without abandoning the object-oriented paradigm, and it allows you to write programs more concisely than in Java. Because Scala runs on the JVM, it can access any Java library and is interoperable with familiar Java frameworks. Scala also makes it easier to leverage the full power of concurrency.
Written for experienced Java, C++, or C# programmers who are new to Scala or functional programming, Scala for the Impatient, Second Edition, introduces the key Scala concepts and techniques you need in order to be productive quickly. It is the perfect introduction to the language, particularly for impatient readers who want to learn the fundamentals of Scala so they can start coding quickly. It doesn’t attempt to exhaustively list all the features of the language or make you suffer through long and contrived examples. Instead, carefully crafted examples and hands-on activities guide you through well-defined stages of competency, from basic to expert.
This revised edition has been thoroughly updated for Scala 2.12 and reflects current Scala usage. It includes added coverage of recent Scala features, including string interpolation, dynamic invocation, implicit classes, and futures. Scala is a big language, but you can use it effectively without knowing all of its details intimately. This title provides precisely the information that you need to get started in compact, easy-to-understand chunks.
- Get started quickly with Scala’s interpreter, syntax, tools, and unique idioms
- Master core language features: functions, arrays, maps, tuples, packages, imports, exception handling, and more
- Become familiar with object-oriented programming in Scala: classes, inheritance, and traits
- Use Scala for real-world programming tasks: working with files, regular expressions, and XML
- Work with higher-order functions and the powerful Scala collections library
- Leverage Scala’s powerful pattern matching and case classes
- Create concurrent programs with Scala futures
- Implement domain-specific languages
- Understand the Scala type system
- Apply advanced “power tools,” such as annotations, implicits, and type classes
Register your product at informit.com/register for convenient access to downloads, updates, and corrections as they become available.
Author(s): Cay S. Horstmann
If you’ve had trouble trying to learn Functional Programming (FP), you’re not alone. In this book, Alvin Alexander — author of the Scala Cookbook and former teacher of Java and Object-Oriented Programming (OOP) classes — writes about his own problems in trying to understand FP, and how he finally conquered it.
What he originally learned is that experienced FP developers are driven by two goals: to use only immutable values, and write only pure functions. What he later learned is that they have these goals as the result of another larger goal: they want all of their code to look and work just like algebra.
While that sounds simple, it turns out that these goals require them to use many advanced Scala features — which they often use all at the same time. As a result, their code can look completely foreign to novice FP developers. As Mr. Alexander writes, “When you first see their code it’s easy to ask, ‘Why would anyone write code like this?’”
Mr. Alexander answers that “Why?” question by explaining the benefits of writing pure functional code. Once you understand those benefits — your motivation for learning FP — he shares five rules for programming in the book:
- All fields must be immutable (‘val’ fields).
- All functions must be pure functions.
- Null values are not allowed.
- Whenever you use an ‘if’ you must also use an ‘else’.
- You won’t create OOP classes that encapsulate data and behavior; instead you’ll design data structures using Scala ‘case’ classes, and write pure functions that operate on those data structures.
In the book you’ll see how those five, simple rules naturally lead you to write pure, functional code that reads like algebra. He also shares one more Golden Rule for learning:
- Always ask “Why”?
Lessons in the book include:
- How and why to write only pure functions
- Why pure function signatures are much more important than OOP method signatures
- Why recursion is a natural tool for functional programming, and how to write recursive algorithms
- Because the Scala ‘for’ expression is so important to FP, dozens of pages explain the details of how it works
- In the end you’ll see that monads aren’t that difficult because they’re a natural extension of the Five Rules
- The book finishes with lessons on FP data modeling, and two main approaches for organizing your pure functions
As Mr. Alexander writes, “In this book I take the time to explain all of the concepts that are used to write FP code in Scala. As I learned from my own experience, once you understand the Five Rules and the small concepts, you can understand Scala/FP.”
Please note that because of the limits on how large a printed book can be, the paperback version does not include all of the chapters that are in the Kindle eBook. The following lessons are not in the paperback version:
- Grandma’s Cookies (a story about pure functions)
- The ScalaCheck lessons
- The Type Classes lessons
- The appendices
Because those lessons didn’ fit in the print version, they have been made freely available online.
(Alvin Alexander (alvinalexander.com) wrote the popular Scala Cookbook for O’Reilly, and also self-published two other books, How I Sold My Business: A Personal Diary, and A Survival Guide for New Consultants.)
Author(s): Alvin Alexander
7. A companion booklet to “Functional Programming in Scala”: Chapter notes, errata, hints, and answers to exercises (2015)
Author(s): Rúnar Óli Bjarnason, Paul Chiusano
This reader-friendly textbook presents a concise and easy to follow introduction to Scala. Scala is an ideal first programming language, which permits programming in multiple paradigms, and enables developers to be more productive with modern computing infrastructures such as distributed environments.
Topics and features: provides review questions and problem-solving exercises (with solutions) in each chapter, inspired by real-world applications; addresses each topic in a self-contained manner, highlighting how Scala can be evolved and grown according to the developer’s needs; presents examples from a broad range of different application domains, including consumer electronics, online payment, retail, vehicle manufacturing, and healthcare; encourages an innovation-oriented mind-set, and the development of practical, saleable skills; draws from the author’s extensive experience in industrial software development, academic research, and university teaching.
This accessible and hands-on guide will embolden professional software engineers to make the switch to Scala. Instructors teaching introductory programming courses will also find this textbook popular among their students.
Author(s): Bhim P. Upadhyaya
9. Introduction to Programming and Problem-Solving Using Scala, Second Edition (Chapman & Hall/CRC Textbooks in Computing) (2016)
Praise for the first edition:
“The well-written, comprehensive book…[is] aiming to become a de facto reference for the language and its features and capabilities. The pace is appropriate for beginners; programming concepts are introduced progressively through a range of examples and then used as tools for building applications in various domains, including sophisticated data structures and algorithms…Highly recommended. Students of all levels, faculty, and professionals/practitioners.
―D. Papamichail, University of Miami in CHOICE Magazine
Mark Lewis’ Introduction to the Art of Programming Using Scala was the first textbook to use Scala for introductory CS courses. Fully revised and expanded, the new edition of this popular text has been divided into two books. Introduction to Programming and Problem-Solving Using Scala is designed to be used in first semester college classrooms to teach students beginning programming with Scala. The book focuses on the key topics students need to know in an introductory course, while also highlighting the features that make Scala a great programming language to learn.
The book is filled with end-of-chapter projects and exercises, and the authors have also posted a number of different supplements on the book website. Video lectures for each chapter in the book are also available on YouTube. The videos show construction of code from the ground up and this type of “live coding” is invaluable for learning to program, as it allows students into the mind of a more experienced programmer, where they can see the thought processes associated with the development of the code.
About the Authors
Mark Lewis is a Professor at Trinity University. He teaches a number of different courses, spanning from first semester introductory courses to advanced seminars. His research interests included simulations and modeling, programming languages, and numerical modeling of rings around planets with nearby moons.
Lisa Lacher is an Assistant Professor at the University of Houston, Clear Lake with over 25 years of professional software development experience. She teaches a number of different courses spanning from first semester introductory courses to graduate level courses. Her research interests include Computer Science Education, Agile Software Development, Human Computer Interaction and Usability Engineering, as well as Measurement and Empirical Software Engineering.
Author(s): Mark C. Lewis, Lisa Lacher
Learn how to be more productive with Scala, a new multi-paradigm language for the Java Virtual Machine (JVM) that integrates features of both object-oriented and functional programming. With this book, you’ll discover why Scala is ideal for highly scalable, component-based applications that support concurrency and distribution.
Programming Scala clearly explains the advantages of Scala as a JVM language. You’ll learn how to leverage the wealth of Java class libraries to meet the practical needs of enterprise and Internet projects more easily. Packed with code examples, this book provides useful information on Scala’s command-line tools, third-party tools, libraries, and available language-aware plugins for editors and IDEs.
- Learn how Scala’s succinct and flexible code helps you program faster
- Discover the notable improvements Scala offers over Java’s object model
- Get a concise overview of functional programming, and learn how Scala’s support for it offers a better approach to concurrency
- Know how to use mixin composition with traits, pattern matching, concurrency with Actors, and other essential features
- Take advantage of Scala’s built-in support for XML
- Learn how to develop domain-specific languages
- Understand the basics for designing test-driven Scala applications
Author(s): Dean Wampler, Alex Payne
11. Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine (Pragmatic Programmers) (2009)
Scala is an exciting, modern, multi-paradigm language for the JVM. You can use it to write traditional, imperative, object-oriented code. But you can also leverage its higher level of abstraction to take full advantage of modern, multicore systems. Programming Scala will show you how to use this powerful functional programming language to create highly scalable, highly concurrent applications on the Java Platform.
The increasing popularity and availability of multicore processors is creating a whole new set of challenges–although you can enjoy true concurrency, you’re now faced with higher contention and synchronization issues. Deploying an existing application on a multicore processor may bring out previously hidden concurrency issues. Java’s multi-threading facility by itself isn’tenough—it’s a very low level abstraction. Instead, you need a paradigm that provides a higher level of abstraction to deal with concurrency. It’s time to embrace Functional Programming.
Scala is a hybrid Object-Oriented/Functional Programming language on the JVM. Using Scala, you can create traditional imperative programs, intermix them with Java code, and at the same time take advantage of higher levels of abstraction. You can use features that lead to concise, highly expressive code that remove the pain of dealing with concurrency.
Programming Scala will show you the fundamentals of functional programming using Scala. Very quickly, you’ll learn how this statically typed language can give you dynamic capabilities to create concise, scalable, highly capable concurrent code.
Pragmatic programmers always use the right tool for the job. For concurrent programming on the Java VM, Scala is the tool, and Programming Scala by award-winning author Venkat Subramaniam is your guide.
Author(s): Venkat Subramaniam
12. Learning Scala Programming: Object-oriented programming meets functional reactive to create Scalable and Concurrent programs (2018)
Learn how to write scalable and concurrent programs in Scala, a language that grows with you.
- Get a grip on the functional features of the Scala programming language
- Understand and develop optimal applications using object-oriented and functional Scala constructs
- Learn reactive principles with Scala and work with the Akka framework
Scala is a general-purpose programming language that supports both functional and object-oriented programming paradigms. Due to its concise design and versatility, Scala’s applications have been extended to a wide variety of fields such as data science and cluster computing. You will learn to write highly scalable, concurrent, and testable programs to meet everyday software requirements.
We will begin by understanding the language basics, syntax, core data types, literals, variables, and more. From here you will be introduced to data structures with Scala and you will learn to work with higher-order functions. Scala’s powerful collections framework will help you get the best out of immutable data structures and utilize them effectively. You will then be introduced to concepts such as pattern matching, case classes, and functional programming features. From here, you will learn to work with Scala’s object-oriented features. Going forward, you will learn about asynchronous and reactive programming with Scala, where you will be introduced to the Akka framework. Finally, you will learn the interoperability of Scala and Java.
After reading this book, you’ll be well versed with this language and its features, and you will be able to write scalable, concurrent, and reactive programs in Scala.
What you will learn
- Get to know the reasons for choosing Scala: its use and the advantages it provides over other languages
- Bring together functional and object-oriented programming constructs to make a manageable application
- Master basic to advanced Scala constructs
- Test your applications using advanced testing methodologies such as TDD
- Select preferred language constructs from the wide variety of constructs provided by Scala
- Make the transition from the object-oriented paradigm to the functional programming paradigm
- Write clean, concise, and powerful code with a functional mindset
- Create concurrent, scalable, and reactive applications utilizing the advantages of Scala
Who This Book Is For
This book is for programmers who choose to get a grip over Scala to write concurrent, scalable, and reactive programs. No prior experience with any programming language is required to learn the concepts explained in this book. Knowledge of any programming language would help the reader understanding concepts faster though.
Table of Contents
- Getting Started with Scala Programming
- Building Blocks of Scala
- Shaping up our Scala Program
- Give meaning to Program with Functions
- Getting Familiar with Scala Collections
- Object Oriented Scala Basics
- Next Steps in Object Oriented Scala
- More on Functions
- Using Powerful Functional Constructs
- Advanced Functional Programming
- Working with Implicits and Exceptions
- Introduction to Akka
- Concurrent Programming in Scala
- Programing with Reactive Extensions
- Testing in Scala
Author(s): Vikash Sharma