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.

Reply via email to