Symbolics Technical Summary

Copyright Symbolics Inc.
October 1985
Cambridge, Massachusetts

Used with permission.


Symbolic Computing Overview

This chapter outlines history of symbolic computing and discusses the main features of Symbolics software and hardware. Subsequent chapters cover the individual components of the system in more detail.

Symbol Processing Computers

Symbolics manufactures high-performance symbol processing computers and associated software. Symbol processing (or symbolic processing) includes computation with symbols, relationships, and graphical objects as well as numbers, characters, and bits. Symbolic representations can more closely model a given problem as it exists in the real world. By making complex problems easier to represent, symbol processing languages enhance programmer productivity. The coupling of symbol processing software and hardware in the 1980s has considerably broadened the scope of problems that can be solved by computers.

The Symbolics 3600 family is a line of 36-bit single-user computers designed for high-productivity software development and for the execution of large symbolic programs. 3600-family processors give the user all the computational power associated with multi-user timesharing computers in a dedicated workstation. This is accomplished via a new and unique machine architecture that supports high-speed symbol processing operations directly in hardware. For example, every word in a Symbolics computer's virtual memory is tagged with data type bits - hence the name tagged architecture to describe 3600-family processors. The processor reads these bits to prevent illegal operations. As an added benefit, tag bits reduce the need for data type declarations in programs.

The Symbolics-Lisp system software constitutes a large-scale programming environment, with over a half-million lines of system code accessible to the user. Object-oriented programming techniques are used throughout the Symbolics-Lisp system to provide a reliable and extensible integrated environment without the usual division between an operating system and programming languages. All of the system software is written in Symbolics-Lisp. A high-performance implementation of Symbolics Prolog is also available, as are compilers for more conventional languages.

Outstanding documentation is a hallmark of Symbolics systems. The award-winning Document Examiner provides full access to Symbolics documentation in formatted form on the high-resolution screen of a 3600-family console. Within the Document Examiner, users can use the mouse to point at topic and object names. When they press a mouse button, the Document Examiner automatically calls up the documentation for those items.

Printed documentation is provided for users at all levels of experience. Conceptual documents present an overview of a topic, procedural guides show users how to accomplish specific tasks, and reference manuals describe the features of the system in detail. In addition, a range of training courses is offered by the Education Department of Symbolics.

Applications

Typical applications of Symbolics computers include the following areas:

History of Symbolic Computing

Early Development

The economics of computer hardware and the computational demands made by modern software have converged to make personal, networked computers more attractive than timeshared systems. Foreseeing this changing situation, researchers at the M.I.T. Artificial Intelligence Laboratory initiated the Lisp Machine project in 1974. The project was aimed at developing a state-of-the-art personal computer that would support programmers developing large and complex symbolic programs. An important decision was made early in the design process: for consistency throughout the software environment, all of the system code would be written in a single language - Lisp.

The Lisp Machine concepts rests on the following tenets:

As the first stage of the project, a simulation of the Lisp Machine was written on a timeshared computer system. This enabled software development to proceed while the hardware was being debugged. Software development for Lisp Machines has been ongoing since 1975. The first-generation Lisp Machine, the CONS, was running in 1976. A second-generation Lisp Machine, called the CADR, incorporated some hardware improvements. It was introduced in 1978, replacing the CONS. (Technical note: Both the CONS and the CADR were based on microcode emulator architectures. In a microcode emulator architecture, the instruction set for support of Lisp is emulated by microcode.)

The Evolution of Symbolics, Inc.

In 1980, Symbolics, Inc., was formed with the purpose of combining past experience with the latest technology to develop a line of symbol processing computer systems and related products. Symbolics introduced the Symbolics LM-2 in 1981. The LM-2 was basically an M.I.T. CADR, repackaged for higher reliability and easier servicing. Symbolics made numerous improvements to the system software and offered options such as Fortran-77, color graphics hardware, and the LGP-1 laser graphics printer.

>From 1979 to 1982, research continued on a much more powerful and cost-effective computer architecture. This system, known as the 3600, is based on a completely new design. With the 3600 family, Symbolics has replaced the microcode emulator architecture with special hardware to support high-speed symbolic and numeric computations and to expand virtual memory to 1 Gbyte. Ethernet hardware and software support is standard on all 3600-family computers. The console has been completely redesigned to offer a larger viewing screen with built-in 16-bit digital audio operation. To correspond to the new hardware, the software development team made major enhancements to the software system. In 1982 and 1983 the menu of 3600-family options expanded to include the Symbolics Pascal Tool Kit, the MACSYMA symbolic mathematics system, and a line of high-resolution color graphics products offered by the newly-formed Symbolics Graphics Division.

The Symbolics 3670 system was introduced in early 1984, with the 3640 following later in that same year. The 3670 is the most flexible member of the 3600 family, with a wide range of memory, disk, and add-on options. 3670s are designed as high-performance program development workstations or as networked file, database, or knowledge servers. The 3640 is a compact, high-performance implementation of the 3600 architecture. Also introduced in 1984, the Floating-Point Accelerator option increases the speed of IEEE-compatible floating-point multiplications by a factor of 500%, while speeding up integer divisions by 50%. Release 6 of the Symbolics-Lisp system software included the Ephemeral-Object Garbage Collector. This proprietary system reduces paging, and is the most efficient storage management system in symbolic computing. The Document Examiner included with Release 6 won an award from the Society of Technical Documentation. The Symbolics Graphics Division introduced S-Paint, S! ! -Geometry, S-Render, and S-Dynamics as part of an integrated video-compatible image-making and image-processing facility.

The 3675 and 3645 systems, introduced in 1985, are the latest hardware implementations of the 3600 architecture. The 3675 and 3645 systems incorporate the new Enhanced Performance Option - an additional processor board for instruction prefetching that increases program execution speeds by up to 50%. Symbolics expanded its menu of symbolic languages with the introduction of Symbolics Prolog, an optimizing compiler implementation with special hardware and microcode support. Symbolics Prolog established itself as one of the fastest Prolog implementations available on any computer. The Generic Bus Interface (GBI) interfaces the 36XX's high-speed L bus to slower, asynchronous devices and supports interfaces to UNIBUS and MULTIBUS standard busses. As a company, Symbolics grew in 1985 to over 650 employees with 35 sales offices in the North America, Europe, Japan, and the Middle East. By the fall of 1985, Symbolics had installed over 1500 systems at customers around the world.

Software overview

This section describes the advantages of the Lisp language, specific features of Symbolics-Lisp, the Symbolics-Lisp programming environment, other languages supported by Symbolics, and the network software.

Why Lisp?

All system software for Symbolics computers is written in a dialect of the Lisp language called Symbolics-Lisp. Lisp is a computer programming language that originated as a tool for Artificial Intelligence (AI) research. AI is a branch of computer science that seeks to understand and model intelligent behavior with the aid of computers. Lisp is designed to symbolically represent objects in the world and the relationships that exist among them.

"Lisp" stands for "List Processing Language" as it was dubbed by Professor John McCarthy of M.I.T. (now at Stanford University). At the lowest level all objects in Lisp are represented as lists, even the expressions in the Lisp language. This uniformity of representation has proven to be a tremendous advantage of Lisp over other languages. It makes Lisp easy to extend, which accounts for the longevity of the language and the tremendous range of applications written with it.

At this time, most major artificial intelligence systems are written in Lisp, including programs for expert problem-solving, common-sense reasoning, learning, natural language processing, education, speech, intelligent signal processing, and vision. Lisp has many features that make it useful for symbol processing.

In recent years, highly efficient compilers and symbol processing hardware have dispelled the earlier notion of Lisp as a slow language. Optimized code generators for Lisp have made it useful as a systems programming and implementation language.

Symbolics-Lisp

Symbolics-Lisp is a Lisp system developed specifically for Symbolics computers. All of the system code is processed by the Symbolics-Lisp compiler. Applications in symbolic mathematics (MACSYMA), document processing, and computer aided design have also been developed exclusively in Symbolics-Lisp.

Symbolics-Lisp evolved originally from the Maclisp dialect developed in the 1970s. It is somewhat compatible with Maclisp, while introducing many new features and improvements. These include:

The Flavor System offers the following advantages: In the past two years, the Common Lisp standard has unified the Lisp community around a compatible dialect. Symbolics has been a prime supporter and an active participant in the Common Lisp movement. The committee to define Common Lisp included nine members of Symbolics' technical staff.

In keeping with the trend toward Common Lisp, the Zetalisp dialect of Lisp, in which much of Symbolics system software is written, has been modified to make it more compatible with Common Lisp. For example, both the interpreter and the compiler use lexical scoping of variables and can process Common Lisp as well as Zetalisp code.

In a future release, all Symbolics software will be coded in Symbolics Common Lisp (SCL). SCL is a superset of the Common Lisp standard with many extensions for the Symbolics environment, including the Flavor system.

Note: In the rest of this document , "Symbolics Lisp" and "Lisp" are used synonymously.

The Symbolics-Lisp Environment

On Symbolics computers the traditional distinction between an operating system and a programming language is blurred. Symbolics-Lisp is a language, but it is also the environment for the development and execution of programs in other languages. By integrating the Lisp language with features commonly associated with operating systems, Symbolics-Lisp provides a unified environment for systems programming, applications development, and execution of existing programs.

Developers find that Symbolics-Lisp provides an extensive interactive programming environment. Over a half-million lines of code are provided with the basic system. Much of this code is available in the form of sources. This includes over 10,000 compiled functions to which users have full access.

The basic software incorporates the following components:

Other Languages

Support for symbolic computing goes beyond the Symbolics-Lisp language. Symbolics continues to broaden the spectrum of programming languages available to the developer.

Logic programming, and the Prolog language in particular, is acknowledged to be an important tool in artificial intelligence programming and expert system development. Symbolics Prolog is a high-performance optimizing compiler implementation with hardware and microcode support. With the addition of Prolog to the Symbolics product line, the 3600-family is a Prolog Machine as well as a Lisp machine.

Prolog programs written according to the DECSystem-10 Prolog standard will run on Symbolics machines without modifications. A Lisp-like syntax for Prolog is also available. In addition, Symbolics Prolog provides full access to the Symbolics-Lisp environment. Prolog programs can manipulate Lisp objects and invoke Lisp functions. Similarly, Lisp programs can manipulate logic variables and invoke Prolog queries.

The Symbolics FORTRAN Took Kit supports the full FORTRAN 77 language. Extensions to the Zmacs text editor support the editing of FORTRAN programs. The FORTRAN editor mode understands the boundaries of FORTRAN routines. Debugging is done at the source code level.

The Symbolics Pascal Tool Kit offers full support for ISO Standard Pascal (including conformant arrays). The Tool Kit also supports most features of Pascal/VS, the IBM dialect. The Tool Kit has a number of features for high-productivity, including: syntax-directed editing supported by templates, special Pascal editor mode (keywords and comments are automatically shown in boldface on the screen), incremental compilation of individual procedures in the editor, and source level debugging.

MACSYMA for the 3600 is a large, highly sophisticated software system for symbolic mathematical manipulation. The system handles symbolic mathematical expressions, following the rules of algebra and calculus, and produces symbolic closed-form solutions. MACSYMA server as an expert mathematics assistant to applied mathematicians, scientists, engineers, and educators. On the 3600, users can take advantage of the fast, high-resolution display to generate detailed visual graphs of symbolic functions.

Network Software

The Symbolics Network System enables 3600-family computers to share resources and exchange data with each other and with computers, devices, and communication networks.

Local area networks facilitate the sharing of programs, data file, and network resources. Users realize the best of two worlds:

As few as two or as many as one hundred Symbolics computers can be coordinated on a single Ethernet network.

Connected networks can be set up by attaching gateways to an Ethernet, which attach it to different Ethernets or large-scale computer networks. Network commands are generic; that is, the type of low-level network protocol used is transparent to the user. For example, files are accessed on any machine in the network, just as they would be on a local machine.

Here are some of Symbolics network software features:

The Namespace System is a database containing information about the network and a database editor for updating that information. The database stores information that tells network software what protocol and syntax should be used to access any computer, device, or gateway on the network. This powerful feature lets users invoke many operations across the network using the same command, regardless of protocol, device, or computer being accessed.

Through the use of Generic Network Services, it is easy to define and implement new services , or create your own protocols and services. The only requirement is that the software protocol operate over Ethernet or telephone lines.

Network communications are enhanced by applications packages written for the Symbolics-Lisp environment. These include a sophisticated electronic mail utility (Zmail), a real-time interactive message system (Converse), and generic file-system access and network services.

Symbolics Dialnet permits direct connection between Symbolics computers over standard telephone lines. It also can act as a gateway between local networks at different sites. Some user services previously available only on computer linked by local area networks can be provided between computers on different local networks using Symbolics Dialnet.

Hardware Overview

This section outlines the features of the Symbolics 3600-family processor architecture, network design, and peripherals.

The Symbolics 3600 Family

The Symbolics 3600-family hardware was designed to provide the user with the power of mainframe computing in a compact, single-user package. This is made possible by:

The 3600-family Processor

The 3600-family processor was designed along wit the software, yielding an unusually close coupling between the processor and the Symbolics-Lisp system software. High-performance features of the 3600-family processor include the following:

Peripherals

Symbolics computer systems can be configured with a number of Symbolics peripherals, including: Software support for peripherals ranges from printing software to elaborate color graphics systems with full color rendering and animation.

User Interface Hardware

Users interact with Symbolics computers through its user interface -- a combination of software and hardware that determines how information is presented to the user.

The user interface of Symbolics computers is based on software that interacts with several hardware components:

The goals of the Symbolics user interface software design include: User interface hardware is supported by Symbolics software, including these integral parts of the Symbolics-Lisp environment: