Subject: What should a GUI do; also , why case sensitive?
From: Richard Fateman
Date: Thu, 14 Oct 2004 10:23:40 -0700
I would like to say what GUI I prefer. This is not meant to be
a recipe for everyone. Clearly we have different users, ranging
from a casual one-time only user who wants only to do a
simple calculation, and should be led by the hand to
the simplest --no learning-- solution,
to a serious program developer or someone
who is intermixing calculation, programming, typesetting of a
paper, emailing, ... (myself).
What I have used with Maple, Mathematica, and Macsyma, when
I can, is an EMACS typewriter-like buffer, perhaps with simple
heuristic commands like go-back-to-previous command line.
The commands I am used to for EMACS work for the computer algebra
system, and I don't have to use a mouse for anything.
This means that selecting of subexpressions by pointing, or display or
interacting with a plot (e.g. to change point of view or zoom)
must be done in another way.
If I want to typeset, I get the result from macsyma (etc) as TeX.
I paste it appropriately in another emacs buffer that has a draft of
a paper in it, and I process that, usually via pdflatex, to make
a pdf which I view in a separate window. I do not expect the latex
produced by macsyma to be exactly right because of ordering of variable,
the lack of line breaking, etc. I find it necessary quite frequently
to edit the latex. The results from Mathematica are similar. They
rarely look just right. I have not tried Maple for this, and so
won't comment.
I understand that the emacs I use as well as alternative
implementations xemacs imacs, emaxima ?
would make it possible to do in-buffer typesetting and mouse selection.
I do not see, from the screen shots, that aribas offers anything
more.
Viewing result all typeset actually does not solve everything
because I ordinarily wish
to be able to edit the latex source, in case the results are not
quite pretty enough. That is why commercial CAS, even if they
do on-screen typesetting, also have TeX formatting commands.
This may not be for everyone, of course.
I mention MathML (and even OpenMath) not because I approve them or
generally want to use them. Quite the contrary. These are mostly painful
and unreadable. I mention them so that people will not re-invent them
in their enthusiasm for writing programs. They are, for the most part,
attempts to solve problems that were created by the prominence of
html, and by the lack of courage of their developers (or sometimes
their ignorance) to say that there is actually a better technical
solution for math encoding that has been available for a few decades.
[An alternate encoding of OpenMath or MathML as lisp is fairly obvious
and reduces the size of the clutter by 10X or more]
Communication between front-ends and back-ends using MathML may seem
like an obvious good idea, and makes nice demos, but is, for any
serious use, a REALLY BAD IDEA, unless you put all your important
communication in what amounts to a string inserted in a COMMENT field
in the MathML.
..................
As for the continuing discussion of case sensitivity: I would like
the maxima source to be in all lower case (except for quoted strings or
comments, perhaps). This seems to be happening. Great.
I would like Maxima to be case sensitive with all system functionality
in lower case. If someone wants to see or use Sin or SIN rather than sin,
then he or she can insert aliases. There appears to be only one possible
default, and I'd prefer mine.
Again, this is just a personal opinion, and I respect others holding
different opinions. There is a way of customizing Maxima at startup.
My view also happens to be the implementation
for "modern" common lisp from Franz Inc. (They also have an ANSI common
lisp
option, which is what is required for previous maxima source code. I
suspect
that the revised maxima source code would work in modern OR ansi CL.)
Most lisp
code I write is written using the "modern" convention because I do not like
to see lisp "SHOUTING" its results. I believe that most lisp code I
write would
run unchanged (except for SHOUTING) in ANSI CL. The mathematica parser
(MockMMA)
that I wrote, does not run unchanged in ANSI CL. It requires going
through the
code to change Sin to |Sin| (etc). This introduction-of-ugliness can be
automated.
RJF
Gottfried Helms wrote:
>Am 13.10.04 19:39 schrieb Richard Fateman:
>
>
>
>>Michael Reimpell wrote:
>>
>>
>>
>>
>>>I'm happy someone started a GUI project without relying on maximas latex
>>>representation. In fact, using the 1D-output seems to be the only reasonable
>>>way to implement copy and paste actions from parts of the output into a new
>>>input line.
>>>
>>>
>>>
>>I agree. There are at least these representations available:
>>1. the internal lisp version as a text string. e.g. ((MPLUS SIMP) $X
>>$Y) or as a data structure if you are still in lisp.
>>2. the formatted version, also in lisp, that changes stuff like
>>a*b^(-1) into a/b for pre-display consideration
>>3. the layout version (which does line breaking and knows how long names
>>are)
>>4. the text string as a command, e.g. X+Y;
>>5. the text string as a LaTex command.
>>
>>Mathematica, and the commercial Macsyma front end appear to use #4.
>>TexMacs appears to use #5.
>>I think that, suitably enhanced for a larger, variable-sized character
>>set, #3 is probably better, since
>>it has full access to all the information in the maxima system, instead
>>of just the stuff that
>>was programmed in python (or C++ or ....) in the front end.
>>
>>Of course this perspective is from the computer algebra system. If what
>>you are building
>>is primarily a GUI for (say) maxima, tex, matlab, GAP, web browsers,
>>search engines, ... etc
>>and maxima is just a specialized client for a small percentage of users,
>>then the GUI
>>arguably should be the boss. The usual downside of this is that some
>>things are either
>>impossible or very very hard to do. (The lisp code shows very
>>explicitly what expressions
>>are subexpressions of others. Do we really need to re-parse? )
>>
>>RJF
>>
>>
>
>Just a step back -
>
>i made an interface for ARIBASW.exe which simply provides a
>better input-scheme (long lines, multilines, common text-
>editable) which serves extremely well, without interpreting
>input or output specifically.
>It only overcomes the mixing of in/out and the need for
>excessive copy&paste.
>If I could find a way to connect to the maxima-input-procedure,
>this could easily be adapted to maxima, and I would give it
>just for free (it's windows and delphi 32bit, btw).
>
>A screenshot of the AribasGUI could be seen at
>
>http://www.uni-kassel.de/~helms/sw/aribashlp/aribashlp_bilder.htm
>
>where the relevant thing is the "dialog"-rtf-component, which
>serves as an inplace-editing-able editor.
>The output is not accessed, but this could possibly adapted as well.
>
>Whether or not someone is interested on this thing, I would
>really appreciate to find the input/output-interface
>of maxima at least for my own needs.
>
>Gottfried Helms
>
>
>