Group Abstract Group Abstract

Message Boards Message Boards

22
|
49.2K Views
|
79 Replies
|
109 Total Likes
View groups...
Share
Share this post:

What is Mathematica For?

I realize that I am possibly the only Mathematica user to suffer from existential angst for the product, but still, its worth pausing to ask the question, what is Mathematica for? Meaning, what is its purpose?

But for those of you pragmatists tempted to roll your eyes and just get on with using it, let me motivate the question with a chart:

enter image description here

You don't need a model to figure out the long term trend in that time series. And someone, somewhere, in WR needs to be asking the question I am posing in this post, if they are seriously hoping to check that trend and reverse it.

Now, let's be fair here. Firstly this is not just a Mathematica issue. For example, here's the comparable chart for Matlab:

enter image description here

So I am not "picking on" Mathematica. Its a general problem for mathematical programming languages. Or perhaps I should say, more accurately, its a challenge for proprietary mathematical programming languages: enter image description here

Now this "analysis" is of course over-simplistic. It could be, for example, that the downward trend in Mathematica interest is a reflection of a decision by WR to increase prices over time, to maximize profits, i.e. it could conceivably be a good thing. But I rather suspect otherwise and instead tend to believe that Mathematica is losing influence and relevance, regardless of whatever I may think of the product.

Another response might be: "Of course we are losing market share to license-free, direct competitor products. What's your point?". To which, I suppose, the answer might be: "Are you quite sure that is inevitable? Are there not examples of for-profit products that are so good they are able to maintain market share in the face of cost-free alternatives?".

The answer to that question is, of course, yes. But in order to maintain your competitive position you have to be crystal clear in your understanding of what the value proposition is, and why customers will (continue to) pay for your product. Which brings me to the subject of this post: what is Mathematica for? Because unless can answer that question, you can't answer the earlier one.

Now I have a theory that the generally held view in WR is that Mathematica is for any kind of programming task you can conceive of. It's a general purpose tool, limited in its capabilities only by your imagination. And at this point we could now queue up a 15 minute informercial featuring examples of applications from Astronomy to Zoology.

But just because you can do something in Mathematica doesn't mean you should: there are often better alternatives. Mathematica has developed into something like a Swiss Army knife, a general purpose tool you can use for almost any purpose. But, often times what you need is a tool with a specific purpose, like a screwdriver, which will make it much easier to complete the task you have in mind.

Let's take a simple example: spreadsheets. I have seen several attempts to get Mathematica to do the kind of thing that Excel can do effortlessly. And the question I always end up asking myself is: "why on God's green earth would anyone in their right mind try to use Mathematica for a task like that?". What is trivial to accomplish in a few seconds or minutes in Excel, typically takes hours of jumping through hoops with Mathematica to achieve a result that is almost always inferior. It's like trying to navigate a freeway in a spaceship, rather than a motor car. Sure, you can do it, buy why??

Another no-no is trying to develop stand-alone software applications in Mathematica. It's extremely hard to do - typically much tougher then using a language designed for that purpose.

On the other hand, there are some things that Mathematica excels at, such as:

  • Mathematics/symbolic logic/symbolic manipulation: superb. Best of breed.
  • Graphics (including animation) ditto
  • Documentation. Also superb. Now as good at Matlab, possibly even superior.

After that, you could pick a bunch of different application areas in which Mathematica is great. But best of breed? I dont know.

Let's take an area I know a little about: time series analysis. prior to 2010, Mathematica was truly awful at handling time series. Basically it didn't. Gradually, over subsequent releases, Mathematica has made enormous strides in this area to the point where it is truly magnificent. For which someone at WL deserves (and I hope has received), several promotions. But despite this, Mathematica is still not best of breed in this area. Why? Because, unaccountably, it is still missing several vital elements of functionality such as Granger causality/ Cointegration and its implementation of important functionality like the Kalman Filter is horribly unintuitive.

This shows two things: (i) it is possible for WR to make Mathematica outstanding in almost any area it chooses to. it's just a question of focus. And (ii) to become best of breed, you need to finish the job! By which I mean, provide something close to 99% of the functionality that a professional practitioner in that area would expect to have available. if it chose to, WR could accomplish that in the time series area in a single release, I would guess.

The problem, I am suggesting, is that in trying to make Mathematica a product that is "all things to all men", it fails to achieve the status of being indispensable to practitioners in a more limited subset of subject areas.

Ok let's go with this conjecture for a moment. Let's wave a magic wand and imagine that we can change Stephen Wolfram's vision about his flagship product, which he has sweated blood over for the last 20-30 years (in other words, this is never going to happen - but its still fun to play the game).

What core capabilities would you have WR focus on with the aim of making Mathematica an indispensable product in that area?

Here are my choices:

(i) Time series & econometrics. Mathematica is so close: just finish the job - it's a no-brainer!

(ii) Machine learning. This also means making sure that the GPU capability works as it should, first time and every time. Mathematica still has a way to go here and its a huge area. But I'm sure WR could do it.

(iii). Meta-Programming. This one is a BIG stretch. But it just happens that WL may have a huge potential competitive advantage, because the language is itself computational. in other words, the building blocks of the language can themselves be manipulated, which is exactly what you need for meta-programming. Try doing that in Python!

On this subject I would say that the starting point would be to create WL functionality capable of generating a single line of WL code that is sufficiently complex and interesting to win the Wolfram One-Liner competition. I realize that's a huge challenge and its not just about the difficulty of navigating the terrain of the Wolfram language. It also involves thinking about what "complex" and "interesting" mean, in this context.

Think of this as a Turing test, for Metaprogramming capability. Once it's passed, it would open up a floodgate of possibilities, both for WL aficionados but also, critically, for those who don't program in WL, or indeed in any language at all. For reference, check out whats going on in the world of "no -code" application environments.

POSTED BY: Jonathan Kinlay
79 Replies
Posted 3 years ago

I think a technically educated person should be writing with a word processor, doing reports with a spreadsheet, and thinking with a technical computing language as an extension of their thought process.

I observe that people don’t think about things much. If they do, they use a spreadsheet. And that may be too complicated for some. The market for technical computing language may be limited to what I think of as “practicing PhD’s”. Mathematica makes it practical to think about a problem in terms of differential equations, for example, but one first needs some understanding of calculus and not everyone does.

I have recommended Mathematica to others but so far none have been able to use it well enough for it to be an extension of their thought process. It’s a steep learning curve. I have been using Mathematica since version 1.

A technical computing language is not the right tool for producing commercial computer applications. They are two very different things. This is not good or bad, just two different things. And tools for commercial computer applications are well developed. I had an application where I was writing c-code for a microcomputer. It needed a digital filter. I used Mathematica to simulate the data and to design a digital filter. Expressing the filter as c-code was trivial.

My typical Mathematica notebook often starts with some simple notes on a topic. It extends to some “proof of concept” analysis. Then expands from there. This was the development pattern in a recent activity where I extracted telemetry data from a GoPro MP4 file and used it to analyze sailing performance.

My answer: “it’s an extension of one’s though process.”

Years ago, we may have understood that an analysis might be theoretically doable, but we did not have tools to do it. Now with a technical computer language as an extension of one’s thought process we can. The possibilities for expanding understanding become endless. Perhaps we should put more emphasis on teaching a technical computing language. It might enable people to use, for example, calculus in a meaningful way.

POSTED BY: Tom Compton

I always enjoy using Mathematica for serious and less serious work. Don't want to spend all time on finding the right python libraries and check there vitality etc when most absolutely necessary. I think Mathematica is fantastic and thoroughly enjoy listening to Stephen wolfram's discussions with his outstanding team. I mean I don't know any other cto doing that. I also believe that Wolfram is really looking for "stuff" that is actually useful for his customers. Other languages have also great features and sometimes better syntax but that doesn't matter. The flexibility is incredible. I also enjoy the documentation and all the crosslink to other fields that might be useful. You always learn from it. No other languages has given me more pleasure programming than this Wolfram language. I once played with low code software mendix in combination with sap software. I didn't really like it. Low code for sure but many many many clicks and different windows.. Not for me.

POSTED BY: l van Veen

A great discussion, which obviously touched a nerve. For context, I am an ecologist, and one of at most a handful of ecologists who use the WL. I attempt to do almost everything in it, and succeed about 95% of the time.

Some of the more recent posts touched on Wolfram's computational data. It certainly blows people away when you use it in a demo: it seems like magic. But there is an analog to the 'production quality' issue: the built-in data have a black-box vibe to them, whereby tracing those data to a source can be challenging (or at least time-consuming). For this reason I would hesitate to use anything from the Wolfram data repository in an academic publication (my version of 'production'). Which makes it more of a tease than anything.

Overall, the issue seems to be one of breadth. Because the language is so capable in so many areas, Wolfram has built it out almost exponentially into different realms. (Stephen has proudly graphed this on more than one occasion.) It's why it is so fun to play with, and develop ideas. But to make each of those areas state-of-the art you would need equivalent growth in personnel, and that isn't realistic. Which is why so many application areas remain somewhere between 50% and 90% developed. It's a shame because the WL has more potential to be a 'universal tool' than any other I have seen.

The real strength of the platform as it is now lies not in any one application area (except maybe a few really well-developed areas, e.g., symbolic math and physics), but in the ability to move seamlessly between many. This is how I use it: I can ingest multiple large spatial datasets, process them, fit a statistical model, simulate something based in the fitted parameters, then visualize them on a 3D map, all in one notebook. There are tools that would do each part better and/or faster, but I would have to a) install and know them all, and b) keep saving and loading files.

But I suspect most potential users come looking for abilities in just one or two areas, and compare those to their narrow but highly optimized specialist alternatives.

POSTED BY: Gareth Russell

A couple of recent comments led me to review the original post and some of the replies from community members which, I have to say, I find rather interesting (although I suspect Stephen Wolfram would perhaps beg to differ). A thought on this subject that I have been entertaining for some time is the concept of Mathematica as a kind of computational Wikipedia. Perhaps, if it has any relevance at all, the comparison could be better made between Wikipedia and Wolfram Alpha, rather than Mathematica.

In any event, what I find interesting is that for a long time Wikipedia looked like a hopeless quest: in the early days many subjects were barely covered and the quality of the articles was often very poor. But then, amazingly, the whole idea took off and Wikipedia became the kind of indispensable reference that Jimmy Wales imagined it could become.

I think something similar may be happening with Mathematica (or, rather, Wolfram Alpha) as its scope has enlarged over time (and the quality of the reference material has always been excellent). My sense is that it is close to some kind of tipping point, on the verge of becoming the kind of indispensable computational resource that Stephen Wolfram had in mind from the outset.

Do others agree? Or take an altogether different view?

POSTED BY: Jonathan Kinlay
Posted 3 years ago

Much has been said here that I understand and agree with. Especially the uselessness for real production systems. I myself have discovered WL only as about the 20th programming language since I am a pensioner. Before that it was always about large systems in FORTRAN, PL/1, C, C++, Java as a system architect and developer.

Today I program just for fun, and for that WL is great. For me especially because of the symbolic and mathematical capabilities and graphics. And I love notebooks that contain code and its documentation at the same time. Now I do everything simple with EXCEL VBA and everything else with WL.

I would like to add two important points that I think hinder the success of WL:

  • The impenetrable jumble of products and licenses, i.e. the marketing.
  • The price. For people who just want to get to know the product, especially students, a license is way too expensive (the cloud is not a way out, in my opinion you really need a desktop version with local files).

The second point is existential. Students can do all their tasks for free with things like Microsoft Visual Studio, Eclipse, C#, C++, Java, R, Python and the like, but nothing with WL because they can't afford a license.

POSTED BY: Werner Geiger
Posted 4 years ago

I have found Mathematica essential in production settings for at least 20 years. Most of those were before the Wolfram Engine (and the more recent cloud offereings). I have re-analyzed some of the applications I mention below, and we could have cost-effectively used the Wolfram Engine if it had been available. Stability of the kernel has also dramatically improved.

I have used Mathematica in at least three different companies. In a consulting environment, we did all our in-house analyses using Mathematica. Notebooks would call large databases, issue SQL commands, and bring in the data for further processing and visualizations. Most algorithms we needed had to be developed from scratch, and Mathematica made it quick to go from reading a paper or a pencil and paper calculation, to something tested and working on data. The graphics would usually get some tweaking in Illustrator, but would often be close to camera ready. We also used Mathematica to create reference algorithms to be implemented in C++ or Java. Many of these where not numerical algorithms.

At my next company we used Mathematica directly as a compute engine. We had developed a very performant cyber security system that identified executing malicious code by observing the stream of system calls. All the machine learning steps were done in Mathematica (this was before the free Wolfram Engine). It allowed us to have version 1 of our system up way faster than if we had implemented them directly. We experienced memory leaks and random hangs that forced us to periodically kill and restart the compute engine, but we were able to engineer it so that those issues remained invisible to the user. Over time, because of costs, we replaced the Mathematica subsystem with Java code.

In my current work we still develop most of the algorithms in Mathematica. We are building a system that use Mathematica for some core data generation; reference algorithms are still in Mathematica. We also use it as a thinking tool (see my blog post). Having all that curated data at one's fingertips is great.

I feel costs have prevented a wider adoption. Wolfram Research now offers low cost versions for non-commercial applications, which should encourage wider adoption, but I sometimes worry that its market may be shrinking.

POSTED BY: Ronnie M
Posted 4 years ago

@Wenguang Wang, maybe it is because you did not have a chance to get to the Mathematica's full potential. I heard a different story. My friend uses Mathematica extensively, data science, analytics, general coding, etc. Then she had to use python for some of her new work tasks. She got very frustrated with how not-smooth the experience was with some workflows and the front end in python. To me hybrid numeric-symbolics and fundamental symbolic nature of Mathematica and its functional style coding architecture seems far superior than python. Some similar user opinions here: https://mathematica.stackexchange.com/questions/86058

POSTED BY: Updating Name

I agree Jonathan and I am also worried about the long term future.

In my opinion the following issues have to be addressed first:

1.) Polishing and bug fixing of existing features

  • Inconsistencies in TimeSeries
  • Bugs and missing features in Machine Learning (Batch Prediction, GPU-support, Support for Apple Silicon and ML engine, …)
  • Performance of Dataset, …
  • Improve Developer Tools (update Workbench, support for other editors - might be coming as far as I know)
  • Fixing long standing issues in various kinds of functions. Very often when I try something new, I stumble over bugs which give an unpolished impression of the product and the features run out of gas after they are 90% finished.

2.) Generally „Big Data“ and Data Processing has to be handled better

  • fast converter / importing routine for numbers, datetime, …
  • Out of core storage
  • Supporting CSV - Files with „;“ deliminator
  • support for secure web sockets wss - Protocol
  • => focus on performance for processing huge amount of data

It is really surprising what basic features are missing in this area. Python is far ahead.

3.) Deployment for Production

  • as far as I know efforts are made in this area (Application Server) but nothing really useable in an easy way has been released so far
  • Licensing has to be pain free, no cloud credits or something like this but permanent license
  • Deployment / packaging of an app has to be easy and stable
  • Deployment on own infrastructure
  • support long running services (eg. Bot)
  • Automatic error recovery, restart, logging, …

4.) Predictable bug fixes and releases

  • when a bug is reported it is simple unpredictable for a customer if it gets fixed at all and when it gets fixed
  • This is especially annoying for regressions. Fixes have to be pushed out quicker.
  • I wouldn‘t suggest WL for a critical app in an enterprise because of this
  • as long as this is not worked out, WL is only useable for research and experimentation in my opinion

5.) Create and promote examples for real world use cases in enterprises (IoT, Predicitive Maintenance, Big Data, ML Recommendation engine, Trading Bot, …) outside of research and development. Whenever I talk to somebody about MMA nobody thinks about production usage of it. This is probably the hardest part to build up awareness.

That said I really like the concept and idea of Mathematica and I want it to last for a long time and be as stable as possible. I enjoy discovering new things and areas where I had no idea about before.

POSTED BY: Philipp Winkler
Posted 4 years ago

Jonathan, the answer is very simple:

"Mathematica is for Stephen Wolfram to do his NKS-stuff on."

Other features are put in from time-to-time and as is deemed necessary to make Mathematica sufficiently saleable to support Stephen so he doesn't have to get some other less enjoyable occupation while he pursues NKS.

;-)

B

POSTED BY: Bernard Gress

Mathematica has been the platform of choice for sensors-to-animation production by the film industry for decades. A colleague of mine is a system administrator at one of the sites.

POSTED BY: Richard Frost

Having said that, the Wolfram Engine would not be regarded as a complete solution by many:

(i) production systems developed using the WE require a production license and distribution of the WE runtime module

(ii) it entails development of the system in another programming language (which calls the necessary functionality in the WE).

In other words, in this mode of usage the WL alone is insufficient to create a production system. It is necessary to be proficient in another programming language such as C++ or Python to create the complete application. From that perspective, the WE is just another library (albeit a powerful one).

POSTED BY: Jonathan Kinlay

Some comments from a long time programmer (coming up on my 50th anniversary) and Mathematica user (32 years):

First, Bernard Gress's comment that WL exists so that Stephen can get his projects done is truer than might be expected. Certainly, the best way to get feature 'x' implemented is to get Stephen interested.

Second, I think that there really is confusion about what Mathematica is for. I initially used it solely to solve maths problems, and for that it was, and is, superb. The first edition of the Mathematica book had the subtitle: "A system for doing mathematics by computer". Over the versions, the definition of what maths is has expanded, and a bunch of other stuff has been added.

The notebook interface is great for this type of investigation and interactive exploration.

However, it is rubbish at making stand-alone apps.

It is also far too hard to do computer-science or complicated programming. When I learned c, almost everything I needed to know was in the K&R book, some 125 pages or so, as I recall. Sure, you needed to understand the standard library, but the header files gave the information you needed. This level of documentation is missing in WL, although the general level of documentation otherwise is very good. With c, the step between the 'simple' stuff and a complex program was gradual and the simplicity of the core language made learning what to do relatively straight-forward. With Wolfram language, it is by no means clear what the core language is, and understanding it is not simple. This makes going beyond the basics much more difficult than it should be. At Apple in the early 2000s, they told developers that Xcode (and objective-c) made the regular stuff easy, and the hard stuff possible. With Mathematica, the mathematical functionality for interactive use is made very easy (compare to writing your own), but anything beyond that has been made much more difficult than it needs to be.

To give an example, it is not clear from the documentation how to pass a variable by reference -- if it is there, it is pretty well hidden.

Your comment about losing something when key people leave is very telling, especially for Mac users. When Theo Gray was involved, you could expect that Mathematica would make use of Apple technologies -- it was largely due to him that Mathematica remained a Mac program through the dark days. However, I am no longer feeling the love, specifically in the areas of UI and GPU utilization. As far as I can tell, Apple's neural engine is at least as good as anything based oil NVIDIA, yet it is not used at all for machine learning in Mathematica. Embracing other new OS features has been very slow -- it took far too long to move the front end to 64 bit, for example.

There is also the tendency to leave stuff at the 99% done level and move on to the next shiny object. There are simply too many bugs. There are too many similar functions that do pretty much the same thing, but which have subtle differences in the API or performance, and the documentation does not make that clear at all.

When I retired, I decided that I would let my skills in c (etc....) lapse in favor of doing all my coding in WL. I have come to regret this decision. When I use WL as part of my mathematical studies, I have (mostly) no problems. For anything else, it is a constant slog to achieve even moderate success.

I do have proposals for a solution:

  1. Fix the bugs.

  2. Market Mathematica (Wolfram|One, etc.) for what it does best -- interactive computation.

  3. Fully implement the Wolfram engine so that it can be used as a resource when developing stand-alone code in pretty much any language for any platform. Specifically, this means making the engine work with iOS and iPadOS so that other developers can develop apps with a state-of-the-art UI and functionality, yet making use of the strengths of WL. (A similar case can be made for Android, as well.)

  4. Make full use of the native capabilities of each hardware platform. This means making use of all the technologies in macOS (and iPad/iOS), Windows and Linux, although the most obvious mismatch is with macOS at the moment.

  5. Institute a developer program (with nominal costs attached), so that developers will have access to essentially whatever or whoever tech support gets their undocumented answers from. I remember that the Wolfram Technology conference was originally called the Mathematica Developer's Conference.

  6. As a corollary, provide some really state-of-the art developer tools. I tried using Eclipse, but compared to the tools that I used when developing Mac apps (Lightspeed c, Code Warrior, Xcode), the tool is clumsy and out-of-date. I have no experience in Java development or development on Linux or Windows; perhaps Eclipse is perfectly usable for these platforms. I know that discussing tools is likely to lead to a religious war -- after all there are those who think c++ is the best of all possible languages. However, if Wolfram Research wants to break out if its ghetto, it will need to integrate with modern IDEs, and Eclipse is not going to help with this (in my opinion, of course).

  7. Consider making a new language. All older languages have had re-thinks about what the language means. C has had several successors, with different levels of success: c++, Objective-c, and Swift. While I am not fluent in Swift (yet) it seems to have captured the essence of what was good about c without the excesses of c++, and is easy to learn. A similar rethink of WL would be a really good idea. While many of the design objective of WL were good, not all were, and some of them are real howlers -- especially in the area of UI design and implementation. Done right, no old code would be obsolete (you can still use ANSI c in Swift), but things would be a lot easier both for typical users and experts. Of course, if Wolfram Engine were available for macOS and iPadOS, some enterprising person or group could re-implement WL from within Swift, so this might not be so far out after all. (Remember Swift is not proprietary -- and I am using that only as an example.)


When I first used Mathematica, I was developing (in-house) real time process control software for a large clinical lab. I would solve the mathematical problems and prototype graphs, etc., using Mathematica, then translate the results into c on a Macintosh. This combination worked extraordinarily well. If my suggestions were implemented, and I were doing the same thing today, I would do the prototyping in WL, then use the Wolfram Engine in a native program I would write in Swift for macOS and iPadOS that would make native use of Apple's Neural engine. This would result is a more useful and stable application than I could ever hope to do using WL alone.

So, to answer your question: what is Mathematica for?

In its current state, Mathematica is for interactive problem solving of primarily mathematical problems using the notebook interface.

I do not think it is effective when used for anything else (certainly by not anyone outside of Wolfram Research) : web deployment, etc. except as a way to publish notebooks interactively, seems to be a toy project.

With proper focus, as I outlined above, Wolfram Language could be a significant tool in the development and implementation of basically any type of scientific application.

100% agree with your comments about Mathematica being enjoyable .... one of the great things about it is that it so easily allows you to "play" with concepts and ideas, and even pick up new ones from completely different fields. In that regard WL is unlike any other language I have programmed in (with the possible exception of APL). There is a great deal of tedium involved in programming in most other languages (although I quite enjoy working in R).

That said, I suspect that some of this is because I am not usually trying to build production systems in WL, a process that inevitably involves a lot of humdrum, laborious, house-keeping code. I use Mathematica for R&D, and in that context it's an ideal environment - fast, powerful, broad in scope and highly interactive. And, like many users, I love to dabble in all kinds of interesting topic areas that Mathematica opens up.

POSTED BY: Jonathan Kinlay

Hi Raspi, in some ways I think you are an ideal Mathematica user - a total convert: MMA with everything! And I get it - it's a wonderful sandpit environment for every kind of experimentation.

But in broad terms, my thinking is that this is what Mathematica really is: a means of doing fast research, experimentation and prototyping - but not necessarily for production systems.

If you are not a professional developer that probably doesn't matter at all - everything is an experiment, or recreation! But for a professional developer, getting systems into production and making sure they are battle-ready is a critical part of what you do for a living. And its in this context that I see the greatest challenge for Mathematica - making WL applications that are sufficiently bullet-proof to hand over to an end user (rather than, say, a research co-worker).

BTW what do you use Raspberry Pi for?

POSTED BY: Jonathan Kinlay
Posted 3 years ago

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.
POSTED BY: Dave Middleton
Posted 3 years ago

Hi Tom,

I think a technically educated person should be writing with a word processor, doing reports with a spreadsheet, and thinking with a technical computing language as an extension of their thought process.

This strikes me as too prescriptive. Fifty years ago you would have had to write, perhaps: "a technically educated person should be writing with a fountain pen, doing reports using a pocket calculator and hardly thinking at all about technical computing languages, unless they are computer scientists".

The point is: time moves on. If you work at Wolfram Research I imagine you (try to) do everything in WL, whether it be writing text, producing some analysis, or programming an application. Certainly that's my understanding of Stephen Wolfram's expectation, anyway. For myself I do a large proportion of my work in WL, including carrying out analysis, creating presentations, and programming applications. It's very convenient to use a common UI and tech stack for all these varied tasks: it save shifting from one application to another, having to be concerned about file format compatibility, etc.

A technical computing language is not the right tool for producing commercial computer applications.

I understand your point, but I expect that there are legions of Fortran programmers, to say nothing of the good people at WR and Mathworks who would heartily disagree with you. And indeed on the pages of this post several examples are given of commercial applications developed in WL (including one or two of my own).

To your point, however, it's obviously a significant challenge to develop a commercial application in WL, even though it can be and has been done. I certainly wouldn't regard the development of commercial applications as a forte of Mathematica, in they way that, for instance, symbolic programming clearly is. Which goes to the topic of this post - i.e. what is Mathematica for? And I would have to concur that the development of commercial applications is not one of those things - although I am quite sure that Stephen Wolfram and others at WR would strongly disagree.

My answer: “it’s an extension of one’s thought process.”

This is a bold claim for any programming language/technology platform, including Mathematica. Could one not make a similar claim about C++, Java, or Julia? I suspect that, unless you are a professional developer, probably not. Mathematica has certain unique features that make it a natural fit for the rapid exploration of ideas, in a way that certainly isn't true of most other computer languages that I am aware of.

I think that your description encapsulates what Stephen Wolfram may be aiming for: a kind of cognitive sand-pit offering a plethora of computational tools that provide a unique way to explore ideas, whether experimentally, graphically, or analytically, that will assist the process of developing them into functional algorithms.

POSTED BY: Updating Name

Yes, I completely agree. I used MMA to help solve a very challenging problem in stochastic calculus many years ago and find it invaluable for scratch-pad type quant work, or more complex research in mathematical finance.

POSTED BY: Jonathan Kinlay

I think the ability to do symbolic math is underrated. I'm a hobbyist programmer, and I once encountered a problem that really did require to do symbolic math. I really, really didn't want to do the calculations with pen and paper so I bought a Mathematica license. Since then, I've learned to appreciate the capabilities of the language and the elegance of its design.

POSTED BY: Lucien Grondin

I think one thing that Mathematica does well is solving differential equations including differential-algebraic equations with DSolve.

POSTED BY: Peter Burbery
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard
Be respectful. Review our Community Guidelines to understand your role and responsibilities. Community Terms of Use