Objective-C’s Roots in the Life of Brad Cox
What leads someone to co-create one of the world’s most influential programming languages? It’s a question raised by the life of Brad Cox, who died this month at the age of 76. “Brad grew up on the family’s dairy farm in South Carolina,” stated a memorial page at Legacy.com, “but found himself most interested in science.” So while today Cox is best remembered for creating the Objective-C programming language with his business partner Tom Love, it’s easy to wonder if his interest in object-oriented programming somehow came from a deep familiarity with the complexity of natural structures.
Cox “spent my youth milking cows, taking care of the farm, walking in the woods, and collecting snakes,” he remembered in a 2016 interview with the Computer History Museum. “I was known far and wide for the snake collection.” Cox described learning in a three-room schoolhouse until the ninth grade, “out way back in the boonies… everybody went to school barefoot in the summer.” But with an interest in science, Cox went on to receive a bachelor’s degree in organic chemistry and mathematics at South Carolina’s Furman University.
The school also gave him an early formative experience. “The first exposure to anything like a computer was a hand-cranked calculator in the Chemistry Department at Furman. And I enjoyed that thing, and practiced a lot.” Later while obtaining a Ph.D. in Mathematical Biology at the University of Chicago, “I chose the Department of Physics, Quantum Mechanics, because rumor had it that they had the biggest computer budget on campus… that was the first time I got involved in computers was programming IBM 7094 programs for molecular orbital calculations on punch cards.”
In an interesting coincidence, at some point at graduate school Cox had met Adele Goldberg, who would later be part of the team that developed the object-oriented programming language Smalltalk. (Goldberg received her information sciences Masters degree and Ph.D. from the same university.) Cox remembers that while he was at the school, it had already opened a new Computer Science Department, and “she, and several others, was sort of generally on my radar screen,” though they weren’t particularly close friends, and this pre-dated her interest in object-oriented programming. When asked if he’d had contact with the department, Cox said “Informally. Largely around the keypunch machines… remember, everything was punch cards back then, and that was generally how you met people was around the punch card machines.”
At this time the only programming language he was familiar with was assembly — although “I was campaigning to use Fortran for some of these molecular orbital calculations, but not successfully,” he recalled. In 1971 Cox wrote a program for a PDP-8/I computer simulating 64 neurons in what he described as “a functional neural net.”
The “entire system investigates the behavior of an organism and its brain in interaction with an environment,” Cox wrote. But he told the Computer History Museum that the project “didn’t have a prayer” because of the limited amounts of computing power, and “I knew it was going to be hopeless.” Though he marveled that here in the 21st century, the same kind of research now seems to be gaining new interest. After another paper describing mathematical modeling of giant squid axon firings, there was post-doctoral at Woods Hole oceanographic institute (on real squids). But this all led him to a crucial realization.
“After post-doc, I had a look around at what I enjoyed doing and what I was spending my time doing, and eventually just realized that what I enjoyed about the whole process was computer side more than the science side.”
Annoyed with Proprietary Languages
History remembers that Objective-C was co-created by Tom Love — who fatefully recruited Cox for a position at ITT (International Telephone and Telegraph). Cox became one of a handful of people in the research department, and one of his earliest project involved debuggers for the UNIX-based computers in telephone switches. Cox told the Computer History Museum that ITT “was building the first step away from the old way of doing telephone switches. And in retrospect, it behaved like an object-oriented system.”
But fatefully, he was part of a group involved in increasing productivity, and “I wasn’t happy with C as a productivity foundation. And was casting around for anything I could find that might help.” And then in 1982 he stumbled across Byte magazine’s special issue about the early object-oriented programming language Smalltalk. This started Cox thinking that “There were a whole bunch of things that I had — that I vaguely thought might help.” For example, encapsulation (the idea of ensconcing data and its methods together in protected objects), because “C is so bad at it…”
“[T]here are no objects in C. Essentially everything is public. There are no — you know, it just turns into soup… And the pain from that was what I was trying to escape.”
But in addition, “I had just become incredibly annoyed with proprietary languages,” he said. Fortran vendors, for instance, would add extra features to try to lock customers into their particular version.
So around this time he’d created the first Object-Oriented Pre-Compiler that was essentially “layering” Smalltalk on top of C. “The way we were thinking of our role there is trying to get object-oriented programming out of the research labs… so we had to embed it in something that we could find on the factory floor, like C.” The early attempts were a little primitive, he remembered. “Big portions of that were originally a bunch of UNIX shell scripts.”
But it later became the basis for a product at a company he’d form with Tom Love.
When Love moved to Schlumberger-DollResearch Labs (also in Connecticut), Cox eventually went with him a few months later, supporting Schlumberger’s interest in UNIX, until they both left to start a company called Productivity Products International (leveraging a contact at Philips who’d wanted them to apply object-oriented principles to their hardware simulation).
They were selling productivity, Cox remembered, and “to make that concrete, one concrete example of it is [a] more productive programming language… the second in that list was component software, software components.” So the language was to be a kind of soldering iron for those components.
“I was 100 percent heads-down working on the language side of the problem and not tracking the consulting side…” Cox remembered in his interview.
“I had no background in language design, so I had to train myself on how to do that. And the first attempts weren’t pretty. We just iterated the problem until we came out with a pretty good tool. Eventually, when we got investment we brought in people that actually had a background in doing language design and they knew what they were doing.” The investors were attracted to the idea of components (though they changed the company’s name to Stepstone).
In that 2016 interview he’d complained that the “granularity” of Objective-C’s objects weren’t being pursued with any particular vigor by the industry at large — but acknowledges that “now there’s a lot more of interest in service-oriented architecture where components are very prominent.”
His wife Etta Glenn (who had also studied Computer Information Systems) also worked at the company, and remembered taking phone calls from Steve Jobs. Jobs’ post-Apple company NeXT licensed Objective-C, incorporating it into its operating system, and when Apple acquired NeXT, Objective-C ended up being supported by Apple’s Mac OS X operating system, soon becoming the go-to language for writing Mac and later iPhone software.
The “thing I’ve never managed to successfully do was to find a business model for these components,:” Cox told the Computer History Museum. “I mean they’re made of bits, see? They can be copied in nanoseconds. So you can’t buy and sell them like a can of sardines. But Apple could because they could nail all these software things down to a tangible piece of hardware and build a business around that.”
Cox described himself on his blog as a man “Struggling to make software a true engineering discipline since god made dirt,” adding “I keep on keeping on.” (The last post on his blog — written in 2013, when Cox was 69 — is titled “A common-sense approach to Big Data.”) Other posts show him still leading the life of a pioneering computer programmer. (“I’ve been experimenting with using the GPU to accelerate Java code lately and wound up writing a maven plugin to make the build process manageable.”) In 2011 he started an open source project with his own home-grown alternative to the access control language XACML (which he complained had semantics that “come wrapped in visual barbed wire; a XML-based syntax so hideous it makes your eyes bleed.”)
In one 2009 blog post, Cox reflects on his interview for O’Reilly’s Masterminds of Programming book, writing that “My interests are more in the components that languages produce, not languages themselves.”
But whatever led him to his work with Objective-C, the end result was rewarding. One 2011 interview in MacTech magazine pointed out that Objective-C had already ended up in over 30 million iPods and iPhones sold by Apple, asking Cox “How does it feel to have Objective-C running in the palm of so many people’s hands?”
His response? He said with a laugh, “Yeah, it’s pretty nice.”
- New Harvard course examines papers every computer scientist should have read.
- “Software engineering topics I changed my mind on” — an Amazon programmer’s list goes viral.
- The Chrome Developer Summit keynote: how Chrome improved the web in 2020.
- Tucows finally closes its downloads site after 27 years.
- Discontinued in 2011, Microsoft’s Zune mp3 player still gets modern-day mods from its diehard fanbase.
- More relentless tides of change: Chrome stops supporting FTP and Flash (while the chat app ICQ is seeing a surge in popularity).
- Can broadband and a digital economy help transform Hawaii?