June 22nd, 2005

Why does the Run dialog autocorrect but not the Run key?

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 they’re typing. 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.

Topics
Code

Author

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

0 comments

Discussion are closed.