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.
|