Mathematica started as a computational algebra system; a product with its own proprietary language and unique notebook system to integrate computational code with text and graphics.
It works very well as a sandbox computational environment for e.g. research, analyze, document and develop new models and computational methods (algorithms). It’s strengths are:
- Symbolic computation combined with numerical methods
- Functional and rule-based programming (and procedural)
- Large library of functions so you can write concise code
- Well-written documentation
- A notebook environment.
Mathematica is a fun system to work with and it delivers results quickly, even though its learning curve is steep (maybe because some of us came from procedural languages and there are many ways to achieve the same result).
I don’t agree with Jonathan on the use of Excel versus Mathematica. Mathematica is my go-to system to analyze data and models and yes it replaced Excel for me in most cases.
I used Excel for large datasets, with pivot tables, VBA and many worksheets. However, my code to analyze data became opaque or hidden in many worksheet formulas. As such, Excel became unworkable. Now I may use Excel to create a well-formed CSV file, which I import to create a Dataset and analyze it in a Mathematica notebook. I spent a lot of time to master Datasets and associations and now it pays off.
Mathematica's language i.e. the Wolfram Language, has transcended its original product: it has become the vehicle for all things computable. So Jonathan’s question “what is Mathematica for” is relevant.
I think Mathematica should serve a niche market, comprising of mostly researchers, analysts and maybe some system designers. It should become a vehicle of state-of-the-art computational functions and methods. I agree with Jonathan: WR should focus on finishing and polishing e.g. statistics and time series analysis, machine learning and a number of other application areas, so it becomes the go-to tool for research. If you have Mathematica, you shouldn’t need any other specialized application to do your research.
I think the WL should focus on a computational ecosystem with capabilities to develop, test and deploy code, create APIs and GUIs for different OS or distributed computing environments. Its symbolic computational capabilities and extensive library of functions make the WL an ideal language for education or data analysts.
Having said this, I see a number of improvement areas to facilitate the WL/Mathematica adoption:
Transparency of outstanding issues.
If Mathematica becomes the indispensable tool for researchers, then more transparency about stability, reliability and accuracy becomes paramount. We need to be able to rely on the tool and hence we need insight in outstanding issues, bugs and workarounds. I hope access to redmine is a first step into more transparency.
Reduction of the number of functions to a select number of unique ones.
Mathematica prides itself of its 5000-odd number of functions. However, I see a lot of redundancies i.e. new functions that do things slightly different from similar functions. I like to see a reduction of redundant functions. For example take the ListPlot function: we have ListLinePlot, DateListPlot, StepListPlot, DateStepPlot etc. they are all of the class “ListPlot” and with the new axis capabilities, they can all be integrated into one function. This saves us the effort to remember the name of each specialized function, it makes code maintenance and documentation easier for WR too.
Document implemented methods.
I would like to see WR open up the black box of some functions in the documentation i.e. explanation of methods used or references to methods implemented.
Conclusion
I think the purpose of Mathematica should be the go-to tool for researchers and analysts. I agree with Jonathan that WR should focus on delivering a complete set state-of-the-art tools.
I think the Wolfram Language could become the computational ecosystem to develop, test and deploy code for all things computable. We have some miles to go there.
At last, the adoption of Mathematica and WL could be facilitated if:
- We have more transparency of outstanding issues and bugs.
- The number of "redundant" functions has been reduced to a number of unique ones.
- We see more documentation to help us look inside the black box of some functions.