Byte Article Page 7

 

 


 

The Development Environment

The primary objectives of the NeXT programming environment are to simplify the development of interactive user interfaces and to simplify the creation of new applications through the use of object-oriented programming.

Other systems employing graphical interfaces--like the Macintosh, for example--are great for the end-user but extremely complex for programmers, particularly in developing a working user interface. To ease the burden of this task for the developer, the NeXT system includes tools for building interfaces to the NeXT windowing system, and also tools for object-oriented programming.

The NeXT system software includes an ANSI C compiler and an object-oriented pre-processor called Objective-C, developed by Stepstone Technologies. Objective-C allows you to define objects as groups of C procedures.

NeXT provides several libraries of ready-to-use objects, called kits, for integration into Objective-C programs. These kits provide a library of around 34 objects for implementing the core functionality of a NeXT application, although a programmer would normally use only a small subset of these objects. This library is known as the Application Toolkit, and the Objective-C interface can access it directly.

Object-oriented programming allows a one-to-one correspondence between objects on the screen and objects in your program. An objects consists of data (called instance variables) and executable code. If the object is to be visible on the screen (a window, for example), the code also contains an entity called draw-Self:: that's composed of C code, Objective-C code, and PostScript code, which is used to describe the appearance of the object to the Window Server.

Probably the key concept with respect to user interfaces is that objects can respond directly to messages generated by user actions. Rather than having to right lines of conditional statements in C code to respond to user actions, they user actions are interpreted as messages other objects can understand. For example, you might have an object in your program called "Window," which can understand the " Close" message sent by a user response.

NeXT provides a program called Interface Builder that allows you to interactively build user interfaces for your programs. Interface Builder lets you design the layout of a graphical user interface by selecting buttons, menus, and other objects from an object library to include in your application.

This function is somewhat similar to ResEdit on the Macintosh. However, Interface Builder goes further -- it allows you to define connections between objects. That is, Interface Builder lets you specify actions for the objects to perform in response to user actions on other objects. For example, you could build a Beeper button object into your program interface simply by selecting a prototype button from Interface Builder's on-screen inventory, moving it to where you want on the screen, giving it a label, and assigning an action (say, emit a beep) to be performed when a user clicks on the button.

This is similar to the function of HyperTalk in Apple's HyperCard program. The big difference, however, is that Interface Builder generates the binary description of the object that you can integrate into programs.

You can also create custom objects by selecting an object that most closely resembles what you want and customizing its appearance and behavior. NeXT's goal is to supply enough objects so that a programmer could select objects and define their connections, making it possible to build an application from scratch writing little or no code.

In addition to the Application Kit and Interface Builder, the NeXT system software includes kits for working with music and sound. The Music and Sound Kits provide objects for integrating these features into your programs. There is also a number of library functions (not objects) that allow you to tap into the processing capabilities of the DSP. These libraries provided some 50 functions for performing tasks like fast Fourier transforms, and spectral filtering.

NeXT supports the concept of "shared libraries" in its development environment. This means that multiple applications and processes can share a single copy of executable code from the object library. Although library sharing was not implemented when we saw the cube, it should improve performance and reduce the memory and storage requirements of applications.

Applications

NeXT will bundle several applications with the machine. These include the word processor, WriteNow, that is owned by NeXT and is currently distributed by T/Maker for the Macintosh. The system software also includes the standard Unix Mail program equipped with a graphical front end that can attach voice messages to mail files, the file-searching program called Find, C and Objective-C, a symbolic debugger, and on-line documentation. It also has educational and reference tools such as Webster's Dictionary, the complete works of Shakespeare, and Mathematica from Wolfram Research (see the text box "Bundled Software"). A personal text database allows you to automatically index all your word processing and electronic mail communications so you can recall documents or memos based on keywords instantly.

And important goal of the NeXT software environment is the development of "digital libraries." With its erasable 256-megabyte magneto-optical disk, NeXT hopes to promote the idea of easily accessible text databases. In the education market, these databases will include encyclopedias, dictionaries, textbooks, and other reference works.

NeXT's first software release lay the groundwork for the company's plans for the nineties. The DSP and the kits for programming it offer exciting possibilities for new real-time applications. It will be interesting to see how the software will be used and what new applications will be developed.

One Giant Step Forward

The cube is an impressive technical achievement. We liked the carefully thought-out design that didn't just use fast components, but covered every aspect of moving information through the system. The choice of NuBus for the backplane bus is an excellent one; it goes a long way toward providing the hardware support for the cube's planned multiprocessing capability.

Considering the amount of information that the machine is expected to use, the high-capacity magneto-optical drive is a good design choice. The graphical interface uses the well-documented PostScript imaging language and goes a long way toward hiding the uglier side of Unix from the user. The facility with which NeXT's object-oriented programming environment reduces the work needed to write an event-driven program is also impressive.

It is indeed a machine for the nineties. It represents a bold step for both in hardware and software design and effectively redefines what constitutes "standard equipment."

However, as we go to press, some big questions remain unanswered. One relates to the performance of machine. In our limited time with several beta cubes, it was difficult to judge the overall performance. Display PostScript operations were very fast, putting to rest the controversy of Display PostScript's performance, at least as far as the cube is concerned.

However, the disk read/write operations seem pretty slow-perhaps because so much beta debugging code was being carried along as baggage, and because library sharing was not yet implemented. We saw the magneto-optical disk drive in operation, but it still has some operating bugs, and its 96-ms access time might be a source of frustration if it's used as the main system drive. At this point, we cannot comment on its reliability.

Another question is whether software developers will support NeXT. The primary obstacle to the acceptance of Unix in the general marketplace has been the lack of software applications. Software developers are faced with choosing between Macintosh, OS/2, DOS, and now a new version of Unix with a proprietary windowing system. To be successful, NeXT will need substantial support from software developers; at the time of our visit, only about 10 developers had signed on, and NeXT would not release their identities.

The concern about outside development is perhaps tempered by two facts. First, the object-oriented environment should simplify moving existing Unix programs to the machine. Second, each cube is a complete development system, since all the development tools--compilers, object libraries, and Interface Builder, are bundled with the machine.

Then there's the question of NeXT's target market--higher education. While the machine is certainly a perfect fit for the university community, universities are not known for being big spenders. Certainly, many students will have a hard time coming up with $6500 or more for a computer, let alone another $1995 or so for the laser printer, and perhaps $1495 for a second magneto-optical drive for backups.

Of the cube's design, Jobs told us, "if you want to make a revolution, you have to raise lowest common denominator." That's true, but you also have to get the product into the hands of enough revolutionaries to make a difference. Yet it's clear NeXT is thinking small, at least in terms of initial marketing.

Daniel Lewin (NeXT's vice president of marketing and sales) told us, "We built the company not to need huge numbers." And Jobs said, " We'll focus on other markets in the future, but we're not going to do it today there's no reason why we can do very well in [the educational] market alone."

Perhaps. But considering the machine's capabilities, we can't help but wonder if NeXT is being too conservative in its marketing plans. If so, it seems that NeXT may have to be able to endure some lean years until the machine catches on in the early nineties.

Thom Thompson has a BSEE from Memphis State University and is a BYTE senior technical editor at large.

Nick Baran has a BSME from Stanford University and is a BYTE technical editor based in San Francisco.

 

Return to Article Index