[ style | nuts | hints+tips ]
I've been known to get quite religious when it comes to programming style, but there is some good thinking behind bits of it.
Full bracing
I'm a strong believer in `full-bracing' of C/etc. constructs, e.g.:
if (condition) {
do_something ();
}
Instead of:
if (condition)
do_something ();
Besides just being nicer, and avoiding the `ambiguous else' problem, it also prevents unpleasantness when `do_something()' is a macro. For instance, if some included header file contained:
#define do_something() magic = MARKER; do_that_thing()
Then the substitution in the un-braced `if' would break the logic -- the resulting `do_that_thing()' call wouldn't be inside the `if'. Of course, the sensible macro author would define that as:
#define do_something() { magic = MARKER; do_that_thing(); }
This gets around the problem, but macros aren't always guarenteed to be nicely written like that..
There are a multitude more of macro-related pathological brace breakage cases. E.g.:
#define do_something() if (broken) { abort(); } else { do_something_else(); }
That, although it seems fairly benign, causes a problem when substituted into the brace-less `if':
if (condition)
if (broken) { abort(); } else { do_something_else(); }
Which `if' does the `else' belong to ..?
| Language | How to crack nut |
| C | Use a standard size hammer. Hit the nut square on and it will crack. |
| Miranda | Create a list of hammers and a function which recurses the list hitting the nut as it goes |
| Occam | Get 50000 small hammers to hit the nut simutaneously. This will provide enough energy to crack the nut. |
| C++ | Create objects which represent the various hammer components and the nut. Define functions which will let these objects interact to crack the nut. |
| Java | Keep hitting the nut with an inflatable hammer until it cracks (or the hammer bursts). |
| Assembler | Define the nut as a register and the hammer as a mask. Simply twiddle one of the bits until the nut breaks. |
| Pascal | Use a small hammer. You may need to hit the nut several times before it will crack. |
| Basic | Do people still program in this language ? |
| Lambda-calculus | Define a recursive function that will hit the nut until it cracks. Writing the function will take more time than executing it, so it's probably not worth it. |
| Lingo | Create the hammer and the nut as actors and ask the hammer (nicely) to crack the nut. "Please Mr. nut, crack". |
| Prolog | Use constraints to search all possible nut configurations for one which is cracked/broken. Additionally, use branch-and-bound to search for the configuration which is the most smashed-up nut. |
Last modified: Mon Mar 22 14:18:15 2004 by Fred Barnes.