Programming: Principles and Practice Using C++
Editions:Paperback
ISBN: 978-0321992789
Pages: 1,312
Kindle
ISBN: B00KPTEH8C
Pages: 1,282

This book by Bjarne Stroustrup, the creator of C++, serves as a comprehensive introduction to programming, with a focus on modern C++ (C++11 and C++14). It is designed for both beginners and experienced programmers seeking to deepen their understanding of the language. The book emphasizes fundamental concepts and techniques crucial for writing correct, maintainable, and efficient code. It also covers object-oriented and generic programming, introducing the C++ standard library early on to simplify tasks.

The first half of the book addresses essential programming principles, including input/output, computation, and simple graphics. The second half delves into more advanced topics such as text processing and testing, offering ample reference material. While the book is accessible to beginners, it challenges readers to engage deeply with the material through exercises and real-world programming tasks.

Many reviews commend the book’s thoroughness and technical depth. It’s not a quick-fix guide but a rigorous tutorial that encourages independent learning and problem-solving. While some found the style demanding, especially for self-learners, those who persisted appreciated the insights gained, particularly regarding modern C++ practices. The book is highly regarded for its balance of theory and practice, with many programmers, even experienced ones, finding it valuable for filling gaps in their knowledge.

Key highlights of An Introduction to Programming by the Inventor of C++:

  • Comprehensive Introduction to Programming: Designed for beginners and experienced programmers, the book provides a solid foundation in programming, focusing on real-world applications.
  • Focus on Modern C++ (C++11 and C++14): It emphasizes modern C++ features, including object-oriented and generic programming, with early introduction of the C++ standard library.
  • Deep Exploration of Core Concepts: Unlike many beginner books, it delves deeply into fundamental programming concepts and techniques, ensuring readers gain a thorough understanding of coding practices.
  • Real-World Problem-Solving: The book encourages practical learning with exercises, examples, and drills that mirror real-world programming challenges, making readers proficient in developing correct, maintainable, and efficient code.
  • Structured for Self-Learning: While designed for classroom use, it's also suitable for self-study. The text challenges readers to learn independently, encouraging research and problem-solving skills.
  • Two-Part Structure: The first half covers essential concepts like computation and simple graphics, while the second half explores advanced topics like text processing, testing, and C language integration.
  • Practical and Technical: Reviewers praise the book’s balance of technical depth and practicality, providing insights for both beginners and those transitioning from other languages.
Published:
Reviews:Jared T on amazon.com wrote:

Don’t listen to the reviews that say “not for beginners”. Yes, there are parts of this book that seem impossible to get through if you’re the type who wants be spoon fed the solution to a problem. If you just want a book that will show you a bunch of code examples and problems with easy solutions, and doesn’t actually teach you how to program (in other words, you want to learn a programming language but don’t actually want to learn how to program), this book is not for you. There are tons of “learn in 1 hour” type books that you would be better served by. But if, on the other hand, you want to learn, you actually take in the advice presented in this book, put in the work, and are the type of person who enjoys solving real world problems and are able to independently do some research when you get stuck (in other words, if you have what it takes to be a programmer), then this book is exactly for you.

There are a few chapters where you will have to go out of your way to get the code to work, such as the graphics chapters. You will have to figure out how to get a framework called FLTK installed and working in order to work through those chapters. It won’t be easy and this book will not hand you the answer to that issue. It will guide you and lead you in the right direction, but it won’t hold your hand. But if you can’t handle that “inconvenience”, you’re never going to be able to handle being a programmer, and you should probably just return the book. That part of the book took me months to figure out but it made me a better programmer (which is this book’s primary goal).

To quote a paragraph from the beginning of this book:
“This is not the easiest book on beginning programming; it is not meant to be. I just aim for it to be the easiest book from which you can learn the basics of real-world programming. That’s quite an ambitious goal because much modern software relies on techniques considered advanced just a few years ago.“
I don’t think one person who gave this book a bad review bothered to read that paragraph.
This is the only book I know of that will start you on the road to real world programming, and if that’s your goal, buy it. You won’t be sorry. This book isn’t for everybody, but not everybody is meant to be a programmer.

NP on Amazon.com wrote:

This is a great book that focuses equally on programming and C++. Mr. Stroustrup obviously knows his language, and the book is incredibly thorough.

To be honest—and I don't know if this is because English is his second language or his style of thinking—the author seems to be a better designer than teacher. The concepts and techniques used in the book are challenging and explained in a no-nonsense approach, which I appreciate, but they often come across as unclear. I would read each chapter carefully and code every single example I came across, but when I reached the end and would do the exercises I'd feel like he spent so much time on the mechanics of each C++ feature that he forgot to explain the practical application. This book is supposed to be for beginners, and if you're studious and eager to wrap your mind around pretty complex stuff you definitely could start this book with no previous programming knowledge or experience. However, even with a light programming background (I'd learned some C++ a while back) I felt more like I was reading a linear reference manual focused on features rather than a guide on programming/C++.

That's not to say don't get the book; if anyone is an authority on his language, it's Bjarne Stroustrup. Just be prepared to face more technicality than practicality in use, because the man is a genius computer scientist and an okay teacher. That being said, this is one of the better C++ books I've checked out and a staple in my programming library.

Tae on Goodreads.com wrote:

This book was written for people who have no background in programming, but I could not have learned to program with it. For people with a background in programming, it is a looong book, that have a lot of information.

ERIK MIDTSKOGEN on https://amzn.to/3ZDexan wrote:

I am a software engineer with ~16 years experience, mostly in Java and C#, with a little C++ early on, and I have recently been getting back into doing more C++. However, I've struggled a bit lately because C++ is a much thornier language than Java and C#, and it has also moved on from that it used to be.

The consensus of the online reviews seemed to be that people with experience in other mainstream languages can just jump straight into one of Stroustrup's more advanced C++ books. That turned out to be poor advice. So, I swallowed my pride and started (re)learning C++ from the ground up with this book. Although it is true that I already knew a fair amount of the subject material—especially in the earlier chapters (e.g. what functions/methods, classes, and templates are)—it's also true that this book has taught me many small but critically important things specific to modern C++ that have filled in holes in my knowledge that were holding me back.

This book is a true tutorial format. It has careful, clear, and well-thought-out explanations of all subject material. That coverage is cemented with drills and exercises. During the course of experimenting with the drills and exercises, I discovered and fixed many basic holes in my knowledge that I hadn't even known I had.

So, even though this book is accessible to a first-time student of programming, if you're coming into C++ from another language, I would still recommend it. You may end up skimming some of the content, but you'll also be surprised at how much extra knowledge you need before you can be proficient in C++. Until you gain this knowledge, many of the drills and exercises in this book will stop you in your tracks where you thought you were going to breeze right through.


Programming: Principles and Practice Using C++