I think my primary reason for proposing a new frontend, is that I'd like
to see SymPy algebra/calculus reach more people - people whose need for
computer algebra is real, but not overwhelming, or children who are
learning calculus for fun, years before it was taught in school (as I
did). As a consultant, I was contacted by more than one PhD student, who
was fluent in his subject, and needed computer algebra, but with only a
limited grasp of computers.
I didn't come to SymPy looking for a reason to write a frontend, I came
because I was interested to discover how effective SymPy is compared
with Mathematica.
There is lots of simple but useful free software available now - for
example the post-it note program, Stickies or the clipboard storage
system, Ditto. These seem to have been built by one person, and yet even
they have a custom GUI, and often work on more than one platform. By
contrast, SymPy is obviously a massive effort with many contributors,
and yet rather than having a dedicated GUI interface, it runs via a web
browser with a CMD program connected in some way. The would-be computer
algebra enthusiast has to find the weirdly named Jupyter program, start
it up, and then know to click Python 3, and then click 'New' in order to
get to a window into which he has to import SymPy and its symbols before
he can begin to type in algebra. When he comes to save his work, he
again has problems, because most of his computer is inaccessible for
understandable security reasons.
People who really NEED computer algebra will learn to do all that, but I
am pretty sure you will lose a lot of others on the way. I think that is
a shame, and that free algebra software should also be easy and friendly
to use.
Indeed Kasper Peeters has already decided to create some type of stand
alone frontend - part of Cadabra - that I am eager to try, but it seems
to have some teething troubles right now.
I'd imagine that many - maybe most potential users of SymPy would like
to simply execute algebraic commands - they don't really want to use
Python explicitly unless and until they become more serious about using
SymPy. I propose that my frontend will accept all the input that Jupyter
will accept, but it will start connected to Python 3, with SymPy
imported together with all its symbols. I also suggest that a pre-scan
can pick up a variety of elementary (but common) faults, and give clean
errors - unpaired quotes and missing brackets would be obvious examples.
By default, this scan would also spot single character identifiers and
set them up on the fly as SymPy symbols. This would mean that all the
variables most used in algebra - single letters and Greek letters -
would be immediately usable. More advanced users who wanted to
incorporate Python code, would probably be advised to turn this feature
off. I think it would also be possible to distinguish between variable
names and function names and set them up appropriately.
I think producing quality error messages for other kinds of fault is
also important. Everyone makes errors, and beginners make more than most
- is they don't make sense, they soon give up.
I'd also like to apply some syntactic sugar in places. For example, the
ability to expand expressions such as f(x**2) in powers of x is fine,
but the complex notation for f`(0) and higher derivatives, makes this
very hard to use.
Also, now is the age of UTF8, and clearly the frontend should at some
point provide easy access to all the symbols relevant to maths. These
need to be easy to input on a normal keyboard, and Mathematica provides
several ways to do this, including typing things like <esc>inf<esc> to
obtain an infinity symbol. The replacement is made immediately.
Something along these lines could make SymPy even more attractive.
S.Y.Lee suggests creating a formula editor. By this, I think he means an
editor that could operate directly on a 2-D mathematical expression -
say to change the limits on an integral. In practice with Mathematica, I
found this rather fiddly, and I usually suggested converting an
expression to ImputForm, changing it, and then changing the result back
again.
I guess this is my provisional roadmap (it wouldn't all happen at once),
depending on what everyone thinks and how Cadabra works - I don't want
to re-invent the wheel.
David
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/3285f96d-b1d2-75fb-4837-75460bf0c315%40dbailey.co.uk.
For more options, visit https://groups.google.com/d/optout.