Think Like a Programmer: An Introduction to Creative Problem Solving 1st Edition
Use the Amazon App to scan ISBNs and compare prices.
You'll also learn how to:
–Split problems into discrete components to make them easier to solve
–Make the most of code reuse with functions, classes, and libraries
–Pick the perfect data structure for a particular job
–Master more advanced programming tools like recursion and dynamic memory
–Organize your thoughts and develop strategies to tackle particular types of problems
Although the book's examples are written in C++, the creative problem-solving concepts they illustrate go beyond any particular language; in fact, they often reach outside the realm of computer science. As the most skillful programmers know, writing great code is a creative art—and the first step in creating your masterpiece is learning to Think Like a Programmer.
Frequently bought together
A Message From Author V. Anton Spraul
“Over the past 15 years, I've taught programming to countless students from every sort of background. A few of them were naturals, but most struggled, even the ones who would eventually turn into excellent programmers. However, they weren't struggling with the syntax of the programming language, but rather with applying it to solve the assigned problems.
Knowing how to read a program is very different from knowing how to write one. While typical books or training courses are often effective at explaining the individual elements of programming, they tend to offer little advice on combining these elements to solve particular problems. That's where Think Like a Programmer comes in.”
About the Author
- Publisher : No Starch Press; 1st edition (August 12, 2012)
- Language : English
- Paperback : 256 pages
- ISBN-10 : 1593274246
- ISBN-13 : 978-1593274245
- Item Weight : 1.25 pounds
- Dimensions : 7 x 0.7 x 9.1 inches
- Best Sellers Rank: #21,799 in Books (See Top 100 in Books)
- Customer Reviews:
About the author
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
This book is outstanding for the nitty gritty not just of how but WHY we select certain Design Patterns, structures, algorithms, and, in short, solution sets. It is a fun read and if you know any OOP language you'll have no problem with the C++ examples, they are not that advanced, but do make great and unusual points about options in, for example, modifying for efficiency or to avoid "reinventing the wheel" (or as the saying goes, reinventing the flat tire!).
I interview hundreds of prospective coding managers, and I prefer to keep the questions at the 30,000 foot level of this text-- solution strategies, not just coding conventions or syntax. A lot of good people, especially overseas, can code, but very few can adeptly wind through imperative vs. functional, or modular modification vs. untouched APIs that aren't an exact fit to the problem definition.
Everything from sliding puzzles and Sudoku are used by this engaging author to highlight examples not just of solutions but the differences between solution strategy options underlying those choices. The pedagogy is outstanding, as I'm finding with many No Starch titles, and you really remember this author's examples. He doesn't just understand analogy generalization deeply, he uses it adeptly throughout the book. I've found VERY FEW books that even attempt to do this, let alone do it well.
A classic like Code Complete (CC) will give many more of the details that are illustrated in this book, but a triple threat of OOP Demystified, this book, and CC will make your interview, or consulting gigs, go much smoother. If you're considering writing a software book, this is a must read just for the pace, pedagogy and format. NOT a text from the standpoint of "solutions in the back," but great for changing your frame of reference about IT in general and problem solving specifics. Highly recommended.
EMAILER NOTE: If you agree with some other reviewers that C++ is a "bias" you might enjoy Michael L. Scott's: Programming Language Pragmatics, Third Edition -- it is 900 pages and covers problem solving (in general and with specifics) in far more detail, and includes C++, Java, Ada, C# and Fortran in imperative and F#, OpenMP, and Scheme in functional as well as Erlang in concurrent/parallel. Some reviewers took umbrage that the author considers C++ a "real" language, but to be honest, people who code for nuclear plants and jet engines DO use C and C++, and many of them think of scripting languages as kid stuff. This isn't my opinion, just wanted you to understand a lot of the thinking out there. That said, LISP folks look down on C++ folks too in some cases, and circuit designers dealing with ML and Assembler think we're ALL kids!
Library Picks reviews only for the benefit of Amazon shoppers and has nothing to do with Amazon, the authors, manufacturers or publishers of the items we review. We always buy the items we review for the sake of objectivity, and although we search for gems, are not shy about trashing an item if it's a waste of time or money for Amazon shoppers. If the reviewer identifies herself, her job or her field, it is only as a point of reference to help you gauge the background and any biases.
I took off a star because the moment I opened the book (paperback) the binding completely fell off. I fixed it, of course. :)
The author recommends knowledge of or simultaneous study of C++. I feel it would be accessible to any programmer in the C language family. Programmers in other languages could also obtain some benefit, but understanding would be a harder climb.
Sure wish my workplace had allowed the luxury of studying a language before building production applications with it. Some of the author's recommendations in the last chapter are not always within the working programmer's control. The difference between academia and the rest of the world.
All in all, well written, good use of examples, and sensible exercises to put the concepts into practice.
Top reviews from other countries
A tratti è stato addirittura noioso, al punto da saltare alcuni capitoli. Gli argomenti trattati sembrano quasi diretti alle new entry nel mondo della programmazione. Non sto dicendo che questo libro sia per assoluti principianti ma credo che un senior con 10+ anni di esperienza imparerà ben poco da questo testo.
Il libro usa C++ per fare esempi di codice sugli argomenti presi in esame, ma la sua conoscenza non è essenziale al 100%. Una conoscenza di un altro linguaggio C-like sarà abbastanza per poter comprendere questo libro. In aggiunta, vorrei invitare i lettori che non conoscono C++ a non usare questo testo come materiale d'apprendimento per il linguaggio in sé, in quanto il libro è abbastanza vecchio e usa C++98. Gran parte del codice all'interno del libro andrebbe scritto in modo diverso secondo le pratiche del "modern C++".
In conclusione, è un ottimo libro per chi non è "troppo esperto" nella programmazione. Darà ottimi spunti a chi invece non ha molta esperienza e fatica un po' nel problem solving. Da non prendere assolutamente in considerazione se si cerca del materiale su C++ moderno, ma non è quello lo scopo del testo.