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: Erik Naggum
Subject: Re: Question about software "development"
Date:
Message-ID: <3204624007044946@naggum.net>
* Henk Zwaenepoel <·········@pandora.be>
> I'm a C programmer who has taken an interest in Lisp.
Welcome!
> Lisp users and enthusiasts praise the ease of writing prototypes in lisp,
> but: how do you start?
With the most obvious part of the problem that needs to be solved before
you can get any further. The point of this part of the problem-solving
is _get_ further, _not_ to solve the big problem. This does not have to
mean bottom-up, but that is frequently the most productive way to start.
More often than not, you build the language up with a substrate of both
functions, types, and macros to make writing the application more
natural, and then it becomes possible to build stuff from the top down.
> 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?)
C as a development environment has a number of serious problems. One of
them is the lack of any working ability to build a "development system"
of your own. In Common Lisp, you define and load things into your Lisp
image and interact with it from the editor (which may be integrated into
the Lisp image), and it is not infrequent for people to build and dump
their own Lisp images within which to do most of their work. The C
compiler is the same in every invocation, and you need to include a
tremendous amount of header files after a while if you do any "changes"
to the language, thus discouraging any development in the language.
> Do you create an executable file in your project, or do you always run it
> in a special environment (interpreter).
What is an executable? Is not the operating system a special environment
and the shell an interpreter? There is absolutely _no_ difference from
this mode of operation to Common Lisp, you just move into the Lisp world.
> Or maybe you have something like a "Visual C" environment that
> automatically creates a framework, where you only need to add extra
> functions.
Nothing stops anyone from building such things in Common Lisp, and some
have done so, but you need to understand that this can be added to a Lisp
system without turning your development system into a new "application".
> 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.
This clearly depends on the application you are writing. I fail to see
how this is relevant to learning the language or how to use it. Are you
implying that you only want to do things that others are doing in the
same way they are doing it? If so, what's the point? Unlike the sorry
impression you may get from other languages or even operating systems
that are "married" to their user interfaces, there is such a thing as a
general-purpose programming language. Lisp has been used to build some
of the most advanced user interfaces around, from scratch, including the
fine designs on which the Microsoft Windows cruft has been tacked. With
the advent of less welcoming graphical systems, such as X and Windows,
building GUI-based applications has become _much_ harder (and much more
boring) than it used to be, and Lisp programmers have turned "inward" to
build serious application frameworks that some drone interfaces to from
the favorite GUI language via protocols or remote procedure calls or
foreign function interfaces within the Lisp image. The key here is to
make things work together. There is a lot of cheap labor out there that
is actually willing to work with C++ and make Windows-based GUIs, and it
would be a shame to use Lisp labor on such things. Some environments are
so visual that you cannot get any serious work done at all, and in those,
it makes sense to use the "native" language for the GUI cruft and a real
language for the real work. But, hey, I love an intelligent GUI, too,
but it is just so mindlessly boring work to build it, not to mention that
most of the GUI tools you find are incredibly stupid and less efficient
than a command-line interface would have been, or at least if you sent
your employees on a touch-typing course like they required for the
previous generation of keyboard users: typewriter secretaries.
> 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?
I think any answer to this question will be even more limiting than your
previous question.
> Sorry for the length, but I'm trying to get into the Lisp-spirit
Then you should investigate other angles, too.
#:Erik
--
Travel is a meat thing.