JeffShrager%CMU-CS-A@sri-unix.UUCP (08/02/83)
A review of IQLisp (by Integral Quality, 1983). Compiled by Jeff Shrager CMU Psychology 7/27/83 The following comments refer to IQLisp running on an IBM-PC XT/256K (you tell IQLisp the host machine's memory size at startup). I spent two two-hour (approximately) sessions with IQLisp just going through the manual and hacking various features. Then I tried to implement a small production system interpreter (which took another three hours). I. Things that make IQLisp more attractive than other micro Lisp systems that I have seen. A. The general workspace size is much larger than most due to the IBM-PC XT's expanded capacity. IQLisp can take advantage of the increased space and the manual explains in detail how memory can be rearranged to take advantage of different programming requirements. (But, see II.G.) (See also, summary.) B. The Manual is complete and locally legible. (But see II.D.) The internal specifications manual is surprisingly clear and complete. C. There is a window package. (But the windows aren't implemented to scroll under one another so the feature is more-or-less useless.) D. There is a macro facility. This feature is important to both speed and eventual implementation of a compiler. (But see II.B.) Note that the manual teaches the "correct" way to write fexprs -- i.e., with macros. E. It uses the 8087 FP coprocessor if one exists. (But see II.A.) F. Integer bignums are supported. G. Arrays are supported for various data types. H. It has good "simple" I/O facilities. 1. Function key support. 2. Single keystroke input. 3. Read macros. (No print macros?) 4. A (marginal) window facility. 5. Multiple streams. I. The development package is a useful programming tool. 1. Error recovery tools are well designed. 2. A complete structure editor is provided. (But, see II.I.) 3. Many useful macros are included (e.g, backquote). J. It seems to be reasonably fast. (See summary.) K. Stack frame hacking functions are provided which permit error control and evaluations in different contexts. (But, see II.H.) L. There is a clean interface to DOS. (The "DIR" function is especially useful and cleverly implemented.) II. Negative aspects of IQLisp. (* Things marked with a "*" indicate important deficiencies.) **A. There is no compiler! *B. Floating point is not supported without the 8087. One would think that some sort of even very slow FP would be provided. *C. Casing is completely backwards. Uppercase is demanded by IQLisp which forces one to put on shift lock (in a bad place on the IBM PC). If any case dependency is implemented it should be the opposite (i.e., demand lower case) but case sensitivity should be switch controllable -- and default OFF! *D. The manual is poorly organized. It is very difficult to find a particular topic since there are no complete indexes and the topics are split over several different sections. E. Error recovery is sometimes poor. I have had three or four occasions to reboot the PC because IQLisp had gone to lunch. Once this was because the 8087 was not present and I had told the system that it was. I don't know what caused the other problems. F. The file system supports only sequential files. G. The stack is fixed at 64K maximum which isn't very much and permits only about 700 levels of binding-free recursion. H. No new features of larger Lisp systems are provided. For example: closures, flavors, etc. This is really not a reasonable complaint since we're talking 256K here. I. There is no screen editor for functions. III. Summary. I was disappointed by IQLisp but perhaps this is because I am still dreaming of having a Lisp machine for under $5,000. IQ has obviously put a very large amount of effort into the system and its documentation (the latter being at least as important as the former). Although one does not have all the functionality of a Lisp machine in IQLisp (or even nearly so) I think that they have done an admirable job within the constraints of the IBM-PC. Some of the features are overkill (e.g, the window system which is pretty worthless in the way provided and in a non-graphics environment.) My production system was not the model of efficient PS hacking. It was not meant to be. I wanted to see how IQLisp compared with our Vax VMS Franz system. I didn't use a RETE net or efficient memory organization. IQ didn't do very well against even a heavily loaded Vax (also interpreted lisp code). The main problem was space, not speed. This is to be expected on a machine without virtual memory. Since there are no indexed file capabilities in IQLisp, the user is strictly limited by the available core memory. I think that it's going to be some time before we can do interesting AI with a micro. However, (1) I think that I could have rewritten my production system to be much more efficient in both space and time. It may have run acceptably with some careful tuning (what do you want for three hours!?). And (2) we are going to try to use the system in the near future for some human-computer interaction experiments -- as a single-subject workstation for learning Lisp. I see no reason that it should not perform acceptably in domains which are less information intensive than AI. The starred (*) items in section II above are major stumbling blocks to using IQLisp in general. Of these, it is the lack of a Lisp compiler which stops me from recommending it to everyone. I expect that this will be corrected in the near future because they have all the required underpinnings (macros, assembly interface, etc). Why don't people just write a simple little lisp system and a whizzy compiler?