![]() |
VOOZH | about |
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
OK
A Practical Guide to Better, Cleaner Code with Functional Programming
In Functional Design, renowned software engineer Robert C. Martin ("Uncle Bob") explains how and why to use functional programming to build better systems for real customers. Martin compares conventional object-oriented coding structures in Java to those enabled by functional languages, identifies the best roles for each, and shows how to build better systems by judiciously using them in context.
Martin's approach is pragmatic, minimizing theory in favor of "in the-trenches" problem-solving. Through accessible examples, working developers will discover how the easy-to-learn, semantically rich Clojure language can help them improve code cleanliness, design, discipline, and outcomes. Martin examines well-known SOLID principles and Gang of Four Design Patterns from a functional perspective, revealing why patterns remain extremely valuable to functional programmers, and how to use them to achieve superior results.
"Functional Design exudes 'classic-on-arrival'. Bob pulls back the curtain to reveal how functional programming elements make software design simple yet pragmatic. He does so without alienating experienced object-oriented programmers coming from languages like C#, C++, or Java."
--Janet A. Carr, Independent Clojure Consultant
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
For those who want to increase their skills and proficiency to the level of a Master Craftsman.
This book is a practical guide for programmers aiming to use functional programming languages effectively. It focuses on real-world applications and avoids delving into theoretical aspects like Monads, Monoids, Functors, and Categories, which are already integrated into common languages, libraries, and frameworks. Instead, it emphasizes how and why to use functional programming in everyday software development, comparing coding structures in object-oriented languages like Java to those in functional languages like Clojure. These languages were chosen for their widespread use (Java) and simplicity (Clojure).
Explore how and why to use it in your day-to-day development. Start coding more efficiently today!
Robert C. Martin ("Uncle Bob") wrote his first line of code at the age of 12 in 1964 and has been employed as a programmer since 1970. He is cofounder of cleancoders.com, offering online video training for software developers, and is founder of Uncle Bob Consulting LLC, offering software consulting, training, and skill development services to major corporations worldwide. He served as the Master Craftsman at 8th Light, Inc., a Chicago-based software consulting firm. Mr. Martin has published dozens of articles in various trade journals, authored many books, and is a regular speaker at international conferences and trade shows.
Discover more of the authorβs books, see similar authors, read book recommendations and more.
Robert Cecil Martin (colloquially known as Uncle Bob) is an American software engineer and author. He is a co-author of the Agile Manifesto.
Bio from Wikipedia, the free encyclopedeia. Photo by Tim-bezhashvyly (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons.
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we donβt use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonAlthough many argue that using a functional language eliminates much design, "Uncle Bob" does a great job illustrating that the two approaches are not mutually exclusive, but actually beneficial. Kudos!
I was looking forward to this book, but am returning it due to poor print quality. Many pages appear blurry because the font seems like it was subtly smeared during printing.
This book contains a solid amount of knowledge and ideas behind the functional approach.
The main drawback, however, is the programming language used: Clojure.
It is dynamically typed, with no types in function signatures.
This makes it rather difficult to follow long blocks of codeβand believe me, there are long blocks of undocumented code in this book.
And yes, I believe Mark Seemann can follow it, as he wrote in his review. But no, I cannot.
I really wish Scala had been the language of choice instead; it is much more readable and statically typed. With type annotations, Scala code is much easier to follow.
Not to mention all the parentheses and prefix notation in Clojure. Being not an expert, what you mostly notice when looking at Clojure code are the parentheses, not the actual logic.
Thus, I give it a 3 out of 5. I highly appreciate the effort, but I believe there were better options available.
I'm a big fan of both Uncle Bob and functional programming. However, I found this to be the least approachable of any of his books. Why? Uncle Bob explains on page 259:
"I expect that as you read this book, you will have a good Clojure reference nearby"
That warning should have been on the cover. All of his functional programming examples are in Clojure. He does explain the basics of Clojure, and ramps it up with lots of footnotes. That was fine for the simple examples, but as the code became more involved, it was harder and harder to follow since my brain doesn't think in Clojure.
That being said, it is still a good book even if you start glossing over the code examples. Uncle Bob does a great job of contrasting FP and OOP. However, he goes from there back to showing how they are actually quite similar. He spends much of the book showing how the SOLID principles and a selection of design patterns are equally useful to either paradigm, just executed differently.
Uncle Bob also adds some much needed nuance to some of the oft sited advantages of functional programming. For example: "You can't have race conditions in functional programming." -> "Wrong. FP eliminates certain types of race conditions. Here is an example of a race condition in a functional program."
In the end, this book helped expand my ability to work within the strengths of both paradigms, and stop seeing them as mutually exclusive.
I am commenting on the terrible printing job the publisher has done. Pages are black speckled and not pure white. The paper is very thing and see-through so you can see the text/images printed on the reverse of a page. Reads more like a news-paper than a book. Pearson Addison-Wesley: shame on you! ...with my apologies to one of my favorite authors, uncle Robert C. Martin. (Pls send me a "real book" free of charge when you can.)
The book completely demystifies Functional Programming. Amazing explanation of SOLID principles with practical examples.
If you follow uncle Bob you'll know he's been threatening to write a book on Clojure for some time: this is it.
So if you're not after a book on how to write Clojure, this one's not likely to scratch your itch.
I'm still reading but, the name of the author says it all. Focus on what it really matters on a topics, or at least in my opinion, he has this skill to guide me connecting all the dots.
