Slashdot Mirror


Bill Gates Says He's Sorry About Control-Alt-Delete (qz.com)

An anonymous reader quotes a report from Quartz: At the Bloomberg Global Business Forum today, Carlyle Group co-founder and CEO David Rubenstein asked Microsoft founder Bill Gates to account for one of the most baffling questions of the digital era: Why does it take three fingers to lock or log in to a PC, and why did Gates ever think that was a good idea? Grimacing slightly, Gates deflected responsibility for the crtl-alt-delete key command, saying, "clearly, the people involved should have put another key on to make that work." Rubenstein pressed him: does he regret the decision? "You can't go back and change the small things in your life without putting the other things at risk," Gates said. But: "Sure. If I could make one small edit I would make that a single key operation." Gates has made the confession before. In 2013, he blamed IBM for the issue, saying, "The guy who did the IBM keyboard design didn't want to give us our single button."

1 of 320 comments (clear)

  1. Re:That's the one?! by steveha · · Score: 5, Informative

    using the backslash for directory paths when every other OS used normal slashes

    You overlooked one other OS that matters here: CP/M.

    When MS-DOS was first developed, it was not the first DOS on the market; the majority of the business market was using Z-80 processor computers running CP/M. (Home users were on Apple II computers, mostly. Some business users used an Apple II with a CP/M card!) Anyway, MS-DOS looked and worked almost exactly like CP/M. MS-DOS programs were not that different from CP/M, I think deliberately to make it easier to port. The similarities were enough that the company that made CP/M threatened legal action over them. (Bob Zeidman checked the source code and he says no stolen code was present.)

    Anyway, the important thing is: CP/M used forward slash as the punctuation for command-line program arguments. Thus, so did MS-DOS.

    And nobody was really thinking too much about directory separators because CP/M, and MS-DOS 1.x, did not have directories. They used floppy disks, and those disks just had one directory. Just a flat list of files.

    When MS-DOS 2.0 came out, someone was thinking of the slash for directories, because there was an actual command that you could put into your config.sys file that let you switch the character used for command-line switches. This was SWITCHAR and if you set it to - you also set the directory separator to forward slash. It was undocumented! It was never officially supported! And I think MS-DOS 3.0 dropped it and it never returned. (But in Windows, even today, you can just use forward slash as a directory delimiter and it works.)

    I think that Microsoft had the opportunity to push on this. Just say "old MS-DOS apps that are using the old APIs can continue to use forward slash for command-line switches, but any program that works with directories should use the dash. It's The New Standard." I think they could have pulled it off, with some grumbling but nothing serious. But either someone at Microsoft was timid, or else they had an argument about this with IBM and lost, I don't know.

    But way back in the dawn of time, compatibility with CP/M was the reason why forward slash was reserved as the command-line switch marker.

    P.S. I think the registry was a good idea. Having a little database to store options, and have some kind of daemon that owns it, avoids race conditions and is just good sense. However, using an opaque and fragile binary database format was insanity. They could have used a simple text-based format (like .ini files... or, heck, S-expressions!) and saved the world a lot of pain. Or, at least made their binary database less fragile and documented it completely so that third parties could write registry checker tools that could fix corrupted registries or whatever.

    Ideally they should have used JSON for the registry, but I'm pretty sure the registry pre-dates Javascript, let alone JSON as an interchange format.

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely