|« Mexico's Attorney General gets microchip implant||FCC Rules only it can regulate wireless spectrum »|
A recent Slashdot article asked the question, "Favorite Programming Language Features?" and wants to know what feature or features you like most about any particular programming language. I'd like to ask the complimentary question: what do you think are the worst features of programming languages?
Here are some (of my opinionated) examples:
- Case sensitivity in C. Of all the brain-dead moronic ways to make programming harder and more error prone, having case sensitivity has to be one of the biggest. It is difficult enough to write code and correctly use variables (unless your language supports mandatory pre-declaration) but adding the possibility of 2^N different identifiers for every identifier of size N (a two letter variable like "pi" has 2^2 variations (pi,Pi,pI,PI) increases the possibility of error.
Now, however one of the nice features of at least one language is the use of case sensitivity with respect to formatting variables, in which the way the variable is declared causes the system to reformat every use of the variable to the same case (but you only have one variable of that name no matter what case you use to define it.) This allows you to determine if you have properly defined a variable, in that if you use the same convention and a variable's case doesn't change to match, you know you're using it incorrectly or it's not defined. In that sort of case, the language is making it easier for you to find errors, not making it easier to create them.
- Pedantic demands for exactness in cases of harmless error. Most HTML browsers shouldn't mind if you leave off the </body> tags at the end of a document; presumably under XML if you don't close everything your document has errors (and presumably should be rejected as unprocessable). If you leave off a tag it should simply mean you get wrong results (like failing to close an <I> tag means that the rest of the document is rendered in italic or until a higher-level tag closes the range being processed, if the document's state is retained) from that point, not that the document is rejected.
Now, let's hear your comments.