Successive Approximations

The world that C, Unix, and C++ Built

The world that C, Unix, and C++ Built

It is difficult to comprehend what modern computers would look like without Bell Labs. In some abstract way I was aware of this, but reading Kernighan's new Unix history/memoir really hit that home when he talked about Bjarne Stroustrup developing C++ while he too worked at Bell Labs.

Stroupstrup's name and the fact that he invented C++ was lodged deep in my brain from my high school AP Computer Science class where it was just one of those factoids in the textbook that was bolded to indicate that it might be on the test.

But they didn't mention the fact that he did it down the hall from the guys who invented Unix. And even if they had, I wouldn't have been able to tell you what Unix was or why I should care. But reading it now is just hard to comprehend. (Doubly so, when I write this on a Unix-descendant macOS laptop.)

It is hard to understate how much software was written in C++. Video games, web browsers, web servers, anything for too complex for C where performance is critical.

Hell, even C itself being born at Bell Labs. C is still to this day the language that is used in almost everything at some level. Device firmware, operating system bootloaders, everything. We live in the world that C, Unix, and C++ built.

Of course, government-sanctioned monopolies of the kind that AT&T was in the 60s and 70s are hostile to capitalism. We should not be building more of them in the hope that they will throw off more world-changing inventions like Unix and C. But at the same time, the modern, hyper-competitive state of the business of programming doesn't seem to be interested in R&D at the level that would produce the next world-shifting iteration on the level of C.

The Soul of a New Machine is, one of the canonical documents of our industry, but it is striking because it documents the human struggle to produce an ultimately forgettable machine. Soul is a tale of Microkids and Hardy Boys working hard for each other and for the joy of creation, but not to change the world. Everyone in that basement knew they were just implementing the specifications of a machine that needed to exist to fill a gap in Data General's lineup. There was none of the calm, iterative, introspective exploration inadvertently creating excellence like Unix, C, and C++. It was a job and after it was done, most of the people who did it were chewed up and spit out by the company in one way or another.

The closest thing I see out there is Rust, which is coming out of Mozilla, which is already a very odd duck of a company. Not a VC-funded wannabe-unicorn, but one of the few companies in the valley trying to use technology with some soul in the game, instead of A/B testing to maximum revenue extraction. I don't know the story of how their organization produced something like Rust, but I think the non-GC'ed, borrow-checked memory model is going to be remembered as one of those "obvious-in-retrospect" ideas that changes the world like Unix's "everything is a file". Assuming it can overcome the inertia and extensive tooling around C, that is.

Maybe the solution is 20% time at Google. Maybe it's R&D tax credits. I don't know. I don't know what the answer is.

But I do know the question: "What went so right at Bell Labs and how do we get more of it?"

Ben Berry

I don't have comments on my posts, but if you want to reach me, email me at my first name at benb.us.