[kde-edu]: Dylon: New developer in training

Dylon Edwards integr8e at gmail.com
Wed Dec 24 23:04:50 CET 2008


I'm working on writing a fontend for computer algebra systems -- like Maxima
-- to learn KDE+Qt, however, I'm very new to the programming world.  It
seems there are plenty of excellent free software CAS's, but nobody's
developed an intuitive interface to any of them yet.  Maxima does an awesome
job of formatting its solutions at the command line, but many people are
weary of using consoles; I would like to develop an application that would
make using them as easy as (or easier than) their commercial counterparts,
such as Maple and Mathematica.  Such an application will take some time to
develop, especially by a new programmer, but I'm prepared to spend a while
on it, and have actually been working on it for about a year now (but only
an upcoming 4th semester sophomore, working on my 1st Bachelor's at a local
university, I haven't generated as much code as I would have liked).  My GUI
would be much further along than it is, but until last week, I was writing
my own CAS because I was unaware of Maxima.

Some of my goals for my CAS were:
 - It needed arbitrary precision
 - It should be able to break the solution down into easy-to-understand
steps
 - It needed a clear, natural syntax that would be easy for anyone to pick
up

For the 1st, I noticed floating point calculations were not very accurate,
and had begun working on my own version of what I've now come to know as
Java's LargeDecimal class, which broke the operations down into steps and
stored the result of each sub-calculation in Strings.  I thought I'd
discovered something revolutionary until I learned about LargeDecimals a
month ago (which made such operations much easier) :P

I developed a good algorithm for the 2nd; basically, it solved an infix
expression as we do, parsing through it using the order of operations to
determine whether to perform each calculation.  The parser would pass
through the expression multiple times until it solved the whole thing,
printing the current state of the expression upon the completion of each
pass.  Pretty simple stuff, if you think about it, but for somebody who had
just completed his 2nd semester, the algorithm took some work.  I'm still
not aware of anything like it, and being so simple, I will probably try to
get Maxima's devs (or those of whichever CAS I decide to use) to implement
it.

The 3rd is self-explanatory.

In the last week, I've taught myself C++ and have begun studying, more in
depth, Qt and XML.  Originally, I had planned to write the application in
QtJambi, but have become aggravated with its current state and have decided
C++ would be better.

My basic plan is to obtain a user's expression from a TextEdit widget, pass
it to Maxima, which will be embedded and running in the background, have it
solve and export the solution in MathML (which it already has a class for),
and send the solution to KFormula's FormulaElement class which will draw the
nicely formatted solution beneath the user's expression on the canvas.  Does
that sound like a plan?

Also, if any of you would be interested in helping me get something off the
ground, that would be cool too; I would be more than willing to help revamp
KAlgebra, if its devs like the direction I'm heading, or I could create a
separate project, it doesn't matter to me; I'm of the opinion that working
with people on already existing projects is good, and that I should only
branch out and start my own thing if absolutely necessary (thus the reason
I've decided to go the Maxima route).  I have a MUCH larger vision for my
application than I've included with this email, but I figured this is
probably a good starting point.

Hello World!

-- 
Dylon Edwards
SSWJ - Stay(ing) Strong With Jesus, Always!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kde-edu/attachments/20081224/55181684/attachment.htm 


More information about the kde-edu mailing list