May 11th, 2011

Apollo 4 on column of fire

Coyotes, Eagles, and Deer

Apparently, when I am not looking there are coyotes, eagles, and deer frequenting our little townhouse development here.

Deer I expected, if only because I have encountered them around the neighborhood more generally, and very nearby, specifically. Eagles, well, I just don’t get outside enough. We did at least used to have a red-tailed hawk living here. Coyotes -- I knew they were in the very general vicinity, and the public officials have issued a ‘Don’t be afraid of the coyotes’ message, but I didn’t know they were hanging out here. Them I want to see hanging out here.

This is all in a pretty much urban environment. In rural environnments you see cows, or on this side of the Wisconsin-Minnesota border you see corn, corn, and more corn.

(We did have foxes for a while at our old place. But that was 20 years ago, and memories grow stale.)
Apollo 4 on column of fire

Why mandatory variable declaration is stupid

Typically languages with static type checking require you to declare your variables with their types.

First, this is stupid because it is a throwback to early compilers, which depended on the programmer to tell it ‘I am going to need this chunk of memory, which I am naming such. I need this much space for it, arranged in such and such a way.’ Vestiges of assembly language.

Second, what is the compiler then going to do? It’s going to analyze the context in which the variable is used, and check that the declared type is compatible. The declaration is superfluous for this task; you can simply check that all the uses of that variable are compatible with some type; then the type checking has been passed, no declaration required.

Explicit type declaration still has uses, but they are at the fringes, or for instance to provide human-readable, limited-information interfaces for multiple compilation units. Such interfaces aren't really needed, however, because the compiler itself can generate type-safe interfaces.