Functional and concurrent programming paradigms can help experienced object-oriented developers write high-quality software faster: code that's easier to understand, debug, optimize, and evolve. But these approaches have often been surrounded by mystification and misconceptions, leading many developers to avoid them. In Functional and Concurrent Programming, Michel Charpentier clears away the confusion, showing how to use these features safely and well, so you can gain their benefits without their pitfalls. Writing for developers with some object-oriented experience in Java, C++, C#, Python, or elsewhere, Charpentier teaches key concepts through the use of realistic, modern examples: code written in Scala, but relevant to users of any modern object-oriented language. As a hybrid language, Scala can be used effectively to illustrate both object-oriented and functional programming; it offers advanced features for concurrency; and it interoperates with Java, and can use many components of