The A to Z of programming languages: Objective-C

Our series on the most popular programming languages continues as we chat to Objective-C co-creator Brad Cox

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.

Tags a-z of programming languagesA to Z of programing languages

More about ABAppleBell LabsMATLABOPCSGI AustraliaThe MathWorks

1 Comment

Daniel

1

While I agree that at some point we need "tested, certified, trusted components" for building higher-order and well-engineered systems, there are many reasons to continue developing programming languages.

Under certain architectures and for certain purposes (your Apple example), we probably already have best-of-breed components, and they're being improved continually by folks who are experts with the tools. But for other programming tasks and general programming needs, there are very good reasons to remain skeptical about languages and to continue to learn. Better algorithms; different approaches to performance and state; data persistence and distributed systems. None of these have been mastered at the hammer-and-chisel level, let alone at a component level.

We haven't reached the apex of programming languages by any means, as far as I'm concerned. But then again, I'm a Lisper :)

Comments are now closed

The ups and downs of Microsoft Band

READ THIS ARTICLE
DO NOT SHOW THIS BOX AGAIN [ x ]