practice
Doi: 10.1145/1995376.1995391
Article development led by
queue.acm.org
Did Ken, Dennis, and Brian choose wrong
with NUL-terminated text strings?
BY PoUL-henninG KamP
the most
expensive
one-Byte
mistake
infOrmatiOn teChnOlOg Y (it) BOth drives and
implements the modern Western-style economy.
Thus, we regularly see headlines about staggeringly
large amounts of money connected with IT mistakes.
Which IT or CS decision has resulted in the most
expensive mistake?
Not long ago, a fair number of pundits were doing
a lot of hand waving about the financial implications
of Sony’s troubles with its PlayStation Network,
but an event like that does not count here. In my
school days, I talked with an inspector from The
Guinness Book of World Records who explained that
for something to be “a true record,” it could not be
a mere accident; there had to be direct causation
starting with human intent (such as, we stuffed
26 high-school students into our music
teacher’s Volkswagon Beetle and
closed the doors).
Sony (probably) did not intend to
see how big a mess it could make
with the least attention to security, so
this and other such examples of false
economy will not qualify. Another
candidate could be IBM’s choice of
Bill Gates over Gary Kildall to supply
the operating system for its personal
computer. The damage from this decision is still accumulating at breakneck
speed, with StuxNet and the OOXML
perversion of the ISO standardization
process being exemplary bookends for
how far and wide the damage spreads.
But that was not really an IT or CS decision. It was a business decision that, as
far as history has been able to uncover,
centered on Kildall’s decision not to
accept IBM’s nondisclosure demands.
A better example would be the decision for MS-DOS to invent its own di-rectory/filename separator, using the
backslash (\) rather than the forward
slash (/) that Unix used or the period
that DEC used in its operating systems. Apart from the actual damage
being relatively modest, however, this
does not qualify as a good example either because it was not a real decision
selecting a true preference. IBM had
decided to use the slash for command
flags, eliminating Unix as a precedent,
and the period was used between filename and filename extension, making
it impossible to follow DEC’s example.
Space exploration history offers a
pool of well-publicized and expensive
mistakes, but interestingly, I did not
find any valid candidates there. Fortran syntax errors and space shuttle
computer synchronization mistakes
do not qualify for lack of intent. Running one part of a project in imperial units and the other in metric is a
“random act of management” that has
nothing to do with CS or IT.
The best candidate I have been able
to come up with is the C/Unix/Posix
use of NUL-terminated text strings.
The choice was really simple: Should
the C language represent strings as an
address + length tuple or just as the