The OO-Language Wars

One of the issues that's dogged NeXT for years is its choice of Objective-C as the object-oriented language upon which it based its computer.

Simula, the first object-oriented language, was developed in the 1960s as a language to build simulation systems. In the late 1970s, a team of programmers under Adele Goldberg at Xerox PARC (Palo Alto Research Center) developed the Smalltalk language and environment.

Since then, the world of object-oriented languages and environments has fragmented. Nearly every major computer language now has an object-oriented cousin. There's even a fledgling object-oriented COBOL for business applications.

But when it comes to C, the computer language popularized by the UNIX and DOS operating systems, there are two object-oriented choices: Objective-C and C++.

Objective-C is the object-oriented language developed in the early 1980s by Brad Cox. In many ways it is a blend of C and Smalltalk, retaining much of the power of each to solve problems by sending messages between objects. C++ was developed at AT&T by Bjarne Stroustrup at approximately the same time. The language has many more features than Objective-C and is far more complicated. Nevertheless, C++ lacks the key feature that sets Smalltalk and Objective-C apart: dynamic binding.

Objects communicate in an object-oriented environment by sending messages to one another. In a system that uses dynamic binding, those messages are interpreted when the program is run rather than when it is compiled. If a program contains code that shuts down peripherals, for example, the method call doesn't have to specify all the different possible target devices. When the code is compiled, the compiler checks only that the method call is properly formatted to communicate with a perpipheral. At run time, the different peripherals' objects will be dynamically bound, and the programmer can check that the program actually shuts down a printer or a drive or an imagesetter. As a result, systems that use dynamic binding are more flexible and easier to update than their static cousins.

Dynamic binding is also what makes Software ICs possible. Without it, a programmer using an object library needs to be far more concerned with how the objects actually implement their functions. It is the reason that NeXT chose to use Objective-C. Without dynamic binding, Interface Builder would have to be precompiled, with all the classes of objects that the user can manipulate. It would be impossible to load in new object types.

Despite Objective-C's technical advantages, few computer makers other than NeXT have opted for it. "The fact of the matter is that today there are more C and C++ programmers out there than any other [object-oriented language]," says Michael Mathews, product marketing manager for HP's distributed-object computing program. "To develop an environment that narrowed your target audience [from the onset] wouldn't be a smart thing to do."