Feb 152003

Not Ayn Rand; Harvard Professor of Government Harvey Mansfield, in The Chronicle of Higher Education:

Harvard is afraid to look ambition in the face. To Harvard, ambition and the responsibility that accompanies it look elitist and selfish. (“Elitist” is the fancy, political version of “selfish.”) Harvard gives its students to understand that the only alternative to selfishness is selflessness. Morality is held to be sheer altruism; it is service to the needy and the oppressed. A typical Harvard student spends many, many hours in volunteer work on behalf of those less fortunate. But what he or she plans for his own life — a career — seems to have no moral standing. To prepare for a career is nothing but to make a selection under the regime of choice. It is careerism — a form of elitism and selfishness — that seems unattractive even to those contemplating it.

Selfless morality is fragile and suspicious: Who believes a person who claims to be unconcerned with himself? Yet mere selfishness is beneath one’s pride. Harvard is caught between these two extremes; it has lost sight of its virtue. It cannot come to terms with the high ambition that everyone outside Harvard sees to be its most prominent feature.

(Courtesy of Erin O’Connor.)

Feb 152003

Eugene Volokh complains that his C programs used to crash, and his JavaScript still does, because the languages distinguish comparison (==) from assignment (=). (Volokh, at 14 the world’s youngest law professor, also worked as a programmer for several years as a preadolescent.) On the one hand it’s a lousy idea to use the single equal sign for assignment. The best-known operator should be reserved for the best-known operation, which is comparison. Many other languages keep the equal sign for comparison and use other symbols (:=, .=, =:) for assignment instead. Java inherits much of its syntax from C, including the equal and double equal signs, with the annoying consequence that if we assign a boolean variable, say x, the value false, then in this code snippet:

if (x == true)

doSomething() will not execute, whereas in this one:

if (x = true)

it will. The second snippet, though shorter, contains two bits of business: we assign the value true to x, and we then evaluate x. In Java this is done right to left, so by the time we arrive at the if, x is true.
This is a smaller problem in Java, however, because Java is strongly typed. If x is a String, or an Integer, or anything but a primitive boolean, the line if (x = true) will not compile.

But annoying and confusing as this is, it still beats languages, like Visual Basic, that use the same symbol for comparison and assignment. Consider this legal statement:

a = b = c

Even if we assume an execution order of right to left this is ambiguous. It might mean “assign the value of c to b, then assign the value of b to a.” Or it might mean “assign true to a if b and c are equal, otherwise assign false to a.” No way to tell.

The first language, to my knowledge, to distinguish comparison from assignment was APL (A Programming Language) in the 1950s, in which a left arrow (<â €”) indicates assignment. There is a famous, perhaps apocryphal, story of Ken Iverson, APL's inventor, watching some hapless Fortran programmer increment a loop counter by typing a = a + 1. “But that’s false,” Iverson said.

Feb 152003

Special thanks to Oliver Stone for Comandante, his upcoming searing exposé of Fidel Castro. Besides the “revolutionary” mustache Stone sports for his scenes in the movie, making him look like the missing Ortega brother, one detail cannot go unmentioned:

Throughout, Castro wears his trademark green fatigues, but when the camera pans to his shoes it shows how times have changed: even a veteran revolutionary sports the ubiquitous Nike swoosh.

Fidel Castro, supporter of evil capitalist exploitation of Third World sweatshop labor.