Subject: Re: Why Lisp is not popular. No GUI?
From: Erik Naggum <erik@naggum.no>
Date: 30 Nov 2002 21:04:59 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3247679099355548@naggum.no>

* Robert St. Amant
| For flexibility in programming, this is true, but it's important not to
| treat application-interface independence as the most important issue.
| When programmers think of the interface as separate from the application,
| what often happens is that they treat the interface as frosting on the
| cake, and user interaction suffers for it.

  I find this line of argument extremely puzzling.

| It's easy to say, "Once I've got the application working, with all the
| proper hooks in it, I can just add the interface and everything will work
| out fine."

  Perhaps you are unaware of how "the interface" can be expressed in a
  multitude of ways?

  A good programmer will naturally design the user interface as part of the
  application (how could it be otherwise?), but in such a way that it the
  communication between the application and the user interface is through a
  well-defined protocol instead of randomized event processing.

| In such cases, things usually turn out badly.

  I think you should reveal your inductive basis: What, precisely, have you
  observed that led you to this very strange conclusion?

| For interactive systems, figuring out where to separate interface
| functionality from application functionality can be very tricky.  It
| requires a lot of thinking about both sides to do it right.

  But it becomes a lot easier if you formulate the interface/interaction as
  a protocol.  Those who think in terms of the graphic interaction when
  they should have been thinking about the information flow tend to get
  /everything/ wrong.

| (For example, in my application program logic it might result in the
| cleanest design if I get values X, Y, and Z from the user in that order,
| but a strict ordering may not be ideal in the interface.  I should be
| careful not to allow unnecessary constraints to propagate from
| application to interface, unless I've checked out how it will affect
| things in the interface.)

  But this is so stunningly irrelevant!

| Of course, for good programmers who are aware of human- computer
| interaction issues, this is not a problem, but not everyone is a good
| programmer.

  I am puzzled as to what you think this discussion is about.

  A simple control question is perhaps in order: Do you think that it is
  impossible to find /any/ boundary between code that communicates with the
  user and code that communicates with other code?  Or, phrased differently,
  do you think it is impossible to find /any/ boundary between code whose
  main if not only function is to produce information for user consumption
  and code whose main if not only function is to produce values for other
  code?

-- 
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.