[editor : Carl T. Helmers Jr.] [publisher : Virginia Londoner (Virginia Londner), Gordon R Williamson] [art : Ellen Bingham, Wai Chiu Li, Christine Dixon, Holly Carmen LaBossiere, Deborah Porter] [cover : Ken Lodding] #Magazine
#Abstract
This month, Ken Lodding has created a fantasy on far-out applications with a LISP theme. The surface of some asteroid has been discovered. A monolith engraved with the S-expression form of a LISP program is gazed upon by some astronauts. We presume some archeology of this monolith will have to be done to uncover the balance of the program. We leave it to readers familiar with LISP to identify the textbook from which these S-expression fragments were taken, and the purpose of the program.
LISP is often described as a special-purpose, list-processing language. However, there is much more to the language than list manipulation. As an introduction to this language, guest editor John Allen provides An Overview of LISP. Page 10
In LISP Based Systems for Education, J Laubsch, G Fischer, and H D Boeker discuss the evolving computer culture and they argue that the basic concepts and approach to computation that LISP represents offers significant advantages within the contemporary educational framework. Page 18
The management of memory space is very important in any computer language. To the user of a LISP system, memory seems to magically appear out of the "ether" as needed. LISP systems contain a storage reclamation package that scavenges new storage from discarded computations. Authors Gianfranco Prini and Martin Rudalics describe the Lambdino Storage Management System. Page 26
William A Kornfeld shows an application of LISP ideas in the artificial intelligence domain. Pattern-Directed Invocation Languages are powerful tools for representing and manipulating facts in data bases. The implementation of these ideas involves 2 facets of LISP: the generalized record structures, called property lists; and the ability to store procedures as data structures. Page 34
The addition of a realtime clock to your computer system expands the dimensions you can explore. A real-time clock is also the basis of any multiprogramming system. Steve Ciarcia provides several different real-time clocks in Anyone Know the Real Time 7 Page 50
In parts 1 and 2 of A Model of the Brain for Robot Control, James Albus described a neurological brain model. Part 3 shows how this structure might be used to produce perceptual and cognitive phenomena. Page 66
The mystery of graphics on the Radio Shack TRS-80 is now dispelled. George H Yeager reveals the details in Exploring TRS-80 Graphics. Page 82
In the third part of The Nature of Robots, William T Powers describes the how and whys of his particular model of human behavior. Mr Powers develops a 2-level control-loop simulation of a 3-muscle system to further the understanding of how our own control system works. Page 94
Other articles this month discuss many of the applications for LISP. It is only fitting that S Tucker Taft discusses The Design of an M6800 LISP Interpreter. Page 132
Several LISP articles have centered on some of the unique features of LISP to aid solution of nontrivial problems. Mathematician and computer scientist Vaughan Pratt views languages from a more distant perspective. He shows that features found to be attractive in special cases are instances of general principles that a programming language must observe if generality and expressibility are not to be compromised. Vaughan Pratt gives us A Mathematician's View of LISP. Page 162
A I Halsema provides us with a quick description of the M68000 and some possible applications of the new processor in A Preview of the Motorola 68000. Page 170
Are you interested in working with symbolic mathematics? Perhaps you manipulate many algebraic formulae. David Stoutemyer discusses several LISP Based Symbolic Math Systems that help perform these functions. Page 176
The actions of digital circuits may be described by Boolean expressions. These expressions can be manipulated by a program to test for correctness, simplify the equation, and many other logical manipulations. Richard Weyhrauch and Henson Graves discuss some LISP Applications in Boolean Logic. Page 206
Most processors do not have division instructions. Therefore, if you wish to perform division, you will have to write your own. In An Overview of Long Division, Geoffrey Gass provides the background needed to write a division routine. Page 220
[author : Carl Helmers] #Edito
Extract : « This is the August issue of BYTE. It is also the third consecutive year that we've chosen to have a computer language as an issue content theme — a choice which is reflected in a number of articles, as well as the cover painting by Ken Lodding.
In the past two years, the August issues have had themes of APL (1977) and Pascal (1978). This year, we continue the August emphasis on languages with a special issue devoted to the language LISP. An experiment in editorial policy is also reflected in this issue. John Allen was responsible for the solicitation and technical reviewing of the articles concerning LISP in this issue, truly functioning in the capacity of "Guest Editor" of BYTE. John has been involved with computation research involving LISP for some time, and he is in touch with many of the members of the artificial intelligence community. Some of his comments on LISP appeared in the March 1979 issue of BYTE in the form of a guest editorial. As a result of his earlier writings about LISP as an appropriate tool of expression for personal computing, we asked him to take charge of the LISP oriented technical content of this issue and several issues to follow. Readers will find a wealth of information as a result of John's efforts.
By making LISP a feature of this issue of BYTE, we are emphasizing the history of LISP's utility in artificial intelligence and computation research. The language is derived from the work of John McCarthy in the early 1960's. LISP will have its place in personal computing, alongside a number of other styles of expression. For lack of appropriate systems software, I have not personally used LISP to any extent, but I believe that I have the beginnings of an abstract appreciation of its potential. This perspective comes from personal contact with individuals who use LISP regularly, as well as reading which includes the articles in this issue as collected by John Allen.
In a recent (May 24 1979) conversation with Gary Kildall on the occasion of the fifth IEEE Computer Society Asilomar Conference on Microcomputing, I mentioned the LISP issue. Gary has a background in computer systems software work with special emphasis on small scale computer systems of the kind used by BYTE readers. He is the first implementor of the PL/M compilers for Intel's 8080 microprocessors, and he and his firm, Digital Research, are responsible for one of the most widely used 8080 and Z-80 oriented software products, the CP/M operating system. I learned some interesting points from Gary about LISP and its significance to the use of computers, viewpoints which are worth repeating for readers. [...] »
Simple methods of telling time
[author : Steve Ciarcia] #Electronic #Algorithm #Time #Listing #BASIC
Extract : « I'm sure you've all heard the term real-time, such as a real-time operating system. But, how many really understand its meaning? A simple definition of a real-time system is: a system that operates in real time, that is, it responds to the need for action in a period of time proportional to the urgency of the need; first things are done first. In control applications the system can be depended on to provide the information necessary to base time-dependent decisions on information that is up to date as of the minute or the hour. Real time describes the processing of information in a sufficiently rapid manner that the results of the processing are immediately available to influence control of the process being monitored. [...] »
Does CM AC accurately represent human brain function?
[author : James Albus] #ArtificialIntelligence
Extract : « In parts 1 and 2 we have shown how a neurological model called the Cerebellar Model Arithmetic Computer (CMAC) can compute functions, recognize patterns, and decompose goals. We have also shown how a crosscoupled hierarchy of CMACs (see figure 1) can memorize trajectories, generate goal directed purposive behavior, and store an internal model of the external world in the form of predicted sensory data. In this third article we will attempt to show how this structure and its capabilities can give rise to perceptual and cognitive phenomena. [...] »
Simulating a 3-muscle system
[author : William T Powers] #HowItWorks #Listing #BASIC #Robotics
Extract : « [...] The reference signal acts just as an intention ought to act. It specifies some state of affairs that is to be achieved, and serves as a target toward which action always urges the perception of the controlled variable. Under normal circumstances the control system can make its perceptual signal track a changing reference signal, and still oppose the effects of disturbances.
There are two main rules of thumb:
• The reference signal reaching a
good control system controls the
perceptual signal in that system.
• The actions of the control system
vary so as to oppose the effects of
disturbances, even if the reference
signal remains constant.
Let's see how this control system model applies to one small human subsystem: a spinal reflex arc (reflex just means "turned back on itself"). This will lead to some concepts that will be of use to the designers of robots. [...] »
The theory behind one implementation
[author : S Tucker Taft] #Listing #Lisp #Pascal #Assembly #Programming
Extract : « Anyone exposed to small computer systems has used a language interpreter of some sort, and certainly may have thought about implementing their own interpreter. Unhappily, implementing an interpreter for a complete version of most computer languages is a difficult and time-consuming job, unsuitable for a part-time personal computer enthusiast. The language LISP provides a unique opportunity in this respect. The foundation for a very complete interpreter can be programmed by a single person in several months of part-time effort. As a bonus, the resulting interpreter provides the user with a high level language in which to express algorithms.
The Language
From the user's point of view, the primary data structure
in LISP is the list. Every element of a list is either an
atom or another list. An atom is a primitive named object,
the name being an arbitrary string of characters:
ABC is an atom.
135 is an atom.
(ABC 135) is a list of two elements, both atoms. [...]
»
Perform Boolean logical operations with LISP
[author : Richard Weyhrauch and Henson Graves] #Listing #Lisp #Mathematics
Extract : « In LISP, some data structures can be viewed two different ways, either as data or program. This feature makes LISP unique among high level languages. When seen as a program, LISP expressions can be executed and return a value: when seen as data, they may be used as arguments for other programs. This means that if we think about a LISP program as a piece of data we can write programs directly in LISP which transform them into more useful programs.
We use LISP to imitate the manipulations that are done by engineers when designing combinatorial circuits. In this sense LISP can be used as a calculator for Boolean logic.
The examples presented here are well known to anyone who has studied a little hardware design. The purpose of this article is to give beginners with LISP some idea of what LISP programs look like and how some interesting symbolic manipulations can be represented in a natural way using LISP. It is written primarily with novices in mind. For this reason there are some elementary remarks about how LISP actually works. The code in this article was written as examples of LISP style programming. What we have tried to do is present some programs as they might be written in existing LISP systems. Of course the style is ours.
We illustrate the use of the recursive data structures, lists and S-expressions, and the use of lambda abstraction as a control structure to facilitate recursive transformations on them. [...] »
Providing real answers to division problems
[author : Geoffrey Gass] #Mathematics
Extract : « On the very simplest level, a division problem starts with two numbers, a dividend, which we want to divide by a divisor, to obtain a third number, a quotient. [...] »
Developing a feel for LISP
[author : John Allen] #Overview #Lisp
Extract : « LISP is simple and difficult, elegant and ad hoc; it is a beautiful blend of foresight and fortuity. LISP is a programming language, often characterized as a special purpose list-processing language. But LISP is no more a special purpose programming language than mathematics is a special purpose language for floating-point computations. Just as there's more to mathematics than the accounting and bookkeeping properties present in "general purpose" programming languages, there's much more to LISP than "just another programming language."
The best description of the LISP programming language is that it is a high level machine language. That is, it shares many of the facets of contemporary machine language — the necessity for attention to detail and the freedom to manipulate the machine's data and programs without restriction — yet LISP is high level in that the language contains the expressive power and convenience of traditional high level languages. The contradiction is resolvable: a LISP machine is just a higher level machine whose data items are organized differently from the binary bit patterns of most machines, and the LISP programming language is the assembly language for this machine. [...] »
Using computers as learning tools
[author : J Laubsch, G Fischer. and H D Bocker] #Lisp #Education #Book
Extract : « There is sufficient evidence that personal computer systems will become as powerful as today's computer systems used in artificial intelligence research. Within the artificial intelligence community people are concerned about possible uses of computers in an evolving computer culture. The basic goals of artificial intelligence are to:
• synthesize systems that behave intelligently;
• understand intelligence in terms of computational concepts.
The human needs a personal computer system will one day help to satisfy cover the range of playing, learning, recreation, artistic creation, and personal assistance to expand one's own memory and reasoning power. Using a computer to build an intelligent tutor and an educational environment that stimulates learning by discovery (ie: through simulation, exploratory problem solving) are of central importance to artificial intelligence. Although canned software for educational applications will be widely available there remains a need for programming to tailor the system to the user's individual needs and requirements.
Our notion of what programming is all about will drastically change: it will cover a wide range of possible relationships between man and machine where a person creates and manipulates dynamic information structures according to personal tasks and taste. Program writing, in the historical sense of writing individual statements, is just one aspect of using a computer and will become less relevant, if not obsolete, compared to the understanding and modification of prefabricated software components. [...] »
Data storage techniques represent major design considerations
[author : G Prini and M Rudalics] #Lisp #DataManagement #Book
Extract : « Lambdino is a statically scoped dialect of LISP (see glossary for definitions). The name Lambdino is a combination of lambda, Landin, and ino, where lambda stands for itself, Landin refers to a person, and ino is an Italian suffix for small. The reference to Peter Landin is due to the fact that he designed the first statically scoped applicative language based on the interpretive philosophy of LISP (as described in his paper entitled "The Mechanical Evaluation of Expressions"). Other predecessors of Lambdino include the anonymous language used by Reynolds in his work Definitional Interpreters for Higher-Order Programming Languages and in Scheme as described by G Sussman and G Steele.
A detailed description of Lambdino and the problems posed by its implementation are beyond the scope of this paper. Here we only want to sketch some ideas on which we have based its storage management system. Thus LISP or Scheme may be substituted for Lambdino throughout this paper.
An explicit design goal of Lambdino is its transportability onto a wide class of computers, including microcomputers. Particular care has been put into the development of the Lambdino storage management system in order to fit the space and time constraints of microcomputers. A machine independent version of Lambdino, implemented in MagmaLISP, has been realized and will be bootstrapped in the near future on several machines, including an IBM System/370 Model 168 (IBM 74) and a Zilog Z-80 Development System. The only assumption made in this implementation is that the memory of the host machine is structured into directly addressable bytes. [...] »
A data base development tool
[author : William A Kornfeld] #Languages #DataManagement
Extract : « LISP was first developed for use in artificial intelligence research, the branch of computer science concerned with understanding the nature of intelligent activity by simulating it on a computer. LISP has proved so successful that it is the only high level language currently supported at the MIT Artificial Intelligence Laboratory. Much of its success is due to its syntax and data structures which make it a convenient base upon which to implement very high level special purpose languages.
One very important class of these high level languages is the so-called pattern-directed invocation languages. They made their first appearance in about 1970 with the Planner system at MIT. Since then, dozens of these languages have been built at sites around the world with different sets of features. The basic concepts involved can be traced back to the work of such logicians and philosophers as Frege, Russell, and Carnap in the earlier part of this century. They were concerned with representing and manipulating facts about the world. They began with atomic facts and described methods that could be used to deduce new facts from old. Pattern-directed invocation languages treat facts, represented as LISP lists, as elementary data types and usually collect them together into one or more data bases. Procedures can be written to derive new facts (or to decide if it is possible to derive a given fact) from those already in the data base.
In this article we will be mostly concerned with the basic concepts involved in pattern-directed invocation languages. Toward the end, a brief summary is given of some of the more advanced ideas that have found their way into these languages. Special attention is given to the problem of implementing these languages in a LISP system. Much of this implementation is surprisingly straightforward, once the basic concepts of LISP are understood. In fact, the task of implementing a system almost identical to the one described here was given to students in a beginning programming course at MIT. The students had had only a few weeks experience with LISP, and a total programming experience of a couple of months, but they had little problem with the assignment. [...] »
Machine language access to graphic display characters
[author : George H Yeager] #Graphics
Extract : « Radio Shack seems to hide the neat little jewels of information a hobbyist needs to make a treasure of the TRS-80. One jewel is how to use the computer's graphics capability once you squeeze into the world of machine language by use of the T-BUG monitor. Beyond the excellent Level 1 User's Handbook, there has been little information until recently.
Between sessions of disassembling the undocumented control routines for keyboard, video, and cassette, I employed a "crystal ball" to unravel the mystery of machine language graphics control. (TRS-80 owners must be resourceful.) Here is what I found. [...] »
A look at LISP as a vehicle for expressing ideas
[author : Vaughan R Pratt] #Lisp #Mathematics #Programming
Extract : «
All higher order languages offer the programmer
mechanisms for simplifying and clarifying programs.
Viewed from the distance that mathematicians such as
myself prefer, away from the distractions of detail, LISP
stands out as the first language to pay serious attention to
the following issues:
• Mobility of data.
• Modularity of function.
• Declarative programming.
• Metalinguistics (the ability of a language to talk
about language).
Since the development of LISP, two other languages (APL and, to a lesser extent, SNOBOL) have joined LISP in dealing with at least some of these issues. As such, one would assume that they would have improved on LISP. I believe that LISP outclasses these languages despite its having been developed earlier. Other languages, such as FORTRAN, BASIC, ALGOL, PL/I, and Pascal (or FBAPP as Professor Alan Perlis of Yale University refers to them collectively) are, in Perlis' opinion and mine, not in the same class as LISP and APL with respect to the issues discussed here. (I do not know Professor Perlis' opinion of SNOBOL.) [...] »
A look at another 16-bit processor
[author : A I Halsema] #Microprocessor #Book
Extract : « It is difficult to classify the new Motorola 68000 processor. It seems incongruous to call a machine with 32 bit wide data paths a microcomputer. The 68000 should be available in late 1979. As this is being written, the architecture of the machine has been frozen, and the microcode is nearing completion. A user programmable, on chip, control memory for dynamically changing the machine's instruction set is not planned, but you may be able to specify your own microcode, which is burned into an on chip read only control memory at the factory. [...] »
The computer as an algebraic manipulator
[author : David R Stoutemyer] #Book
Extract : « On an interactive terminal, a user begins by typing the assignment:
Q ← 6*X↑3/(9*X)
where ← denotes assignment, * denotes multiplication, and ↑ denotes raising to a power. Such a command would be erroneous in most languages because the variable X has not previously received a value. However, symbolic math systems accept and even simplify expressions containing such unbound variables. Thus, the response of such a system to the above command is the automatic output:
2*X↑2/3
which is also saved as the value of Q. Some of the systems have more elaborate output routines which would display the above output in a two-dimensional format such as the following [...] »
#Association
#Book
Extract : « Practical Microcomputer Programming: The Z-80 by W J Weller Northern Technology Books Evanston IL 481 pages $29.95 [...] »