[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [Axiom-developer] Lisp GUI libraries and a UI for Axiom
From: |
Page, Bill |
Subject: |
RE: [Axiom-developer] Lisp GUI libraries and a UI for Axiom |
Date: |
Thu, 7 Sep 2006 11:58:31 -0400 |
Kai,
On Thursday, September 07, 2006 11:26 AM you wrote:
> ...
> Now that I've presented a list of Lisp GUI libraries, let me argue
> that it is irrelevant.
>
> I do not see any reason why a GUI for Axiom has to be written in
> Lisp. Why not write a GUI for Axiom in Python or Java or C++? Why
> does every GUI have to be portable? Why should there be only one
> GUI or even a canonical GUI anyway?
+1 Right on!
> ...
> The solution is to separate the GUI from the Axiom core and make
> GUI programming easier. The former is pretty easy, just get rid
> of the GUI code in $AXIOM/src. That would also get rid of most of
> the C code and thereby improve portability of the core. Making GUI
> programming easier is a lot more work.
Yes.
>
> For a GUI to be more useful than an Axiom terminal session, it needs
> to be able to understand Axiom's output to some extent. It also needs
> the ability to query Axiom for all kinds of information, ...
>
> Create an API that supports this kind of functionality and future
> versions of itself, and make it available over a socket using a
> simple (in every programming language) clear-text protocol. Done.
> Sooner or later someone will write a GUI then.
>
I believe that is an excellent suggestion.
This approach is already partially used in Maxima to abstract the
user interface from TeXmacs. I recently used an only slightly
modified version of the interface code written by James Amundson
http://wiki.axiom-developer.org/address@hidden
i.axiom-developer.org
in the new MathAction Wiki interface for Maxima. The TeXmacs
interface uses embedded control codes but I changed this to an
XML-style bracketing that was very easy to parse in Python.
For more Maxima examples see:
http://wiki.axiom-developer.org/SandBoxMaxima2
---------
Interfacing to Axiom actually presents a little more of a
challenge than Maxima because we also need to deal separately
with the type information. And as you suggested above, error
messages, state-of-the-computation information and graphical
data should also be handled through a consistent and well
documented clear text protocol.
The protocol and API also needs to be designed to work well with
asynchronous AJAX-style techniques for browser interaction.
The Sage developers have been discussing
Twisted http://twistedmatrix.com/trac/ and
Nevow http://divmod.org/trac/wiki/DivmodNevow as appropriate
related interface technologies.
I think that if we can graft these methods into the Lisp side
of AXIOMsys, then we would be in a very good position when
"Sooner or later someone writes the next GUI application".
Regards,
Bill Page.