|
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.
|