Nearly everything in the real world can be described in terms of conceptual frameworks--that is, within a frame of reference. Shopping in a grocery store, driving a car, playing baseball, buying a house, starting a business, or flying the space shuttle all involve working within clearly defined rules and relationships while permitting great flexibility. You can buy a lot of groceries or just a few; shop at a big supermarket, a corner store, or a fruit stand at the side of the highway; pay with cash, check, credit card, or coupons. Despite such variations, everyone knows what shopping for groceries means, how it works, and how to interact with the other people involved.
Similarly, an experienced driver renting an unfamiliar car takes only a few minutes to adjust the seat and mirrors and adapt to the new locations of controls and dials, the feel of the steering, and the location of the car's edges in relation to other vehicles and the edge of the road. By following some simple rules and paying attention, the driver can interact safely with other drivers of different kinds of vehicles going in different directions at different speeds and navigate many different roads and freeways to reach one particular destination among many possibilities.
Baseball teams know how to play baseball, home buyers know how to look for and purchase a house, executives know how to set up businesses, and astronauts know how to perform complex technical feats in space, all because they work within a recognized frame of reference for each domain. Yet all of these processes work a bit differently each time, allowing flexibility within clearly defined limits. In this sense, everything in life is a framework, and we all work with frameworks every day without even thinking about it.
Everything, that is, except software, and everyone except software developers. It's as if programmers have to grow the food, build the store, stock the shelves, and invent a monetary system each time they want to buy groceries. Computer software may be the last major industrial product that's still built from scratch each time.
Although the preceding comparisons may seem exaggerated, most programmers would agree that developing software requires much more work than it should. Taligent is attempting to change the programming paradigm by using object-oriented frameworks for everything--not only for developing applications but also for developing the CommonPoint system itself.
Taligent frameworks provide generic code at all levels of the system that programmers can reuse and customize easily. Instead of using thousands of interrelated APIs to write monolithic applications for a monolithic operating system, developers can use individual framework APIs to create smaller, more specialized programs that are fully integrated with the rest of the system and with other programs. And instead of writing only applications that sit on top of the operating system, developers can customize the application system itself to create new kinds of tools, utilities, drivers, file formats, networking protocols, data types, graphics primitives, drawing algorithms, and the like, any of which can be products in their own right.
Taligent's approach to frameworks is described in more detail in Chapter 2, "The
Taligent programming model."
[Contents]
[Previous]
[Next]