A few days ago, after browsing the Coffeescript
docs and examples, I tweeted
, "I will take your new language seriously when you have a symbolic debugger for it. For it
is a program that lets you watch and control another program. (If you've never used one, have a look at this 6-minute video
.) Instead of staring at your code, trying to figure out why it's broken, or adding 'print' statements left and right to display values, debuggers let you stop the program at any point and look at the values, or tell the program to execute one line at a time so that you can see which "if/else" branches it's taking, what parameters are being passed to function calls, and so on.
Debuggers make programming much less painful and much more productive, but a lot of students never pick up the habit of using one. Personally, I think this is because teachers have never figured out how to put questions about using debuggers on mid-terms: most computer science programs don't have an equivalent of the "lab exams" that are common in chemistry and biology, and if students are never examined on their ability to do things the right way, they never have
to climb the learning curve. But that's just a guess, and tangential to the main point of this post.