Reproduced with permission from NeXT Computer, Inc., USA, NeXT on Campus, Fall 1990. ã 1990 NeXT Computer, Inc., USA

The Gourmet Project:
Adventures in supercaclulator design
Dr. Richard E. Crandall, Director of Scientific Computation Group, NeXT, Inc.

Whereas we hear a great deal about supercomputing, the notion of supercalculating, as I describe it presently, has not even begun to enjoy its rightful vogue.  The historical explanation for this disparity is simple: supercalculator design as I intend it requires a profound user interface.  Supercomputing machines have been around for decades, while only recently have sophisticated workstation platforms±like NextStep±appeared on the scene.  With a sufficiently powerful±and sufficiently friendly±window environment, it is possible to design supercalculator applications.  With this in mind I embarked on the Gourmet project, the idea being to create an experimental supercalculator, meaning: 

Supercalculator:  a practical calculator that covers a super-wide calculating spectrum, from numbers to symbols to equations to graphics.  

Certainly much can be said for technological innovations such as Hewlett-Packardâ hand-held scientific calculators.  But these machines, by their very design and physical autonomy, lack at least three primary advantages: interprocess activity, large dynamic data storage, and state-of-the-art graphics.  In the Gourmet project I endeavored, with the inestimable aid of NextStep, to overcome, rather than circumvent, these limitations.

Gourmet can grapple with certain problems that reside beyond the reach of traditional calculators.  For example, Gourmet can be used to do sophisticated Fourier analysis on large signal or image files.  One may perform arbitrary-precision number theory, such as investigations of factoring and prime numbers.  Another example might be complex analysis, involving say a key property of the Riemann Zeta function.  In particular, Gourmet provides immediate access to most of the special functions of mathematics and physics.

Gourmet runs a Mathematica kernel behind the scenes.  One important feature of the application is that the intricacies of Mathematica syntax are essentially hidden from the user.

The name ªGourmetº derives from a crude yet effective metaphor.  Supercomputers are certainly awesome, being applied these days to such deep problems as the design of medicines at the molecular level, or detective work concerning the structure of remote galaxies, or prediction of the quantum meanderings of gluons and quarks.  This glory aside, I am yet compelled at times to think of a supercomputing session as, if you will, a pagan roast.  Let's get the hottest fire pit we can, the most impressive pig we can, and let's turn and baste and cook that beast with vigor!  By way of contrast, imagine a workstation application that allows you to sample delectable symbolic and numerical morsels from the haut cuisine of higher mathematics.  Imagine then, an application called Gourmet that provides for you these tasting sessions, while at the same time insulating you from the commotion of the kitchen; that is, from the complications of program syntax.

To make these notions more tangible, let us refer to the the main window figure, showing the appearance of the  Gourmet application.

At the upper left is a program area, where actual Mathematica programs can be entered.  Usually this area will be used only by an aficionado of the Mathematica language.  Indeed, much work can be accomplished without using this area.  In the upper right text area one obtains text output, examples of which I describe below.  At the lower right is a typical plot output.  This kind of output is, of course, PostScript, so that from a menu one can copy the plot and later paste it into a wide variety of applications.  At the left of center one finds an expression area, in which raw expressions can be entered for processing.  It is this area that perhaps best exemplifies the true spirit of Gourmet.  If you know the expression to be processed, you can enter it in the area and then you are "home free;" from that point  you use controls, such as buttons, to do language-independent processing.

Note that the keypad has interesting symbol keys, such as the column: e, p, I, ¥.  The appearance of key labels such as "I" and "¥" is not facetious; indeed Gourmet can handle correctly complex numbers (with imaginary part I) and infinite quantities.  Referring to the close-up figure, you see that the entity eip can be entered using only keypad presses:  E^(I Pi).  The output in the program window on the right shows the celebrated Euler identity:  eip = ±1.  Complex numbers are of great utility in engineering fields such as electronics.  Gourmet has no trouble in the inversion, magnitude assessment, or plotting of complex values and functions.  Referring to the second part of the close-up figure, you see an example of rigorous integration, in which one simply hits the integral button to get the theoretical answer.  One can also remove the limits to get the indefinite integral, or check the numerical "N" button to get a numerical integral.  The summation button likewise performs exact or numerical sums.  The "Solve:" area is of interest.  One can enter in the Operand field a logical expression such as x3 + x2 ± x + 1 == 0.  Then entering x into the Solve: field and pressing the Solve button yields the cubic solutions.

Gourmet handles graphics in the following way.  When you ask for a 2D or 3D plot, or a Contour plot or a ListPlot, whatever; Gourmet messages Mathematica, commanding that the PostScript for the plot be placed in a temporary file.  Gourmet then grabs this file, display, the plot in the graphics area.  A typical graphics operation would be to enter in the Operand: field an expression such as Sin[10 x] Cos[5 y] (this can be done with the keypad), then to simply press the "x-y-z" button for three-dimensional plots.  The limits on any plot, as well as the plot resolution, are determined via the text fields just to the left of the plot area.

Programmers and developers may be interested in how Gourmet communicates with Mathematica.  This is accomplished via a so-called Droid object, created for scientific applications.  This object is named according to the folk notion of an "imperial droid," as it appears in the movie The Empire Strikes Back.  Your application (such as Gourmet) launches a Droid (a process, such as a Mathematica kernel).  This Droid sends back answers (such as factored polynomials, integrals, and so on) when and only when it really has an answer to send.  This means that while Mathematica is thinking, you can still peruse the menus, quit Gourmet, and so on.  The point is that the coexistence of Gourmet and Droid processes is asynchronous.  The technique is similar to the Speaker-Listener paradigm of the standard Application Kit.  The Droid is a special object of this type, designed for scientific applications per se.

This work is experimental, and there is by no means any claim that Gourmet is the ultimate calculator.  But I feel that Gourmet is some kind of elementary harbinger of a future class of supercalculators.  Hopefully, the next few years will bring, on the part of developers, educators, and researchers alike, a new array of supercalculators that take this preliminary Gourmet concept to the extreme limits allowed by the NextStep environment.