the new math: old battle of the lovees was: PDP1 3588
It's a combination of analytical thinking, analytical meta-thinking (if I may coin a phrase), and experimentation.
The ones I mentioned before, who come into my office for help and don't know where the program is crashing, lack analytical thinking. The program they wrote is a big wad of code, and they really don't have a mental model of what it's doing.
the new math: old battle of the lovees was: PDP1 3589
You have my permission; splitting the process up into these three categories is very useful. This is...
What I mean by analytical meta-thinking is reflecting on their own buttumptions and evaluating their models of what the program is doing. The ones who lack this want to know why I want to put a breakpoint *there*, since they know what the program is doing. If the program was doing what they thought it was, they wouldn't have a bug.
the new math: old battle of the lovees was: PDP1 3590
snip Very closely related indeed, and probably with similar, um, "installed bases". I should probably also have mentioned that in most of my recent experience with other people's code, the other people have been undergraduates...
Finally, what I mean by experimentation isn't the evolutionary debugging "strategy" somebody else brought up, it's real experiments in which you insert a breakpoint or a watchpoint to see if the program is doing what you think it is. The ones who don't think in terms of experimentation are surprised that I want to watch the program run at all, instead of poring over the code until I see the bug. -- Joseph J. Pfeiffer, Jr., Ph.D. Phone -- (505) 646-1605 Department of Computer Science FAX -- (505) 646-1002
Alt Folklore Computers Newsgroups