From: Jim A. <ja...@us...> - 2001-10-12 12:46:08
|
Update of /cvsroot/thinlisp/thinlisp-1.0/src/docs In directory usw-pr-cvs1:/tmp/cvs-serv18931 Modified Files: tl-manual.texinfo Log Message: Changed ISO Common Lisp to ANSI Common Lisp. While rumors in the X3J13 committee existing at one point that ISO would adopt Common Lisp as a standard, it would appear that this didn't occur and a sharp eyed reader pointed this out to me. While I was here, I did some word smithing. Index: tl-manual.texinfo =================================================================== RCS file: /cvsroot/thinlisp/thinlisp-1.0/src/docs/tl-manual.texinfo,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** tl-manual.texinfo 2001/05/09 06:49:37 1.13 --- tl-manual.texinfo 2001/10/12 12:46:03 1.14 *************** *** 183,187 **** came the excellent books @cite{Common Lisp, The Language} by Guy Steele and it's second edition, which incorporated many of the changes that would eventually be ! codified into ISO Common Lisp. This is the dialect that dominates Lisp work today, at least in the U.S. --- 183,187 ---- came the excellent books @cite{Common Lisp, The Language} by Guy Steele and it's second edition, which incorporated many of the changes that would eventually be ! codified into ANSI Common Lisp. This is the dialect that dominates Lisp work today, at least in the U.S. *************** *** 199,203 **** However, when it came to deploying these systems, things didn't turn out so smoothly. Most software products of that era were coded in languages such as ! Fortran, Cobol, Pascal, C, and a assembly language. It turned out that Software developers who could breathe fire in Lisp were clumsy, inefficient, or flatly unwilling to port their systems to these traditional languages. --- 199,203 ---- However, when it came to deploying these systems, things didn't turn out so smoothly. Most software products of that era were coded in languages such as ! Fortran, Cobol, Pascal, C, and assembly language. It turned out that Software developers who could breathe fire in Lisp were clumsy, inefficient, or flatly unwilling to port their systems to these traditional languages. *************** *** 205,212 **** Customers were loathe to buy expensive, special purpose hardware for these applications while cheap, ever more powerful PC computers were rolling out. ! Stories of this sort are rife throughout the industry, but I'll speak to just ! the cases I personally was involved in. While the presence of Lisp as the basis ! of these software systems cannot be fully blamed for their success or failure, ! in all cases it was a controversial and high-visibility part of the system. The Mentor system for preventative maintenance was a success story. A group at --- 205,215 ---- Customers were loathe to buy expensive, special purpose hardware for these applications while cheap, ever more powerful PC computers were rolling out. ! During this period the workstation class computer was also coming on, with ! initial excellent products coming from from Sun and Apollo. Stories about the ! difficulties in rolling out applications are rife throughout the industry, but ! I'll speak to just the cases I personally was involved in. While the presence ! of Lisp as the basis of these software systems cannot be fully blamed for their ! success or failure, in all cases it was a controversial and high-visibility part ! of the system. The Mentor system for preventative maintenance was a success story. A group at *************** *** 246,250 **** In this case, the system was gaining acceptance by the pilot users, but as a direct consequence of the performance problems caused by garbage collection this ! pilot project was closed out, and this particular approach was dropped. The G2 system is a real-time supervisory level control system built by Gensym --- 249,254 ---- In this case, the system was gaining acceptance by the pilot users, but as a direct consequence of the performance problems caused by garbage collection this ! pilot project was closed out, and this particular deployment approach was ! dropped. A different The G2 system is a real-time supervisory level control system built by Gensym *************** *** 315,319 **** The goal of scientists is to learn truths about the world around them, using observation, analysis, hypothesis, and experimentation to advance and buttress ! their claims of discovery. Pure science aspires to being unconcerned with the utility or applicability of the information they seek. The ultimate goal is to discover and understand what @emph{is}. --- 319,323 ---- The goal of scientists is to learn truths about the world around them, using observation, analysis, hypothesis, and experimentation to advance and buttress ! their claims of discovery. Pure science aspires to be unconcerned with the utility or applicability of the information they seek. The ultimate goal is to discover and understand what @emph{is}. *************** *** 322,326 **** are or that there might be, regardless of or even entirely divorced from the limits of the physical world. The studies of mathematicians are the stuff of ! pure thought and imagination, yet bound by the strictest of rules of proof. To build robust castles in the air based on proofs combining into a single monolithic whole requires that all pieces must act perfectly in concert. --- 326,330 ---- are or that there might be, regardless of or even entirely divorced from the limits of the physical world. The studies of mathematicians are the stuff of ! pure thought and imagination, yet bound by the strictest rules of proof. To build robust castles in the air based on proofs combining into a single monolithic whole requires that all pieces must act perfectly in concert. *************** *** 352,364 **** The mathematician espouses @emph{denotational semantics}, where the behavior of an operation is determined by what the operation @emph{means}. In this style, ! the goal is to make a complete, and unified system where each element of the ! language must be intricately coordinated with each other part, so that each ! element can retain its meaning when used in conjunction with any other part. ! The semantics of each operation are primary, and the consequences of the ! definition of one operation can strongly affect the implementation of many other ! operations. While the behaviors required of any individual operation may become ! complicated, the programmer using such a language can work confident that his ! code may be intermingled in complex ways with other's code without fear of each ! violating the other's assumptions about eventual program behavior. When finished, systems defined along these lines make powerful and elegant environments. --- 356,368 ---- The mathematician espouses @emph{denotational semantics}, where the behavior of an operation is determined by what the operation @emph{means}. In this style, ! the goal is to make a complete unified system where each element of the language ! must be intricately coordinated with each other part, so that each element can ! retain its meaning when used in conjunction with any other part. The semantics ! of each operation are primary, and the consequences of the definition of one ! operation can strongly affect the implementation of many other operations. ! While the behaviors required of any individual operation may become complicated, ! the programmer using such a language can work confident in the knowledge that ! his code may be intermingled in complex ways with other's code without fear of ! each violating the other's assumptions about eventual program behavior. When finished, systems defined along these lines make powerful and elegant environments. *************** *** 418,422 **** machine. One sees too much exposed, and the other sees too much being hidden. ! @section Just GOTO, or GOTO When You're Ready An example of how this difference in design perspective plays out can be found --- 422,426 ---- machine. One sees too much exposed, and the other sees too much being hidden. ! @section GOTO Right Now, or GOTO When You're Ready An example of how this difference in design perspective plays out can be found *************** *** 539,545 **** @code{consing-area} can either be @code{permanent} or @code{temporary}. @footnote{For consing operations that can be called from either context, you can ! declare a consing area of @code{either}, but that is fairly rare.} A ! @code{permanent} area means consing proceeds as normal, with all create objects ! having dynamic extent. However, whenever consing happens within a @code{temporary} scope, then the object's lifetime only has dynamic scope back to the exit point of the @code{temporary} @code{consing-area}. The --- 543,549 ---- @code{consing-area} can either be @code{permanent} or @code{temporary}. @footnote{For consing operations that can be called from either context, you can ! declare a consing area of @code{either}, but in practice that is fairly rare.} ! A @code{permanent} area means consing proceeds as normal, with all created ! objects having dynamic extent. However, whenever consing happens within a @code{temporary} scope, then the object's lifetime only has dynamic scope back to the exit point of the @code{temporary} @code{consing-area}. The *************** *** 560,573 **** Lastly, ThinLisp can issue compile-time warnings about non-local exits. The @code{unwind-protect} form can guarantee that clean-up code is executed on exit ! from a scope, but it is a very expensive operation. There are some macro forms ! where is it acceptible if an error exits a scope without a clean-up, but a normal execution of the body form should not leave the scope with a ! @code{return-from} form. ThinLisp provides a @code{require-local-exit} ! declaration that will cause compile time warnings if a scope is left ! prematurely. The other kind of non-local exit that ThinLisp prevents is ! @code{goto} or @code{return-from} forms that exit a lexical closure and re-enter ! a surrounding function. These patterns of code are tantamount to @code{catch} ! and @code{throw} forms, which are very expensive. By declining to implement ! this form of non-local exit, we can prevent this kind of performance pratfall. --- 564,581 ---- Lastly, ThinLisp can issue compile-time warnings about non-local exits. The @code{unwind-protect} form can guarantee that clean-up code is executed on exit ! from a scope, but it is a very expensive operation do to @code{setjmp} calls ! establish a reentry point into the function, and the need to declare variables ! @code{volitile} if they are modified within that scope. There are some macro ! forms where is it acceptible if an error exits a scope without a clean-up, but a normal execution of the body form should not leave the scope with a ! @code{return-from} form. In order to allow programmers to write macros that ! have clean-up code without resorting to an @code{unwind-protect} form, ThinLisp ! provides a @code{require-local-exit} declaration that will cause compile time ! warnings if a scope is left prematurely. The other kind of non-local exit that ! ThinLisp prevents is @code{goto} or @code{return-from} forms that exit a lexical ! closure and re-enter a surrounding function. These patterns of code are ! tantamount to @code{catch} and @code{throw} forms, which are very expensive. By ! declining to implement this form of non-local exit, we can prevent this kind of ! performance pratfall. |