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...]