One way in which a
computer language can be
evil is to have it treat
whitespace in a special manner. The
normal way of dealing with whitespace is to treat all
sequence of whitespace
characters the same way (as some kind of
token separator, usually). Languages which do otherwise are often a pain to program in. Some
little languages (like
command shells) are justified in doing this (it is expected that the end of the line will terminate a
command!). But it's almost never OK to make specific demands for
horizontal whitespace (
spaces and
tabs). Amazingly, people are
still performing this
crime against ASCII!
Here's an incomplete list of the offendors:
- Fortran
- Horizontal whitespace is completely removed from your program! So you can say "GO TO" for "GOTO", but also
DO 100 X=1.10
might not do what you think it does (note that's a period, not a comma!).
- Haskell
- Horizontal whitespace is used to specify block structure. However, a sane alternative (of using braces {...} to delimit blocks) is provided, but looks a bit funny.
- Python
- Horizontal whitespace must be used to specify block structure. Yuck.
- Make
- A very special type of horizontal whitespace must be used for command lines in the makefile: the first character of the line must be a TAB. Even 8 spaces won't work, but they'll look the same on your screen. Failing to do this leads to "amusing" errors.
I'm sure many more examples of this idiocy exist...