problems/risks ...

William Thomas Wolfe, 2847 billwolf%hazel.cs.clemson.edu at hubcap.clemson.edu
Mon Mar 12 05:40:13 AEST 1990


>From article <14312 at cbnewsc.ATT.COM>, by lgm at cbnewsc.ATT.COM (lawrence.g.mayka):
>In article <6421 at eos.UUCP> woody at eos.UUCP (Wayne Wood) writes:
>>  i agree.  if we followed everyboy's advice on what was dangerous in a 
>>  programming language, we would all be programming in LISP.
> Well, I'm glad someone finally admitted it!  Let me know if you
> need a list of commercial Common Lisp implementations. :-)

   Here's a summary of the advantages and disadvantages of Lisp, from
   the article "The Automatic Translation of Lisp Applications into Ada",
   appearing in the Proceedings of the Eighth Annual National Conference
   on Ada Technology:

      ...because Lisp was developed for use within the research 
      community, its objectives were considerably different from
      those of a language such as Ada, which is tuned for applications
      deployment.  In particular, the original objectives of Lisp were:

         o ease of algorithm prototyping
         o concise programs (no declarations)
         o powerful data and control structures
         o very general constructs
         o rich programming environments
         o incremental development
         o fast compilation
         o ease of debugging

      ...Lisp has been utilized as a "rapid prototyping" environment
      for investigating the algorithms and user interfaces for many
      "expert systems" being developed... 

      ...While Lisp maximizes the productivity of the prototyping 
      phase of development, it trades off this productivity for 
      increases in cost, weight, and size, and decreases in speed,
      safety, and maintainability. 

      ...Lisp development software systems are not appropriate for
      deployment because:

         o they are too slow, especially on arithmetic
         o they require extremely large run-time systems
              -- 50 megabytes or more for Lisp Machines
         o they do not offer the sort of real-time response
              mechanisms required for embedded systems
         o they do not do global consistency checks on variable
              or function usage
         o they require a choice between "safety" and speed
         o they are not easily ported to a wide variety of
              instruction set architectures.

      ...At least one defense contractor has taken the idea of "Lisp
      as a specification language" to a certain conclusion, and produced
      a system called "InnovAda".  InnovAda is the direct interpretation
      of Zetalisp's Flavors object-oriented programming constructs as a
      specification language for Ada, except that the executable code
      within the bodies of the Flavor definitions must be valid Ada code
      instead of Lisp code.  This specification is then processed by the
      InnovAda translator to produce legal Ada source code by expanding
      the Flavor constructs.  (A system called "Classic Ada" has similarly
      grafted the object-oriented ideas of Smalltalk onto Ada.)  
 
      ...As a result of the decision by the Common Lisp committee 
      to delay action on a multiprocessing standard, Common Lisp 
      has not failed as a language for real-time control; it was 
      never considered for this task.  As a result, Lisp cannot 
      currently be viewed as an appropriate vehicle for expressing
      real-time constraints or concurrent control in an embedded system.

      ...Many existing Lisp systems attempt to provide both software
      development and applications delivery with the same software.
      Their "solution" to the problem of efficient code for application
      delivery is to perform debugging with the SAFETY parameter set to
      the highest level; when sufficient confidence has been reached with
      the program, more efficiency is gained (at the expense of safety) by
      setting SAFETY to the lowest level.  This method of achieving speed
      by increasing the risk of field failure is unacceptable for most
      applications.  While the benefits of additional speed are greatly
      appreciated by the customer for a while, the risk of sudden and
      catastrophic failure which can result from the elimination of the
      run-time checks is not worth the increased speed.  As expert systems
      find their way into embedded applications such as graceful nuclear
      power plant shutdown and a "pilot's associate", the lowering of 
      safety standards in the software is not to be tolerated.

      [Remainder of the paper discusses type inferencing during the
       automatic (but extremely slow) translation of Lisp code into Ada]


      Bill Wolfe, wtwolfe at hubcap.clemson.edu



More information about the Comp.lang.c mailing list