The first copy of Communications to arrive in my mailbox was the glorious July 1972 issue celebrating 25 years of the ACM in a 200-page overview of computing. I was a sophomore at Long Beach City College, and it introduced me to the academic field of computing, as well as to three luminaries for whom I would find myself working over the next decade: Donald Knuth, Joe Traub, and Sandy Fraser. From my very first experience, the magazine was performing its critical role: communicating to members of the ACM the ideas that would challenge and change their professional lives.
I eagerly awaited the arrival of each subsequent issue and still vividly recall many articles from those years. Edsger Dijkstra encouraged me to respect the difficulty of our craft in "The Humble Programmer" (October 1972). David Lorge Parnas taught me fundamental principles in "On the Criteria to Be Used in Decomposing Systems into Modules" (December 1972). And Dennis Ritchie and Ken Thompson introduced me to "The Unix Time-Sharing System" (July 1974) that would soon be my home. The list goes on: Donald Knuth on "Computer Programming As an Art" (December 1974), Brian Kernighan and Lorinda Cherry on "A System for Typesetting Mathematics" (March 1975), and Robert Floyd and Ronald Rivest on "Expected Time Bounds for Selection" (March 1975). In those pages I first met the ideas that would mold my professional career and the people who would become my colleagues, mentors, and heroes.
I cannot describe the excitement I felt when my own first article "Multidimensional Binary Search Trees Used for Associative Searching" was published in September 1975. It received second place in the 1975 Forsythe Student Paper Competition. Back then, original research papers were viewed as within the reach of undergraduate students (truth be told, I tied with a high school student) and of interest to the general ACM community. I wrote my paper (under the guidance of Donald Knuth) explicitly for the Competition; had it not existed, I would not have written it. It remains to this day my most cited research paper. (And because I’m sure that your inquiring mind wants to know, I’ll point out that first place went to a lad by the name of Guy Steele, who I’m betting turned out okay.1
Over the next few years, I published several technical papers in CACM. We submitted only papers we felt were of broad interest to the computing community and that had a high ratio of ideas to pages. I remain particularly proud of "Multidimensional Divide-and-Conquer" (April 1980), summarizing my Ph.D. thesis, and "A Locally Adaptive Data Compression Scheme" (April 1986) with Daniel Sleator, Robert Tarjan, and Victor Wei, introducing a method for compressing text files.
In those pages I first met the ideas that would mold my professional career and the people who would become my colleagues, mentors, and heroes.
Programming has been very, very good to me. I wrote my first Fortran program as a junior in high school in 1969 and have now followed my bliss in this field for almost four decades. Programming has provided a livelihood, intellectual challenge and reward, deep friendships, and numerous joys indescribable. Of all the good things that have happened in my career as a programmer, though, one of the best was and is writing the "Programming Pearls" column in CACM beginning August 1983. These columns presented neither new research nor systematic reviews of the field. I would later describe them as "programming pearls whose origins lie beyond solid engineering, in the realm of insight and creativity." For the most part, they were fun stories of how clever colleagues had phrased and solved programming problems, not infrequently discovering that "we have met the enemy, and he is us." When Peter Denning graciously offered me the opportunity to write the column, he pointed out that each of my scribblings would land on "the 70,000 most important coffee tables in the world of programming."
The best columns were the ones in which master programmers shared helpful insights with their colleagues. In March 1984, Bob Martin’s "The Back of the Envelope" showed how even small estimates are useful in designing big computer systems. The September 1985 column "Bumper-Sticker Computer Science" collected aphorisms sent in by readers; among them are these timely gems:
- The sooner you start to code, the longer the program will take (Roy Carlson);
- Allocate four digits for the year part of a date: a new millennium is approaching (David Martin); and
- Pi seconds is a nanocentury (Tom Duff).
I enhanced and collected 13 of the columns into the book Programming Pearls in 1986 and a second edition in 2000. We published a second collection called More Programming Pearls: Confessions of a Coder in 1988. The books have sometimes been used in schools, but their most important readership has always been working programmers who want to learn more about their craft.
I have long been resigned to the fact that whether I like it or not (fortunately, I usually do), I will almost always be introduced in computing circles as "Jon Bentley, who wrote `Programming Pearls’ in Communications in the 1980s." I remain deeply grateful to Peter Denning and Stuart Lynn who first proposed the column, to my colleagues and managers at Bell Labs who supported the work, to the programmers who contributed so much of the column’s best content, and to the readers of CACM who frequently took the time to say thanks.
When I first read CACM in 1972, I was young, and it was old. Now the tables have turned: I am an old computer programmer, and it remains fresh and vital. It has done this by sticking to its primary mission: communicating appropriate content to the members of the ACM. If it stays this course, I am confident that its second half century will be as much fun and as fruitful as its first.
Join the Discussion (0)
Become a Member or Sign In to Post a Comment