For instance, you can think of an <h1> tag as a "command" to a "browsing device" to start rendering text as a level one header. The end tag, </h1> can similarly be thought of as a command to stop rendering text as a level one header. And so forth.
There's only one problem with that - HTML tags are requests, not commands. And, no, I'm not thinking in terms of Turing completeness. I'm thinking in terms of the difference between a command and a markup tag. A command (which may or may not be part of a Turing-complete language) is not a request or an option. It's a requirement. If the recipient of an "executable command" does not perform the action in a well-defined manner (that is not implementation-dependent), then the recipient is broken.
HTML, on the other hand, is completely optional and implementation-dependent. Yes, we have certain expectations of how a standard browser on a standard computer is going to behave and we would definitely consider IE or FF buggy if it displayed h3 tags as bigger than h1 tags. However, go watch a blind guy on the Net for a few hours and watch how his browser handles tags. Half are ignored and the other half are rendered in speech emphasis, not upon the screen. And, what about mobile devices?
The gist is that HTML is a format for specifying how to optionally decorate plaintext. It has nothing to do with commands, executables, or anything else of the sort.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?