Slashdot Mirror


The History of the "Undo" Function?

TheLocustNMI asks: "So, earlier today as I was typing out some magnum opus of a stored procedure, I highlighted to copy it, and hit SPACE instead of Ctrl-C. Without thinking, I hit Ctrl-Z to 'undo' my folly. Pausing a moment to reflect, I realized that I own countless hours of thanks to whomever came up with the "undo" button. In short -- my question is this -- where did it come from? What are the earliest implementations of the 'undo'? (a quick googling returns this page, a cornucopia of undo and history related treatises)"

5 of 61 comments (clear)

  1. Arabian Nights? by MarkusQ · · Score: 3, Interesting

    IIRC, there was an example in the Arabian Nights. Of course, this was long before computers but it still worked like magic.

    -- MarkusQ

    P.S. On a more serious note, I wouldn't be all that shocked to learn that 'undo' wasn't implemented on a computer before the 1970s. My main reason for thinking that is that it is relatively expensive, and really only useful in interactive environments. When you're editing your program by manually shuffling h-cards, there isn't much sense in having "undo".

  2. Re:Try thinking "Command-Z" ... by Balorn · · Score: 2, Interesting

    Hmm, I'm pretty sure it was always Command-Z, no mousing required, but it was before it was called the Command key. It was just that key with the weird symbol on it (personally I called it "funnykey" back in the mid-80s). The Jargon file lists it under "feature key".

    I know on the IIgs and some Mac keyboards it was the same as the open-Apple key (I forget what the closed-Apple key was used for). On the original mac, though, I think it just had the symbol. A google search on Apple's site turns up a number of images of keyboards among other things, though not one of the original Mac.

    So the question left is, was there a documented implementation of Undo on a computer before the original Mac? Perhaps in some old word processing programs? I know there were some I used on the Apple II, but I certainly can't remember what functions they had after 20-some-odd years.

    --
    http://www.balorn.net/
    ?
  3. Re:Since the dawn of computing... by exp(pi*sqrt(163)) · · Score: 3, Interesting

    It's not easy to implement. It's actually a lot of work. Suppose, for example, you're building a 3D animation system and every operation needs to be undoable. Every time you tweak a vertex, or intersect two polyhedra, or retesselate a primitive you need to have a way of undoing it. This isn't just a few lines of code. It means that every time you write some code to do anything you need to write code to undo it. This is a lot of work.

    --
    Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
  4. Re:I'd like to know by exp(pi*sqrt(163)) · · Score: 4, Interesting

    Here's what one well known Academy Award winning 3D package does. Every command is an object. When you execute a command that object is stored in a 'history'. The command has two methods, a do() method and an undo() method. As long is the object remains alive it can undo or redo the associated operation.

    --
    Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
  5. "Commit" = "Undo" by dpbsmith · · Score: 4, Interesting

    I remember a rudimentary CAD program for the Apple ][+, circa 1982 or 1983. I wish I could remember the name...

    I personally first encountered "Undo" on the Mac in 1984. But this CAD program had a function... they didn't call it "commit." I don't remember the exact language they DID use.

    The idea was that you never had to worry about making mistakes, because every action you took was tentative, and would be shown to you as a preview before taking effect.

    So you'd give a command to draw a line, you'd see the line onscreen, and you could either accept it (in which case it became part of the drawing) or reject it (in which case it disappeared).

    The weird thing about all this is that logically, it is exactly equivalent to an "undo" function.

    And the even weirder thing is that while an "undo" function feels empowering and liberating... when the exact same function was presented as "tentative action, preview, accept/reject" it felt clumsy and laborious.

    To me, anyway.