The story is told that IBM briefly considered a Unix-like operating system for the first PC, but rejected it on the grounds that Unix was "too obscure"; they decided they wanted something simpler and cleaner for the masses. What they ended up with, though, was of course a pathetic little watered-down toy which is indeed, on one level, simple and easy to learn, but only because it's so simplistic and feature-barren; there isn't much to learn.

  • Complaint about Unix: command line interface is cryptic; hard to remember command names; hard to remember to hit RETURN after every command. "Improvement" in MS-DOS: none; still uses command line.
  • Complaint about Unix: single-character command line options are obscure and inconsistent. "Improvement" in MS-DOS: none; still uses single-character option flags.
  • Complaint about Unix: too many dangerous, excessively-powerful features. "Improvement" in MS-DOS: hardly any features at all.

Consider the MS-DOS find command, which is roughly (very roughly) equivalent to the Unix grep. Now, it's not too surprising that find supports no notion of regular expression patterns to search for; regexps are indeed complicated and obscure, so it's arguably appropriate for a simpler, less-powerful system to support only fixed-pattern searches. (In other words, what find is more equivalent to is fgrep.) Now, what is surprising is that find doesn't support wildcards in its input filename argument, either -- in other words, you are restricted to searching for that one fixed string in just one file whose name you give explicitly. I am still at a loss to explain what the find command could ever have been useful for, since nine times out of ten, you're not sure which file contains the string you're looking for, and the reason you want a string-finding command is to search in a number of files to find it.

Among the nicest features of MS-DOS is the extreme robustness of its filesystem. You can shut a DOS machine off with the power switch and never (well, hardly ever) lose any data. But this resiliency comes at a terrible, terrible price: all data is written directly to disk, immediately, synchronousely. There is no disk block caching, which means there's nothing lying around unwritten when you hit that power switch, but which also means you do an awful lot of waiting for stuff to write to disk, during which time you can't do anything. You spend even more time waiting for stuff to be read from disk, because not only isn't there any caching or any writebehind -- of course there isn't any readahead either.

[Disclaimer: I'm sure some latter-day version of MS-DOS eventually acquired some semblance of disk caching, and that the find command eventually learned how to grok/glob wildcarded filenames, but not anywhere in at least the first 5 versions, as far as I can remember...]

Log in or register to write something here or to contact authors.