[comp.lang.icon] Code Dichotomy

TENAGLIA@mis.mcw.edu (Chris Tenaglia - 257-8765) (12/20/90)

Why is it, The prettier (and more consistent) the user interface, The
uglier the code? Or maybe this is the mark of true software craftsman,
to couple elegant looking (and readible) code with elegant looking and
consistent functionality. Any comments?

Chris Tenaglia (System Manager) | Medical College of Wisconsin
8701 W. Watertown Plank Rd.     | Milwaukee, WI 53226
(414)257-8765                   | tenaglia@mis.mcw.edu, mcwmis!tenaglia

djbailey@SKYLER.MAVD.HONEYWELL.COM ("BAILEY, DON") (12/21/90)

>Why is it, The prettier (and more consistent) the user interface, The
>uglier the code? Or maybe this is the mark of true software craftsman,
>to couple elegant looking (and readible) code with elegant looking and
>consistent functionality. Any comments?


I have a theory that there is a specific amount of mental effort
associated with solving a problem.  You can move the effort 
around but you can't get rid of it.  Computer programs that are driven
by the real world always seem to have some "naughty bits" that just
aren't very nice.  If you do solve a real world problem without any
"naughty bits" you have done well.  (Of course, your solution is 
resting on someone else's naughty bits in the language processor
or operating system.)

cjeffery@CS.ARIZONA.EDU ("Clinton Jeffery") (12/22/90)

> Of course, the limits of how well a basically one-dimensional technology 
> (traditional text languages) can describe two and three dimensional
> problem domains is another question.

Text languages are only one dimensional when you lay them out "flat" in
source files.  When they execute, they are something else; recursion
(for example) just doesn't seem one-dimensional to me.

Outside the realm of graphics and visualization modern text languages are
routinely used to solve multidimensional problems.  A language's support
for multidimensional problem domains might be limited by its control and
data structures, but I think the bigger problem for graphics applications
(as well as natural language processing) is the "semantic gap" between the
source language and the problem domain.  Semantic gap can, I think, be
addressed linguistically once it is understood.