At my university, I have a yearly essay. I'm allowed to use any technology for implementing it. I've been coding it in C++ with Qt. I thought of about Wolfram Mathematica because I have some experience in it.
I need such functionality:
- Timers — for calling functions by timer
- Threads (or Processes are good too)
- User-friendly GUI (buttons, input forms)
- Be able to catch when user clicked left/right mouse buttons or key on keyboard
- Dynamic graphics (with changing graphics in time)
- Launching applications as a standalone executable file
I'm ready to put more effort into it. But I wonder whether I'm burying myself alive trying to implement things which Mathematica isn't devoted to do.
I would appreciate links to topics marked with questions signs.
How bad is this idea? What are your opinions? Should I do it in C++? (Doing it in Mathematica would be challenging for me.)
As an Eterprise CDF user, I can say I have really tried, and my current opinion is that creating a standalone GUI program with the Wolfram Language is not an easy/commercial/deliverable task at the moment. Here are my points:
- All the interface controls are very limited. You will have a lot of difficulty to do basic things like make Tab jump between fields, make your interface evaluate when Enter is pressed, or just put form fields in the right positions.
- For free text fields, export to clipboard or create a pdf/xls/txt file with your report is possible only with the Enterprise version.
- To distribute the program you (and anyone who recieves it) have to install Mathematica Player, you can't create a standalone executable. It's strange to use a language that can't be easily delivered.
- You can't pack your CDF in one file. For big projects, you need to distribute a folder with a file structure inside it, which is very clumsy.
- Normally, when you use
Dynamicor something similar, your CDF opens with a gray screen with a button that have to be unblocked, giving your work a very unprofessional appearance.
- You need to see Mathematica advertise ever time you open your Mathematica Player (even in Enterprise edition).
- You can't hide things like database connections inside your code, it's very easy to get the string inside java components. For business applications, you need to refresh data dynamically, and you can't do this in a secure way.
- Lack of complete/structured code examples with database connection, nice GUI interface and professional look. You can find some very specific examples like these at wolfram.com, but only very simples toy examples.
These are the main reasons I don't recommend CDF for professional standalone applications, in my vision they are good for toy code, students and individual data exploration. I loves Mathematica, but today I have given up developing this kind of application in CDF, maybe Wolfram Language might do something better in the future.Tweet