Computerworld Australia is undertaking a series of investigations into the most widely-used programming languages. We most recently spoke to MATLAB creator, Cleve Moler, on the 25th anniversary of The MathWorks. Check out The A to Z of programming languages index to find them all.
In this interview, we take a look at one of the most in vogue programming languages at the moment: Objective-C. Acquired by Steve Jobs' company NeXT in 1995, the language now underpins both Apple's Mac OS X and the iOS platform. Thanks to the popularity of the iPhone, iPad and the App Store, the language has become an essential part of creating and delivering mobile apps to the masses.
Here, we talk to the language's co-creator, Brad Cox, on object-oriented programming, the difference with C++ and why the programming language ultimately doesn't matter.
Can you give us a brief rundown of your history, and programming experience, both pre- and post-Objective-C?
After graduate school (mathematical biology), I realised I wasn’t cut out for academia and took two starter jobs building gold-plated newsroom automation systems (Toronto Star and Chicago Tribune). That got me into C and Unix. Then I joined the ITT advanced programming labs with Tom Love.
Can you provide a brief timeline of how and when Objective-C came about?
I started Objective-C’s ancestor when at the ITT Research Laboratory just after the Byte Magazine Smalltalk-80 article came out [August 1981]. That was called OOPC: Object-oriented Preprocessor because it was originally a quick lash-up of ordinary Unix tools like sed, awk, C compilers, etc.
Soon afterwards Tom and I left to join Schlumberger Research Labs but left after about two years to found Productivity Products International; Stepstone’s ancestor. I started work immediately on a proper pre-compiler based on yacc/lex tools and got that working about six months later; as I recall around 1982.
About that time Bjarne [Stroustrup] heard about our work and invited me to speak at Bell Labs, which was when I learned he was working on C++. Entirely different notions of what object-oriented meant. He wanted a better C (silicon fab line). I wanted a better way of soldering together components originally fabricated in C to build larger-scale assemblies.
Objective-C has obviously become a major language thanks to popular Apple platforms and a thriving third-party developer community. Did you ever think it would become a widely known language in the sense that it has?
Not really. I was never particularly focused on Objective-C as a language, just as circuit engineers aren’t particularly interested in soldering irons. My interest has always been in software components, not the tools for building them.
What caused you and your partner in crime, Tom Love, to invent the language in the first place? Was it a reaction to C++ or C?
C++ didn’t exist when we started. It was a reaction to C not C++, and to limitations of C for building reusable components.
The only encapsulation tools C provides are macros and functions as building blocks for applications. Objective-C added objects originally and packages followed thereafter. I added lightweight threads (mini-applications) as a support library called Taskmaster.
It never occurred to us to add something comparable to SOA objects because networking was so new in those days. And we never thought of something comparable to OSGI since we tried (too hard I think now) to stay away from the C linker.