Computer programmers have gone back to the toy chest to design better software faster, using a technique for building programs out of Tinkertoy-like blocks of code known as objects.
Object-oriented programming is either revolutionizing the way software is conceived and written -- offering a way of coping with the shortage of qualified software writers -- or it is little more than an old Norwegian programming language in a fancy new hat, depending on whom you ask.
But all agree that it is useful -- and being used -- for everything from flight simulation software that models the behavior of the B-2 bomber, to a new generation of easy-to-use, graphic-based software for home and work PCs.
In fact, the concepts of object-oriented programming are at the heart of a powerful alliance announced last summer between rivals International Business Machines Corp. and Apple, who are collaborating on an object-oriented environment that will run on a new hybrid of personal computer.
Computer scientists say that by simplifying the task of programming and putting it in the hands of everyone, it will ease the crunch in software production, freeing high-level programmers to design applications, rather than write codes.
"The goal that I see for object-oriented environment is to try and alleviate some of the problems in the software crisis," said Daniel Sabbah, the software technology department group manager for IBM's research division. "The way we envision doing that is by following some of the lines that have been started by object-oriented programming."
In object-oriented programming, instead of writing code in the traditional manner -- line by line, from scratch -- programmers start with a library of stand-alone blocks of code, known as
objects. This greatly speeds the task of putting together an application because the programmer doesn't have to reinvent the wheel every time he or she sits down to write.
Because the objects are self-contained, they can be reused endlessly and in different combinations. Just as important, objects solve a fundamental problem that most managers of information technology shops face daily -- "moving software from one platform, say a PC, to another, say a Macintosh or Unix system," said Adele Goldberg, a computer scientist who has written books on object-oriented programming.
"By clearly specifying the parts that are hardware-dependent and those that are not, the porting process is improved," she said. Porting is moving software from one operating system, such as DOS on PCs, to another, such as System 7 on Apples.
Finally, objects bear a more natural relationship to the things they describe, making possible some projects that have become virtually undoable in the traditional line-by-line way.
Take flight-simulation programs for instance.
The government has long relied on software that simulates the handling of military airplanes to help flight crews learn about new planes before they even get into the cockpit. But, because the planes are frequently being retooled and upgraded, rewriting a multimillion line program would simply take too long.
"Given an infinite amount of time and an infinite amount of resources, you couldn't do it for certain airplanes," said Michael Rissman, who designs programs that are used to write simulator programs for planes like the B-2 at Carnegie Mellon University's Software Engineering Institute, which is funded by the Department of Defense.
But with objects, it's much easier, he said. Software engineers can write objects that correspond to key features of the aircraft. One example is turbines, which give jet engines their power. Over the life of an aircraft, engine performance frequently is modified by using new materials to construct the turbines, or by changing the size, angle and spacing of the turbine blades, Mr. Rissman said.
Simula-67, a simulation programming language developed at the Norwegian Computing Center in 1961, was the first language to use objects -- as well as classes and subclasses of objects that "inherited" similar structures from each other -- as a basic building block, said Brent Hailpern, an expert on programming languages for the Association for Computing Machinery, the largest and oldest educational and scientific computing organization in the country.
The notion of inheritance was significant because it enabled programmers to relate "computer objects to real-world objects," he said.
Never has the need for a breakthrough in programming been so acute. Said Mr. Hailpern: "The need for new software is not keeping pace with the power of the hardware coming out," he said.
Indeed, computer hardware is getting faster and more powerful. The most effective desk-top computer can do things in seconds now that a room-sized mainframe, a thousand times more expensive, couldn't do in hours 20 years ago. Industry analysts say that the power and performance of computer hardware virtually doubles every two years.