From: Henk Zwaenepoel
Subject: Question about developing software in Lisp
Date: 
Message-ID: <3B560225.AF3DE4EF@pandora.be>
Hello group,

I'm a C programmer who has taken an interest in
Lisp ; I bought some of the most praised 
books ( Common Lisp, Common LispCraft, Paradigms of
artificial intelligence ) and I'm currently browsing 
information sources. I have only just started
reading "Common Lispcraft", and I have a 
couple of questions. ( I don't know if I am asking
for things now that will turn up in 1 of those books. )

Lisp users and enthusiasts praise the ease of 
writing prototypes in lisp, but : how do you start ?

Do you start by creating a couple of simple functions or 
macros ( bottom up ) that -after testing - you link together
in 1 file ( or several files ; something like C with definitions 
and libraries ? ) Do you create an executable file in your 
project, or do you always run it in a special environment 
( interpreter ). Or maybe you have something like a "Visual C" 
environment that automatically creates a framework, where 
you only need to add extra functions.

What implementation of Lisp do you programmers use for your 
work ( or at home ) Lispworks ? Cmucl, Cl, Corman Lisp, Franz Lisp ? 
Do you work in a Unix- or Win32 like environment ? Do you 
use GUIs in your projects, or only if it is really 
necessary ( I mean real graphical GUIs, no TVISION ASCII 
windows ) It doesn't seem to get discussed often in this newsgroup.

Can you describe some of the projects that 
you are currently working on and for which you find or have found
Lisp to be the most productive tool ?

Sorry for the length, but I'm trying to 
get into the Lisp-spirit

Henk Zwaenepoel
hzw21(at)hotmail.com

From: Kent M Pitman
Subject: Re: Question about developing software in Lisp
Date: 
Message-ID: <sfw8zhl9924.fsf@world.std.com>
Henk Zwaenepoel <·········@pandora.be> writes:

> Lisp users and enthusiasts praise the ease of 
> writing prototypes in lisp, but : how do you start ?

You work interactively, writing parts of programs and testing them as
you go.  You can also write stub functions to start and replace them
with better ones as you get more time.

> Do you start by creating a couple of simple functions or 
> macros ( bottom up ) that -after testing - you link together
> in 1 file ( or several files ;

Whether they're in one or several files is not relevant.

You can work either top-down or bottom-up.

> something like C with definitions 
> and libraries ? )

No, not like that.  For example, there is no separation of anything like
.h files in lisp.

> Do you create an executable file in your 
> project,

There are more sophisticated ways, but the simplest way is just to put 
definitions in a file called my-project.lisp and then do 
(load "my-project.lisp") when in Lisp.  You don't need an executable.
They will be immediately available to you interactively.  LOAD is sort
of like a linker, but works at a per-function, not per-executable level.

Commercial lisp environments tend to allow you to execute the definition
straight from an editor buffer. (If you know Emacs it usually helps.)

e.g., if you get Xanalys LispWorks Personal (it's free from www.xanalys.com
web site), and you start it up, you can do 
 CONTROL-x CONTROL-f my-project.lisp RETURN
and you'll be in the file my-project.lisp
You can then type definitions, each of which can be evaluated with
 CONTROL-SHIFT-c
and will be immediately made available to the environemnt. Or there's
a command in the Buffers menu for Compile Buffer, for example.

You still should save the file using CONTROL-x CONTROL-s but whether
you save it or not, you're already working in an environment where the
definition is active.

> or do you always run it in a special environment 
> ( interpreter ).

Don't think of it as an interpreter.  Lisp has an interactive compiler, too.

> Or maybe you have something like a "Visual C" 
> environment that automatically creates a framework, where 
> you only need to add extra functions.

Franz Allegro has a feature sort of like this.  A gui-builder.  I
think they have a free or trial personal edition, too--I don't know
the details these days since they recently changed it.
www.franz.com

> What implementation of Lisp do you programmers use for your 
> work ( or at home ) Lispworks ? Cmucl, Cl, Corman Lisp, Franz Lisp ? 

The Lisp from Franz is called Allegro. (There is an old dialect of Lisp
called Franz Lisp, which is not the one sold by Franz, so the name Franz
Lisp is a bad one to use.)

Which to use depends on your needs.  Platform. Price point.  Free software
vs commercial software. etc.

> Do you work in a Unix- or Win32 like environment ? 

Lisp doesn't take a position on this.  Depends on where you like to
develop.  Lisp ports pretty well so you could actually develop on one
and deploy on another if you make sure the tools you choose are available
on both.  e.g., the Xanalys gui is available compatibly under motif and 
windows.

> Do you 
> use GUIs in your projects, or only if it is really 
> necessary ( I mean real graphical GUIs, no TVISION ASCII 
> windows ) It doesn't seem to get discussed often in this newsgroup.

It's non-standard.  There are a variety of options, but we all use different
things so it's not as much of a commonality among us.

Also, many of us focus on "the meat of the computation" as the value added
that lisp provides and treat the gui as an optional extra. most people don't
pick lisp as the language of choice for gui-heavy / computation-light
operations, though there are probably exceptions (especialy if you have
to reconfigure the gui dynamically a lot, where lisp might help quite a bit)

> Can you describe some of the projects that 
> you are currently working on and for which you find or have found
> Lisp to be the most productive tool ?

large systems 
ill-specified systems
systems that change a lot
systems with heterogeneous or faulty data
systems that require complex planning
systems that require lots of "representation"
systems that require learning
systems that require heuristic action
systems you have to roll out fast
 
> Sorry for the length, but I'm trying to 
> get into the Lisp-spirit

some good questions. not all of them have easy answers.
From: Kevin Rosenberg
Subject: Re: Question about developing software in Lisp
Date: 
Message-ID: <slrn9lc8hh.bn6.kevin@boa.b9.com>
On Wed, 18 Jul 2001 22:17:07 GMT, Kent M Pitman <······@world.std.com> wrote:
>Franz Allegro has a feature sort of like this.  A gui-builder.  I
>think they have a free or trial personal edition, too--I don't know
>the details these days since they recently changed it.
>www.franz.com
>
>> What implementation of Lisp do you programmers use for your 
>> work ( or at home ) Lispworks ? Cmucl, Cl, Corman Lisp, Franz Lisp ? 

I just started learning LISP as well.  I recently purchased Allegro CL
for Windows and Linux along with their object oriented database
allegrostore. I purchased this after evaluting CLISP, CMUCL, and
Lispworks.

Thus far I've been happy with Allegro . They do have an interactive
GUI builder, but only for Windows. I like this quite well. However, if
you want to develop a GUI that runs on platforms other than Windows,
you'll need to use CLIM that they sell as an add-on.  They have
versions of CLIM for Windows and UNIX/Linux. Unfortunately, they do
not have a WYSIWYG builder for CLIM.

--
Kevin Rosenberg, M.D.
·····@rosenberg.net
From: Christopher Stacy
Subject: Re: Question about developing software in Lisp
Date: 
Message-ID: <un1614aiy.fsf@spacy.Boston.MA.US>
Some additional information for Henk Zwaenepoel...

>>>>> On Wed, 18 Jul 2001 22:17:07 GMT, Kent M Pitman ("Kent") writes:
 Kent> It's non-standard.  There are a variety of options, 
 Kent> but we all use different things so it's not as much 
 Kent> of a commonality among us.

That situation is true when programming in other languages, too:
you program directly in the host operating system's SDK (eg. Win32/MFC,
or X Windows), or else you use your compiler vendor's higher-level 
interface libraries, or Tkl or something.

In Lisp, you can also program your graphical interfaces by using those
same methods.  Most people prefer to use their Lisp vendor's higher
level interface (such as CAPI), since they come all set up for that.
At least libraries like CAPI are supported across operating systems!

There is also the Common Lisp Interface Manager (CLIM),
which is higher level than the other GUI libraries,
and which is portable across all the systems.
CLIM is also not a part of the standard, but it is available
from all three major vendors and works under Unix/Windows/Mac/Genera.
Some people like to use CLIM and some don't.

Java also has a portable GUI called Swing, and this has the advantage
that it is part of the language - you don't have to worry it being
available across platforms.  (There's no built-in communication
between Lisp and Java; that's not where I was leading with this.)

So in terms of GUI portability you're generally not any worse off 
in Lisp than in most languages, and you may be better off.