Subject: Re: Question about software "development" From: Erik Naggum <erik@naggum.net> Date: Fri, 20 Jul 2001 13:20:10 GMT Newsgroups: comp.lang.lisp Message-ID: <3204624007044946@naggum.net> * Henk Zwaenepoel <darkstart@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.