Think Like a Programmer
An Introduction to Creative Problem Solving
by V. Anton Spraul
The real challenge of programming isn't learning a language's syntax—it's learning to creatively solve problems so you can build something great. In this one-of-a-kind text, author V. Anton Spraul breaks down the ways that programmers solve problems and teaches you what other introductory books often ignore: how to Think Like a Programmer. Each chapter tackles a single programming concept, like classes, pointers, and recursion, and open-ended exercises throughout challenge you to apply your knowledge.
Has anyone here read it? Would you care to review it?
The blurb starts off well, but when it gets to "Each chapter tackles a single programming concept"...
Most books tackle one programming concept at a time. Why should that matter? I'll have to wait til next month unless someone buys it for me (only have about $16 in my account til the first).
The reviews on amazon suggest it may be geared more toward novice programmers, so I'll save my money until I can look it over in a bookstore or library.
Amazon reviews aren't the best to come to a conclusion by though. Several of the reviews for Bjarne Stroustrup's The C++ Programming Language Special Edition made it sound like it was a book for novice programmers. It is just a fact that novice programmers are the first to buy them and review them while the experienced programmers end up buying it and if they like it they normally keep it to themselves.
[EDIT]
Though, I do love how someone said that learning C++ as your first programming language is a strict no-no. When did that become a rule for learning? You have both ends of the spectrum, some act like it is the best book for novice while others act like only advanced or expert programmers should read it.
Reading the sample chapter made me realize I have that exact problem. I understand the language pretty well, but draw a blank when I start to code. Definitely will get it, added it to my wish list as I'm completely broke til the first. Will write a review of it once I'm done with it (going to just get the cheap $16 kindle format and read it).
The thing that makes me mad is that still too many people have the attitude that you are just born to program and that it can't be learned. I've seen this sentiment all over the web. Which even the author of that book said, if it were true then there would be a lot fewer programmers.
Sure, anyone who can learn can learn to program, in theory; in practice, there will always be differences in people's ability even when you control for the amount of effort they apply.
Take this example. I've been playing the guitar for about six years, since I was 12. My friend Eddie started at about the same time and after a year he was already better than I am now.
It's the same thing that make some people just naturally better at being artistic. Or being a logical thinker. I'm sure given enough effort I could become decent at painting, but I'll never be as good as someone who is predisposed to it when they give the same amount of effort.
Exactly. Some people are good at telling a computer "Hey! Do these things in this order!" (or "Do these things to this data and see what happens!" in the case of functional programming) and some people aren't.
I completely disagree. I think it is the problem solving that is the hardest part of programming. Learning the syntax and grammar is the same as learning a foreign language. There are so many interpretations of how to solve a problem and programming requires more fine tuned solving skills than most things do in order to program. This is one reason I think math is a good thing to do when you are programming as it helps you with problem solving. Don't know if that book will help in that regard though (like I said I can't afford it right now). I'm generalizing everything, but I think if you are going deep into it then you probably need to learn Assembly at that point as C++ (and other modern languages) abstracts things enough to not require the intimate understanding of computers that assembly did.
With what? You kind of just restated our point there. Some people are naturally more inclined to be better problem solvers than other people. Which is why some people pick up math with almost no issues, while others struggle through math their whole life.
How about programmers having to be logical on the one hand and creative on the other? The language side is very logical, it is a set of rules that you should be able to learn (some will learn them easier than others). The problem solving side is altogether more tricky. Some aspects of it can be taught, kind of like pattern recognition. If the problem has these characteristics look along these lines for a solution This would seem to be where this book comes in (I've only had a quick look at the sample chapter).
Other aspects of programming are more creative and I don't think you can teach creativity (you may be able to guide them towards it).
It's kind of like this for photography. You can teach someone how to setup the camera and lighting correctly, some basic rules of composition and they should be able to produce good photos. Going beyond that has to come from the student.
With what? You kind of just restated our point there. Some people are naturally more inclined to be better problem solvers than other people. Which is why some people pick up math with almost no issues, while others struggle through math their whole life.
No I didn't. You both basically came off with the attitude also of you either can or can't program which I don't believe is true. Programming is such a wide field that I feel there is a programming job for anyone that is interested in programming. This is why I refuse to believe that only certain people can program.
In college, when we did our team project (well our second one, I'd rather forget the first one), I got stuck doing the 3D models and such for it, but the best programmer out of us did the core engine coding, the one that wasn't good with problem solving, but was good with numbers did the coding for the UI. I got stuck doing the models because I apparently was the only one on the team that had dabbled in anything other than programming.