Functional Programming in C++ teaches developers the practical side of functional programming and the tools that C++ provides to develop software in the functional style. This in-depth guide is full of useful diagrams that help you understand FP concepts and begin to think functionally.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
Well-written code is easier to test and reuse, simpler to parallelize, and less error prone. Mastering the functional style of programming can help you tackle the demands of modern apps and will lead to simpler expression of complex program logic, graceful error handling, and elegant concurrency. C++ supports FP with templates, lambdas, and other core language features, along with many parts of the STL.
About the Book
Functional Programming in C++ helps you unleash the functional side of your brain, as you gain a powerful new perspective on C++ coding. You'll discover dozens of examples, diagrams, and illustrations that break down the functional concepts you can apply in C++, including lazy evaluation, function objects and invokables, algebraic data types, and more. As you read, you'll match FP techniques with practical scenarios where they offer the most benefit.
About the Reader
Written for developers with two or more years of experience coding in C++.
About the Author
Ivan ÄukiÄ is a core developer at KDE and has been coding in C++ since 1998. He teaches modern C++ and functional programming at the Faculty of Mathematics at the University of Belgrade.
Table of Contents
In this substantive yet accessible book, pioneering software designer Alexander Stepanov and his colleague Daniel Rose illuminate the principles of generic programming and the mathematical concept of abstraction on which it is based, helping you write code that is both simpler and more powerful.
If youâre a reasonably proficient programmer who can think logically, you have all the background youâll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem.
As you read this book, youâll master the thought processes necessary for effective programming and learn how to generalize narrowly conceived algorithms to widen their usefulness without losing efficiency. Youâll also gain deep insight into the value of mathematics to programmingâinsight that will prove invaluable no matter what programming languages and paradigms you use.
You will learn about
If you want to learn how to program but don't know where to start, this is the right book and the right language for you. From the first page, our unique self-paced approach will help you build competence and confidence in your programming skills. And Python is the best language ever for learning how to program because of its simplicity and breadth...two features that are hard to find in a single language.
But this isn't just a book for newbies! Our self-paced approach also works for experienced programmers, helping you learn faster and better than you've ever learned a language before. By the time you're through, you will have mastered all of the Python skills that are needed on the job, including those for object-oriented, database, and GUI programming.
To make all of this possible, section 1 of this book presents an 8-chapter course that will get anyone off to a great start. Section 2 builds on that base by presenting the other essential skills that every Python programmer should have. Section 3 shows you how to develop object-oriented programs, a critical skillset in today's world. And section 4 shows you how to apply all of the skills that you've already learned as you build database and GUI programs for the real world.
I was smart enough to earn an honors degree in philosophy from Harvard, but an aptitude test told me to avoid computer programming. I'm sure it was right. But then I designed a learning system for myself that quadrupled my aptitude for learning computer languages. It worked so well for me that I've used it to teach coding to grandmothers, cab drivers, musicians, and 50,000 other newbies.
Quadruple your learning ability.
Washington University research shows that a key teaching method I useâinteractive recall practiceâimproves learning performance 400 percent.
"I don't feel lost and I don't feel that I am forgetting things as I go along." âAmazon reviewer Leonie M. reviewing my second book, A Smarter Way to Learn HTML and CSS
Understanding is easy. Remembering is hard.
Computer languages are not inherently hard to understand, even for non-techies. Remembering is the problem. If you remember all of Chapter 1 through Chapter 10, you'll understand Chapter 11. But you don't remember. Though you read and read, most of it doesn't stick. You don't have a solid foundation to build on. Halfway through the book, it all collapses. That's when most people give up.
Interactive exercises make it stick.
Research shows that you will remember everything if you're repeatedly asked to recall it. That's the beauty of flash cards. But technology offers an even better way to make information stick. With my book you get almost a thousand interactive exercisesâthey're free onlineâthat embed the whole book in your memory. Algorithms check your work to make sure you know what you think you know. When you stumble, you do the exercise again. You keep trying until you know the chapter cold.
"Not only do the exercises make learning fun, they reinforce the material right away so it sinks in deeper." âAmazon reviewer Timothy B. Miller reviewing my second book, A Smarter Way to Learn HTML and CSS
You won't get bored or sleepy.
The exercises keep you engaged, give you extra practice where you're shaky, and prepare you for each next step. Every lesson is built on top of a solid foundation that you and I have carefully constructed. Each individual step is small. But all the little steps add up to real knowledgeâknowledge that you retain.
I finally feel like I KNOW it and won't need to look up the syntax each time..." âAmazon reviewer J. Caritas reviewing my third book, A Smarter Way to Learn jQuery
Really, it ain't that hard.
Reviewing my books on Amazon, readers who've struggled with programming concepts like functions, loops, and scope write, "I had no idea these things were so simple!"
You don't need to be a computer genius to learn Python. You just need to be smart about how you learn it.
This bundle combines two instructional Java books into one:Â
These are the first two books in a series dedicated to learning about Java and Java programming. Java is a simple yet powerful programming language, taught in colleges and used by companies all over the world. It is one of the most common programming languages used in modern business, and a graspable entry into the object-oriented class of programming languages. This book will take you from complete novice to knowledgeable beginner, with an appreciation for the history behind Java development. You will finish this entry in the series with the tools and building blocks necessary to write simple Java programs, and the foundation of learning necessary to advance to the intermediate, more complex facets of Java smoothly and seamlessly.Â
This book covers some of the following topics:Â
...and many more aspects of the powerful Java language. Whether your end goal is to work in Silicon Valley, create games, or build your own app - every journey begins with a single step. Take the first couple of steps on your journey to harness the power of code!Â
PLEASE NOTE: When you purchase this title, the accompanying reference material will be available in your My Library section along with the audio.
Publisher's Note:Â Products purchased from Third Party sellers are not guaranteed by the publisher for quality, authenticity, or access to any online entitlements included with the product.
Manage research, learning and skills at IT1me. Create an account using LinkedIn to manage and organize your IT knowledge. IT1me works like a shopping cart for information -- helping you to save, discuss and share.