Stan reminds us in his own way that there are only three "good" numbers: none, one, and all.
This is my second CUJ column, establishing some sort of streak in the sporting sense of "an uninterrupted series." (The other popular meaning is nicely antonymous: several World Series have been interrupted by naked persons invading the mound.) Formally (see my Springer-Verlag monogram "Grundlagensportlichsträhnelogik" or wait 'til the movie comes out), we have
struct Streak { String StreakerName; String EventType; Date When; UINT StreakLength; Time StreakLengthUnit; ms_private: GUID YourGloballyUniqueIdentifier; /* only joking, Bill */ };The range of StreakLength has been the subject of much academic wrangling. A zero value (the null-streak) is considered legal by some schools in order to cover such barroom trivia as "When did Birmingham City FC last win the English FA Cup?" The "correct" answer is not a real date but rather, "Birmingham City FC have never won the English FA Cup."
Encoding or even mentioning non-existent and/or non-applicable predicates has long been a challenge. Indeed, bruising body blows are still exchanged whenever the token (non-token?) NULL is discussed at a meeting of relational-database theorists. When the object under scrutiny is palpably hors de combat (square circles and the like), it merits membership in the fruitful, unique "empty set," from which we can derive the bulk of useful but precarious calculi. Nevertheless, remember that "The present King of France is bald" is neither false nor true (although some throne claimants spam my medievale@uqam.ca in-mail) and his "hair-color" box is even less meaningful. In some multi-(> 2)-valued logics, we settle for various hyper-meta fuzzy pre- and post-Boolean Bayesians ranging from "knowable, truly-care-to-know but may-never-know" and "let me get back to you on this."
CS folklore is rich with APL-inspired empty-array jokes ("We haven't got ice cream without strawberries, would you like ice cream without blackberries?"). In the C-domain, we have the malloc(0) conundrum. I've always maintained that the appropriate error message could well be "Too much memory available."
For a null-streak, we can often escape to the real-world by negating the EventType. Thus, the Chicago Cubs have a positive StreakLength (80 or 90 seasons?) of not winning the World Series. You can play endless substreak tricks with the EventType, especially with statistically-rich games like baseball and cricket. Given N > 1, we conjecture the existence of an EventType E, such that StreakLength >= N. (I've tested this hypothesis with Nolan Ryan's pitching and Don Bradman's batting.)
A StreakLength of 1 is a special, nay, default, case applicable to any real EventType and often dripping with irony. Thus, during a typical Golden State Warriors piss-poor season, their occasional punctuated victory is hailed in the press as a "one-game winning streak." My own claimed columnar streak of two is, therefore, minimally significant. Think of Mao tripping arse-over-tit after the first stride of his long march; or Gehrig disabled for the season after his first Yankee at-bat; or Java failing to get a hyped PR in 1995. A two-streak is clearly the essential target. Take the recent 1999 Software Development Conference (Moscone Center, San Francisco), a streak of eleven, likely to grow forever, not to mention my matching attendance and Jolt-judging streaks. The hi-lights this year: (re-)meeting Marc Briand my new CUJ editor/mentor and our fellow-columnists (a huge appetite for C++ dark corners and flaming Alaskan desserts), and a visible increase in C++ interest in the conference proceedings. Bjarne Stroustrup's panel on teaching/learning C++ overflowed the room, and Andy Koenig's keynote speech "C++: Are We Having Fun Yet?" invoked a resounding "Yes." Dan Saks, Chuck Allison, and Bruce Eckel strutted their stuff (crossdressing Java and C++) and, do-or-die, I resisted the charms of Deirdre Murphy (Yeats would never forgive me) to attend Richard Hale Shaw's definitive talks on distributed objects. At last, I think, I have some through-the-glass-darkly glimmer of COM, OLE, ACTIVE-X, INACTIVE-X, DCOM, DOM, CORBA, and cognates-to-be-named-later.
The Java lobby was a tad muted by emerging news that the ISO had rejected Sun's proposed "open-proprietary" [sic] standard, together with the EMS (Evans Marketing Services) Spring issue of its International Developer Opinion Survey series: "One of the most obvious patterns we've seen in Java use in North America has been the tendency for developers to predict significantly increased use of Java in the future, but for the actual usage numbers to remain flat," said Janel Garvin, Director of Research at EMS. "We believe that Java use in North America has been depressed by the continual controversies surrounding the language and intense media coverage of those controversies." Or could it just be a general decline in gullibility?
The next streak-sustaining conference could be SD'100. Lest you think that ++SD_YEAR must have some built-in Y2K traps, I can reveal that a recent request to extend my MAA (Mathematical Association of America) subscriptions offered an expiry date of "19100." May my life-streak last so long.
Stan Kelly-Bootle has been computing on and off since 1953 when he graduated from Cambridge University in Pure Mathematics and hacked on EDSAC I (the first true stored-program computer). He is a contributing editor for UNIX Review/Performance Computing, and a Jolt Judge for Software Development Magazine. His many books include 680x0 Programming by Example, Mastering Turbo C, Lern Yerself Scouse, The Devil's DP Dictionary, The Computer Contradictionary, and Unix Complete. Stan welcomes email via skb@crl.com and his website http://www.crl.com/~skb/.