Re: Re: my wish list for Mathematica next major version

*To*: mathgroup at smc.vnet.net*Subject*: [mg60077] Re: [mg60064] Re: my wish list for Mathematica next major version*From*: "David Park" <djmp at earthlink.net>*Date*: Thu, 1 Sep 2005 02:13:12 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

It is interesting to hear what things bother students because that is important information. I'm not certain that a debugger is the best solution. Rather, I suspect that students have not learned well enough how to use Mathematica. Specifically they should learn that it is an interpreted language and not a low level, compiled language like C. There are certain prices to pay in having an interpreted language, but there are also certain benefits and easy development of routines and calculations is one of them. When users get into trouble they are often trying to do too much at once. I usually develop a calculation one step at a time and look at the output. It is not always what I was expecting. One can put a number of steps together in ONE cell, each step on a separate line. Then examine the output, make corrections and reevaluate. If I'm satisfied that certain steps are working correctly I suppress the intermediate output with a semicolon. When that works I usually construct a routine. If I have trouble with a routine, usually in the form of a Module, I insert Print statements to print a location and values of variables at that location. If I want to stop at a location I insert Print[...]; Abort[]. However, your posting roused me to further investigate the debugging facilities of Mathematica. I discovered there is something very close to the debugger that you want. It's called Dialog. It allows you to stop at a given point, look at the values of various variables, and continue on. Here is a simple example: foo[x_] := Module[{y, z}, y = x^2Mod[3, x]; z = Sin[y]; Dialog[DialogSymbols :> {xx = x, yy = y, zz = z, xmod = Mod[3, x]}]; y + z] Evaluating foo[5] 75 + Sin[75] opened a Dialog, but the result was not yet present. (This is just a horizontal line in the notebook where you can type commands. You could open a new blank notebook and type the commands there.) Then entering {xmod, xx, yy, zz} {3, 5, 75, Sin[75]} Entering Return exits the Dialog and completes the evaluation of foo[5], which appears after the foo[5] Input cell. If you have several debugging dialogs you can use the option DialogProlog :> Print["point1"] to print the location of the particular Dialog. So, why isn't that a fairly good debugger? David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: carlos at colorado.edu [mailto:carlos at colorado.edu] To: mathgroup at smc.vnet.net I fully agree with the first item. Each year I normally teach 3 engineering courses (2 graduate, 1 undergraduate) that use Mathematica as one of the tools for problem solving. Typical undergraduate enrollment: 80-100, graduate: 35-50, so it is not a tiny sample. By far the 3 biggest complaints heard year after year: 1) Incomprehensible and untraceable error messages. 2) Lack of a simple debugger. Doesnt have to be GUI or incremental. Anything is better than nothing. 3) Lack of effective interrupts. If user commands a stop, stop instantly, wherever you are in a cell, and tell user exactly where it did. These are largely beginner users, not difficult to please. For 1) they would be ecstatic with a low-tech device called a line number. In[] and Out[] baffle beginners since they are dynamic. Since they serve no useful purpose, as a teacher I would be very happy to see that 1980's anachronism removed, and replaced by invariant markers.

**Follow-Ups**:**Re: Re: Re: my wish list for Mathematica next major version***From:*Pratik Desai <pdesai1@umbc.edu>

**Re: Re: Re: my wish list for Mathematica next major version***From:*János <janos.lobb@yale.edu>