Re: UNDO and Mathematica - how useless is it?

*To*: mathgroup at smc.vnet.net*Subject*: [mg97936] Re: UNDO and Mathematica - how useless is it?*From*: AES <siegman at stanford.edu>*Date*: Thu, 26 Mar 2009 05:20:33 -0500 (EST)*Organization*: Stanford University*References*: <gqd1p2$nrt$1@smc.vnet.net>

In article <gqd1p2$nrt$1 at smc.vnet.net>, Bob F <deepyogurt at gmail.com> wrote: > > So, hey Wolfram -- please fix the UNDO. Make it work like every other > program on the face of the planet, even the entire Solar System, even > the known and unknown universe!!!!!!!!!! Even one level of UNDO would > have saved me hours of working, let alone a multiple level UNDO like > you see in so many other programs. > I suspect this is a near impossible task logically -- and the inability to have a real UNDO is another (but only one) of the many reasons why Conrad Wolfram's concept of "Mathematica: The All-In-One System" The Wolfram Video Gallery <http://www.wolfram.com/broadcast/videos/> ==> <http://www.wolfram.com/broadcast/videos/?video=onesystem/onesystem> is IMHO a *fundamentally* bad idea. In many (most?) conventional software applications, you have a *program*, which operates (using operations implemented under user control) on a separate *document* of some sort. If you do a sequence of those operations, and then decide you want to reverse some or all them (because you made a mistake, or just changed your mind), in almost any conventional app you can back up at least one step using UNDO; and in many applications you can back up a near-unlimited number of steps, all the way to when you opened the document -- and then step back forward on the same chain if you want to. In Mathematica, however, the notebook is typically both the program *and* your document. Some steps you take, or operations you invoke, edit the "program" part of the notebook; some may edit "data" parts of the notebook (or even "results" parts); some may *execute* one or more program parts of the document -- which may well operate on, and modify, in multiple stages, any and all of the "program", "data", and "results" parts of the notebook. At this point, is there a single obvious choice as to what is meant by UNDO? You might want, but could you get, a complete massive "UN-EXECUTE" of the massive (but now unwanted) execution you just invoked? And suppose you suddenly realize this only after several you've invoked several more operations, edits, commands, whatever? I don't have anywhere near enough depth in logical analysis or computer programming to know whether or not a complete multistep or even single-step UN-EXECUTE is always possible in a system like Mathematica, other than with some kind of brute force saving of the complete state of the system. Even if this is possible, having enough memory to do this for multiple steps back seems impossible -- not to mention taking into account various *outside* events (like computer clock time) that might influencing the evaluation, un-evaluation, and re-evaluation. So, I continue to suspect that having any kind of user-comprehensible, multi-stage UNDO in Mathematica is a near impossible task, if not logically then realistically -- and this rather minor but non-trivial problem joins many other important more concerns (like unacceptable complexity of the user interface and syntax, and of the user documentation, not to mention suppression of software innovation) as reasons why the all-in-one model of Mathematica, while it may have a role in providing a massive all-in-one programming system for highly trained professional programmers, who are hired to write applications for others, is pretty likely to destroy Mathematica as a usable system for "ordinary" non-computer-expert users, who just want to use it to solve much smaller problems in their own field.