First thing first, what is functional programming?
In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It is a declarative programming paradigm, which means programming is done with expressions. In functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function f twice with the same value for an argument x will produce the same result f(x) both times. Eliminating side effects, i.e. changes in state that do not depend on the function inputs, can make it much easier to understand and predict the behavior of a program, which is one of the key motivations for the development of functional programming.
Source : Wikipedia
Functional Thinking: Paradigm Over Syntax is an intermediate level book about functional programming features in Java and other languages. This is an in-depth guide that goes beyond syntax and demonstrates some new ways of thinking in programming languages.
The author, Neal Ford is an Application Architect at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery.
Each chapter from the book shows you various examples of functional thinking, using numerous code examples from Java 8 and other JVM languages that include functional capabilities. This book may bend your mind, but you’ll come away with a good grasp of functional programming concepts.
- Understand why many imperative languages are adding functional capabilities
- Compare functional and imperative solutions to common problems
- Examine ways to cede control of routine chores to the runtime
- Learn how memoization and laziness eliminate hand-crafted solutions
- Explore functional approaches to design patterns and code reuse
- View real-world examples of functional thinking with Java 8, and in functional architectures and web frameworks
- Learn the pros and cons of living in a paradigmatically richer world
Table of Contents
Chapter 1 – Why
Chapter 2 – Shift
Chapter 3 – Cede
Chapter 4 – Smarter, Not Harder
Chapter 5 – Evolve
Chapter 6 – Advance
Chapter 7 – Practical Thinking
Chapter 8 – Polyglot and Polyparadigm
Chapter 1 is an introduction to functional thinking while Chapters 2,3,4 show code examples of common programming problems that can be solved with functional programming languages.
Chapter 5 highlights that programming languages are already evolving to become more functional and Chapter 6 advances to design patterns in functional programming.
Chapter 7 takes a dive to Java 8 functional features and how they can fit into other languages.
The final chapter summarizes the common programming languages and their placing along two axes, a strong and weak axis versus a dynamic and static axis.
This is an intermediate level guide on functional programming. For any beginners, they might actually need a better understanding of functional programming before going for this. However, the introduction and ending chapters are good for beginners too.
Overall, this book provides useful code examples where functional programming can be beneficial and promotes the idea and possibilities of solving current programming problems with functional languages.