|Home » Learning Curve
Objective-C furnishes powerful option to C++
Earlier this month, NeXT acquired all rights to Stepstone's Objective-C programming language. This is an object-oriented superset of C, regarded by many as far easier to learn and use than C++. And it looks to me as if Objective-C's best days are still to come.
In particular, Objective-C has always been the core technology of NeXT's justly famous development tools. These were chosen in February by MCI for the custom applications supporting MCI's New Friends and Family discount program. Considering that C++ originated at AT&T, one wonders if language choice is having any impact on relative time-to-market for new services from these two well-funded competitors.
NeXT's acquisition of Objective-C does not mean that it's becoming a proprietary tool. On the contrary, NeXT plans to move Objective-C through formal standardization processes to make it an open language. Stepstone has licensed back the right to continue selling Objective-C compilers under its own name.
This is a good thing, because the style of software development encouraged by Objective-C is a genuine alternative to the style that is encouraged by both C++ (the 'standard' that still isn't) and Ada 95 (an ANSI and ISO object-oriented standard that deserves more attention than it gets).
Like the Common Lisp Object System, which recently became the second formal object-oriented standard, Objective-C provides superb facilities for building flexible applications.
By flexible, I mean that these applications postpone the binding of polymorphic messages until the object types that are being addressed have been determined at run-time. Too many developers will wind up inventing this for themselves, because they started out with a 'more efficient' language that didn't already provide these features.
Who will cut through a project's complexities more quickly: the developer who starts with a chain saw or the one who tries to make one from a machete? The latter sort of solution is what you will get if your developers choose tools based on criteria that don't really reflect the kinds of applications you want to build.
C++ is certainly 'the most common, most supported, and most portable' object-oriented programming language, in the words of Bruce Webster, co-founder of Pages Software. But there's far more to doing good object-oriented development than merely using an object-oriented language, as Webster would be the first to agree.
The technical question is one of static type checking vs. dynamic, run-time binding. This is described by Webster in his latest book, just published by M&T, titled 'Pitfalls of Object-Oriented Programming.'
Of the 82 pitfalls, Pitfall 5.4 is titled 'Using C++.' Lack of dynamic binding is one of his principal criticisms of the language, though he acknowledges that it has been evolving toward this goal.
Webster opines that recent C++ refinements, such as run-time type information, have 'all the problems inherent to retrofitting a capability for which the language was not intended.'
It's a fundamental error to focus strictly on choice of language. 'We obsess about this endlessly,' said Stepstone co-founder Brad Cox in a 1991 interview, 'but who is doing anything about specification technology?' Even so, tools such as Objective-C encourage developers to specify what the customer wants, instead of what a more limiting language can provide.