Subject: Re: troll's food (python vs lisp)
From: rpw3@rpw3.org (Rob Warnock)
Date: Sun, 19 Sep 2004 00:19:07 -0500
Newsgroups: comp.lang.lisp
Message-ID: <aKWdnS7vC7FWi9DcRVn-qA@speakeasy.net>
Peter Herth  <herth@netcologne.de> wrote:
+---------------
| Fred Gilham wrote:
| > It's a point of pride with me that Lisp can host its own damn GUIs.
| > None of this ``talk to something at the end of a socket that's man
| > enough to do the drawing for you'' crud for me.
| 
| It would be nice, if you could point out how this relates to Ltk. I agree
| with you, that those GUI kits, which need a server be started before the
| GUI program can be started are undesirable - I can only assume you mean 
| those with the socket reference. Ltk does not belong into this cathegory
| in my opinion for several reasons. First of all it doesnt use sockets, but
| that isn't the point. It is true that Ltk uses a pipe to talk to a separate
| Tk process...
+---------------

Uh... Under BSD Unix, pipes *are* sockets!! [Unnamed Unix-domain, but still.]

+---------------
| ...but that is totally invisible to the programmer as well as the
| user of the Ltk program.
+---------------

(*grumpf!*) It's certainly not "totally invisible" when the Ltk server
process crashes or hangs or fails to get killed when the Lisp process
exits, etc., etc. Don't get me wrong, the CMUCL "clm" Motif binding
works the same way, and has the same issues.

+---------------
| As is the network layer of X11 for every GUI program, being written
| in C or whatever else. 
+---------------

I suspect what Fred was trying to point out is that classic Lisp GUIs
[especially anything based on CLX] connect *directly* to the X11 server
(or whatever the system GUI is), *without* accessing any C-coded library
of widgets. Look at the code for CLX, and you'll see what he means.

+---------------
| But it should be invisible whether the communication runs over some
| layers like pipes...
+---------------

Well, except for little things like performance and reliability.

+---------------
| ...or whether the libs are linked to the lisp image itself.
+---------------

What Fred is talking about is writing the libs *in* Lisp itself, running
in the same process image as the application. [Again, see CLX and the
hordes of GUIs built on top of it.]

+---------------
| The latter is not used as much simply because there is no standard
| for FFI yet.
+---------------

Again, the point is that CLX [and GUIs based on it] uses no FFI at all
(except for the socket connection to X11, if that's what the system has).


-Rob

p.s. Don't get us wrong: LTk is neat, and offers a quick way to get
started.  But I also have several "production" tools that use CLX,
and once you've coded the basic CREATE-WINDOW/CREATE-GCONTEXT stuff
a couple of times, it's not too hard to do simple things in, either.
The real question will be to see how far intermediate-server-based
things like LtK (or CLM, for that matter) can grow before you need
to use some more complex widget infrastructure (nd whether that's
written directly in pure Lisp or with FFI bindings to C libraries).

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607