Review of 'Functional Thinking: Paradigm Over Syntax' on 'Goodreads'
2 stars
I was disappointed in this book. It is really about ways in which you can force Java to adopt functional mechanisms. But (as Ford himself has advocated) in a decentralized software environment, one shouldn't have to continue to use Java. I would have been more interested in the specifics of the functional pearls to learn, using Groovy or Closure or Scala (etc) as the example language, rather than a multi-page source code extravaganza showing how Java might use a 3rd party extension (support for which is unclear) to achieve the same results.
The best part is the latter chapters, when Ford begins to explain how common OO patterns (Strategy for example) can be more easily done functionally. However, throughout the book there is a complete lack of insight into exactly how implementing things functionally will improve X. We don't even get a sense for what X is - productivity? maintenance …
I was disappointed in this book. It is really about ways in which you can force Java to adopt functional mechanisms. But (as Ford himself has advocated) in a decentralized software environment, one shouldn't have to continue to use Java. I would have been more interested in the specifics of the functional pearls to learn, using Groovy or Closure or Scala (etc) as the example language, rather than a multi-page source code extravaganza showing how Java might use a 3rd party extension (support for which is unclear) to achieve the same results.
The best part is the latter chapters, when Ford begins to explain how common OO patterns (Strategy for example) can be more easily done functionally. However, throughout the book there is a complete lack of insight into exactly how implementing things functionally will improve X. We don't even get a sense for what X is - productivity? maintenance costs? speed? The analytic argument that abstracting state to the language will improve understanding is reasonable, but no evidence is presented to back this up.
Ultimately the question has to be whether adding functional thinking to your codebase is worth the cost - of reworking the code, of adding a second paradigm one needs to understand. Ford does not present much evidence of this. As far as I can tell most places that really benefit from functional programming already use it.