history-of-psl.mss 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. @section[A Brief History of @PSL]
  2. @begin[Comment]
  3. This section NEEDS MORE WORK!! (WFG)
  4. Major ideas I think we should cover are:
  5. -Influence of REDUCE on the system (e.g. Rlisp syntax).
  6. -Work on "Standard Lisp".
  7. -Work on portable compiler.
  8. The major focus of this chapter should be clarifying why PSL is what it
  9. is, and explaining other alternatives that were explored. [But BRIEFLY!]
  10. e.g.
  11. - Why Rlisp syntax (an outgrowth of REDUCE)
  12. - Why syslisp instead of (e.g.) C, (or BIL, or whatever).
  13. - Why "DE" instead of "Defun" (perhaps this is getting into too much
  14. detail).
  15. (Also, perhaps, give more credit to various folks?)
  16. @end[Comment]
  17. @topic[History of PSL]
  18. @Comment{TALK a bit more about REDUCE and Rlisp, mention some of the
  19. systems they ran on (e.g. Lisp 1.6 (or 1.5?), IBM dialect (namely?), ...}
  20. @Comment{Is my impression correct that REDUCE was once written in LISP
  21. syntax, later converted to Rlisp?}
  22. @Comment{Then go into this paragraph, but don't need to explain what REDUCE is.}
  23. In 1966, a model for a standard @Lisp subset was proposed@cite(Hearn66) as
  24. part of a general effort to make @Reduce@cite(Hearn73), a large
  25. @Lisp-based algebraic manipulation system, as portable as possible.
  26. The goal of this proposal was to define a uniform subset of @lng[Lisp 1.5]
  27. and its variants so that programs written in this subset could run on any
  28. of those @Lisp systems.
  29. @Comment{"intervening"? Between what and what?}
  30. In the intervening years, two deficiencies in the original proposal
  31. emerged. First, in order to be as general as possible, the specific
  32. semantics of several key functions were left undefined. Consequently,
  33. programs built on this subset could not be written with any assumptions
  34. made about the form of the values of such functions. The second deficiency
  35. was in the proposed method of implementation of @lng[Standard Lisp]. The
  36. model considered two versions of @Lisp on any given machine, namely
  37. @lng[Standard Lisp] and the @Lisp of the host machine, which we shall refer to
  38. as @lng[Target Lisp].
  39. @Comment{I CAN'T MAKE SENSE OF THE FOLLOWING (WFG).}
  40. This meant that if any definition were stored as
  41. interpretive Target @Lisp, it would vary from implementation to
  42. implementation; consequently, one could not write programs in Standard
  43. @LISP which needed to assume any knowledge about the structure of such
  44. forms. This deficiency became apparent during recent work on the
  45. development of a portable compiler for
  46. @Lisp@cite[Griss81b]. It is clearly easier to write a compiler if we
  47. deal with a single dialect (Standard @Lisp) than if we must
  48. change it to conform with the various Target @Lisp@xs.
  49. As a result of this study, we produced a more aggressive definition of
  50. Standard @LISP in the Standard @LISP Report@cite(Marti79).
  51. That paper can serve as a standard for a reasonably large subset of
  52. @Lisp with as precise as possible a statement about the semantics
  53. of each function.
  54. Recent work has concentrated on producing a @i(complete) specification and
  55. portable implementation of a @lisp based on @lng[Standard LISP].
  56. Experience with a Portable @Lisp Compiler@cite(Griss81b) and with an
  57. earlier experimental portable @Lisp implementation@cite(Griss79)) has led
  58. to the current @PSL implementation strategy: write most of the system in
  59. @Lisp, compiled with the portable compiler. A small non-@Lisp kernel is
  60. written in a portable,
  61. @Lisp-like systems language, @Syslisp.
  62. The previous systems had the problem that the special implementation
  63. language (called @lng<BIL>), although oriented to @Lisp implementations,
  64. was a distinct language from @Lisp, so that communication between "system"
  65. code and "@Lisp" code was difficult. The pattern-driven @lng(BIL) compiler
  66. was not very efficient. Consequently, the @lng(BIL) work resulted in a
  67. number of experimental @Lisp@xs on a number of machines. These
  68. implementations were quite flexible, portable, and useful for @Lisp and
  69. @Reduce on machines that did not already have any @Lisp, but somewhat
  70. inefficient. We therefore developed the much more powerful, @Lisp-like
  71. systems language, @SYSLisp, in which to recode all useful modules. @SYSLisp
  72. has been targeted to high-level languages (such as @Fortran, @Pascal,
  73. @lng(C) or @Ada), and also to assembly code. We believe this approach will
  74. advance our goal of producing a portability strategy which could lead to a
  75. system efficient enough for realistic experiments with computer algebra and
  76. ultimately to portable, production quality systems.