Holy cow, I wrote a book!
In an earlier comment,
Aswin Gunawan asked why the Run dialog does autocorrection
but not the Run key?
One is a programmatic interface and the other is an end-user control.
End users are not expected to be understand how computers do things.
They want, and even expect, the computer to help them out with what
This means spell-checking, guessing missing information,
and generally "doing what I mean".
For example, web browsers don't require you to type
"http://" or "ftp://" in front of web addresses any more;
they guess whether you're trying to connect to an FTP site or an HTTP site
based on context.
Of course, sometimes the computer guesses wrong—maybe
you really wanted to use HTTP to connect to a site whose name
begins with "ftp."—in which case you can re-enter the
command and provide more information so the computer won't have
to guess as much.
Programming interfaces, on the other hand,
are for people who do understand how
computers do things.
If a program makes an invalid request to a function,
the expectation is that the function will return an error
and not try to "guess" what the programmer "really meant to do".
Because a computer program can't look at the "autocorrected"
result and say, "No, that's not quite what I meant,"
and retry the operation with "a few more hints".
(Heck, if the program had "some more hints", why not just
pass the "fully hinted" version in the first place?
Save you the trouble of calling the function twice.)
Computer programs prefer predictability.
Autocorrection and context-driven guessing are unpredictable.
Imagine how much harder it would be to write code
if a stretch of code changed it behavior based on
fuzzy logic like
"Well, there was a file in the directory that had
a similar name, so I used that one instead",
or "This class doesn't have a field called 'current',
but the one over there does, so I'll guess that you meant that one."
I'm sure some people will point out that
the CreateProcess function breaks this rule
of "don't guess; just fail".
We'll discuss this next time.