All good things must come to an end.
Well, it's time to say goodbye. After over twelve years and 141 columns, without missing a single issue of C/C++ Users Journal, I need to quit. The prospect of facing yet another monthly deadline is more than I can bear. So this is my last regular installment of Standard C/C++.
Put simply, I've grown stale. I'd rather pack it in before that staleness becomes too obvious in the stuff I write. But it's clear enough to me. As a consequence, I find myself spending more and more time thinking of things to write about, laboring to get the words out, and then revising those words until they demonstrate some sort of continuity. What was once enjoyable, if never easy, is now too often an onerous chore.
There are other demands on my time, as well. My wife Tana and I started a little company called Dinkumware, Ltd. in 1995. It has grown into a very successful venture, but one that needs more and more effort on my part to keep thriving. It has become ever harder to justify the time I spend writing monthly columns, when I could be creating wealth at a much greater rate by adding to the Dinkumware product line. And it isn't just the money. I really enjoy writing code and documentation, then seeing it used by fellow programmers. Writing about the act of programming isn't as satisfying to me as actually doing it.
I have a book contract that is so overdue it has long since passed the point of being an embarrassment. I have papers in my IN basket that are turning yellow. I know I'm not likely to get "caught up" with my penchant for doing so many things at once, but I would like the backlog to be somewhat less imposing.
These things can sneak up on you. I started writing for CUJ in late 1987, while still president of Whitesmiths, Ltd., the company I started in 1978. I didn't know it at the time, but I was within months of selling that company so that I could more actively pursue a career as a writer. I had been writing a monthly column for Computer Language, now Software Development, and another member of the Miller Freeman stable of magazines. (Or is it CMP Media, Inc. now? I can't keep up with all the mergers and acquisitions.) It seemed to me that writing two monthly columns was moving in the direction I wanted to go.
Next thing I knew, the folks at Miller Freeman invented a new magazine called Embedded Systems Programming, and they wanted me to write for it too. That made three monthly columns. And somewhere in here, Rex Jaeschke talked me into contributing to his quarterly Journal of C Language Translation. So there was a period in my life when I was turning out a 3,000-word technical essay once every nine days, month in and month out, with no summers off.
I dropped Computer Language when it changed its name and its focus. Sometime later, JCLT died a natural death, as specialized quarterlies often do. But I've kept on writing two columns per month, plus occasional articles on request. So I'm still turning out those essays at the rate of one every fifteen days. And I thought things would get better when I graduated from college.
I was in a kind of equilibrium these recent years. I even maintained that equilibrium, though just barely, through a couple of years of ugly and exhausting litigation. But we all know stability never lasts. Besides Dinkumware getting more demanding, there's another factor I can't hide from. I'm getting older. At 56 years, I can't put in the same hours I did at 46 and at 36. Each year, the time becomes a little more precious. I go to concerts and plays more because I really need the time away from the keyboard. If I stayed at my laptop, I'd be out of steam at the end of the day anyway. You can pretend to be productive for only so long.
I didn't know a week ago that this would be my last column. On the other hand, I've felt for some time that the end was nigh. The particular circumstances that precipitated my decision to quit are not terribly important. I'll simply report that I was on a plane from Boston to Tokyo when the realization began to dawn. By the time the plane landed at Narita I had mostly made up my mind. Over the next couple of days, I felt a few twinges of regret, but far more, I felt relief. That's why I know for sure that now is the time to call it a day.
From C to C++
The sidebar shows the titles of all the columns I've written for CUJ over the years. It provides at least a sense of the topics I've discussed under the rubric "Standard C" (and later "Standard C/C++").
I began this column writing about the newly emerging ANSI Standard for the programming language C. It still wasn't quite approved, thanks to some last-minute administrative problems, but we all knew what it was going to look like. I took it upon myself to describe Standard C in considerable detail.
Along the way, I got a book contract from Prentice-Hall to produce a comprehensive guide to the Standard C library. I began by writing columns to serve as input to the book. Eventually, I mined the book for columns instead. It takes more work than you might think to recycle material, in either direction. The demands of a textbook audience are quite different from a monthly magazine reader. Nevertheless, I've used this approach over the years in conjunction with several books, though none of the others were nearly as successful as The Standard C Library.
Then along came the effort to standardize C++. At first, I believed the schedule that called for a complete standard by 1995. I began describing the Standard C++ library as it evolved. And evolved, and evolved. By the time it froze in late 1997, it had come a long way from its modest beginnings in the early 1990s. You can track that journey in the columns I wrote over a period of five years.
Note, by the way, that I have written little about the Standard C++ language proper. All of us on the C standards committee considered ourselves reasonably expert in all aspects of C, from preprocessor to language to library. But C++ is way too big for one person to feel comfortable in all its corners. I confined myself to mastering just the library, leaving it to others to design little additions such as templates and exceptions.
The C committee was not idle during this period. I encouraged the committee to begin revising the C Standard early. Given the rapid changes occurring in C++, I didn't think it wise to let C go unreviewed for five years or more. For a time, I even pushed for the addition of such features as classes and overloading, heavy borrowings from C++. Conservatism eventually reared up, however, and drove out such radical changes. That was probably for the better, I confess, but still I was disappointed.
We now have a new C Standard called C99. I've been working on implementing the library that goes with it no small feat given the extensive additions voted in over the years. The C committee may have been conservative on the language side, but they were less restrained when it came to adding functions. I was just getting down to the serious business of describing C99 in detail.
That's mostly what I've done this past dozen years. You will find an occasional column on Java, or the Y2K bug, or other trendy topics. But mostly I stuck with the basics. There's plenty to say about Standard C and Standard C++. I'll doubtless say more myself, but not on a regular basis in these pages.
Conclusion
I don't intend to disappear from the face of the earth. I'm not retiring. Far from it, I have several projects in the works that will take some describing. I plan to continue writing books and magazine articles from some time to come. I also plan to put more energy into Internet publishing, both at my personal website and at Dinkumware's.
I'll miss the feedback that I get from writing regularly. Most of it comes when I get a fact wrong. You can always count on programmers to pounce on a bug. But some of it is friendly and supportive. We writers spend many hours working alone. We appreciate knowing people are out there listening, and that some of them even care. Writing to a regular deadline is often painful. But it does force you to produce on a regular basis. That's the one sure way to get words out there that people actually read.
Thanks for reading.
P.J. Plauger is Senior Editor of C/C++ Users Journal and President of Dinkumware, Ltd. He is the author of the Standard C++ Library shipped with Microsoft's Visual C++, v5.0. For eight years, he served as convener of the ISO C standards committee, WG14. He remains active on the C++ committee, J16. His latest books are The Draft Standard C++ Library, Programming on Purpose (three volumes), and Standard C (with Jim Brodie), all published by Prentice-Hall. You can reach him at pjp@plauger.com.