Anyone,
I'm currently doing some basic research on the LISP language along with
some programming with XLISP. One part of my LAB assignment is a fairly
easy question, but I'm looking for 2 or more good responses for both...
"What are some strong and weak points about LISP?"
Please send any comments direct to me at ··········@compuserve.com
In advance, I greatly appreciate and thank you for your time and response
to me in this request.
HAVE A GREAT DAY!!
Bill Blickensderfer (Alexandria, VA)
From: Scott Musman
Subject: Re: [help] Senior College Lab-Strong/Weak Points of LISP
Date:
Message-ID: <4881ce$2pc@reuters2.mitre.org>
<··········@compuserve.com> wrote:
>
>Anyone,
>
>I'm currently doing some basic research on the LISP language along with
>some programming with XLISP. One part of my LAB assignment is a fairly
>easy question, but I'm looking for 2 or more good responses for both...
>"What are some strong and weak points about LISP?"
>
>Please send any comments direct to me at ··········@compuserve.com
>
>In advance, I greatly appreciate and thank you for your time and response
>to me in this request.
>
>HAVE A GREAT DAY!!
>
>Bill Blickensderfer (Alexandria, VA)
My memories of XLISP are not good ones. If you want to try programming in
lisp, try CLISP instead. It's alot better. If you have acess to a unix
environment (for example Linux on a PC) then get hold of the ILISP package to
allow you to program and interact with LISP via the emacs editor. It's the only
way to go.. You'll get incremental compilation (e.g. being able to compile one
function at a time), source code finding routines and arglist information. Look
in the Lisp FAQ at:
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/lisp/0.htm
One of the strong points of lisp is that it is a dynamically typed language
that is was originally based around the use of lists as a primary datastructure
(e.g. even lisp code is lists). Lisp is still one of the most powerful
languages out there right now, and given the large number of built-in language
capabilities (such as sort, assoc, sequences, etc) you normally don't have to
work as hard to get a concept into code as you would in other languages.
Because of the size of the lisp language LISP, there are usually several ways
to accomplish any specific task (unfortunately this can also be seen as a
weakness, when programming large jobs that involve multiple programmers). ANSI
lisp with CLOS (CLOS is available in CLISP) is also the first object oriented
ANSI standard language. CLOS has a variety of features and capabilities that
will surely be picked up eventually by other object oriented languages (such as
multi-methods). Lisp was one of the first langauages to exist, where memory
management facilities were provided by the language environment. Thus you don't
need to worry about malloc/free for making large data structures as lisp takes
care of it for you and frees up the memory when you don't need it anymore.
Despite alot of folklore, modern lisp memory management techniques (normally
called garbage collection) are very unobtrusive and can have minimal impact on
the performance of running programs.
Despite the fact that lisp was originally based around lists as a primary
datastructure, very little modern lisp programming uses them as such anymore.
Stuctures, arrays and object classes are the norm in modern Lisp. Lisp is
notorious for being big and slow.. Many people still think of lisp as being an
interpreted language. Well.. it can be, but it is normally compiled these days.
Also, although most people don't use the facilities, Lisp has all the compiler
directives needed to allow a lisp compiler to produce optimized machine code
that is comperable to the best C compilers. Lisp is also notoriuosly BIG. This
point is true, but then again so are programs like Microsoft WORD, emacs, or
Netscape. Given modern machines with more than 16Meg of RAM being very normal
on a PC and 850Mb to 1Gig disks being normal, the size of LISP is not much of a
problem these days.
Probably the biggest real problem for Lisp in modern programming practice, is
it's interoperability with other languages and its use for code delivery.
Although most commercial (and several freeware) lisps have very powerful and
complete foreign function interfaces there are still problems. Unfortunately
the FFI's usually insist that Lisp has control of program flow, and always
require a fully functional lisp run-time environment to be running. This is
unfortunately where current marketing charactersitics of the Lisp vendors tend
to mess you up, as almost all Lisp vendors charge money to allow you to have a
run-time environment just so you can run an application that someone else
developed. The other major problem with foreign function interfaces, is that
there is no LISP language standard for them, so each implementation of LISP has
it's own set of constructs and syntax. Along a similar tack, because Lisp is
such a large complex language, it can be very difficult to learn. The common
lisp language specification is very large, and I doubt that there are alot of
programmers who can remember all of the obscure (though sometimes usefull)
constructs available. Another problem with Lisp is that the language
specification often allows multiple ways to implement various language
features. As such, in order to obtain good performance out of your code, you
can often end up using tricks that are specific to one particular lisp
implementation. Writing truely portable Common Lisp code is a often real pain
in the ···@@*#.
Getting back to the size issue. You are seriously confused if you try and use
Lisp to deliver applications such as "Hello World" or other little demo
programs as a product. Lisp doesn't come into it's own till you are writing a
fairly large application. This said, most lisp vendors provide lisp delivery
tools which allow you to STRIP out the unused portions of LISP once you are
done with your programming. These tools can work very well. In the past I took
a lisp application that was some 18meg in the original development image, and
stripped it down to less than 4meg for a standalone executable that did ONLY
what I needed it to do. Unfortunately, once again, each lisp vendor provides a
vendor specific approach to stripping lisp images, and to date, all of the
tools they provide are still a little clumsy to use.
I hope this helps..
-- Scott
--
Scott Musman
_______________________ AI Technologies Center
| o | The MITRE Corp.
| \o| | 7525 Colshire Drv.
| \_ | McLean, Va. 22102
| \ \ | 703-883-1229
······@azrael.mitre.org
http://airborne.nrl.navy.mil/~musman/