I think Mathematica is good for writing computational essays. Stephen Wolfram has a blog post on this.
|
|
|
Every language is an algebra.
|
|
|
I agree that Wolfram Alpha is becoming indispensable. I think Wolfram Alpha is used by math students, math teachers, science students, and science teachers.
|
|
|
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?
|
|
|
I am a Wikipedia editor and I think Wikipedia is a good reference.
|
|
|
The universities I'm familiar with have site licenses, typically at the department or laboratory level. Also, the Mathematica pricing for students appears in line with textbook prices from my perspective. The main hindrance I see for students is with department level inbred thinking that community-based free software is better in all regards. However, in biology these projects have become the largest source of research errors in modern history: http://wireilla.com/papers/ijcsa/V12N4/12422ijcsa01.pdf
|
|
|
Maybe it's different in your country. I am in Germany. And I am not only talking about students in maths or engineering, but social and many other sciences that have at least to do much with statistics and probabilities.
|
|
|
I'm aware of research units in university social sciences and liberal arts with Mathematica installations.
|
|
|
A Wolfram|One Personal licence for Student costs EUR 333/Year (!). This is for one user, two installations. Euros are about the same as US dollars. This is a price never acceptable for students. Unless they have rich parents.
|
|
|
What about the cost of a Mathematica (desktop) student license in your country?
|
|
|
The prices for student Mathematica desktop licenses in Germany: 
|
|
|
Given the prices of textbooks, I believe that is very reasonable.
|
|
|
I reviewed again the German prices for Student's Wolfram / Mathematica. I found three products/licenses for Students:
 They range from 104 €/Y to 333 €/Y. The cheapest one does not include the cloud (which probably is not very important, since everybody stores and synchronizes their files within other clouds, namely OneDrive for Windows users). I could not really tell the difference is between Mathematica Desktop (181€/Y) and Wolfram|One Personal (333 €/Y) (I have the latter, but - strange enough - for 271 €/Y). I don't even know what the difference is between Mathematica and Wolfram Language. I look at "Mathematica" as just the former name of "Wolfram Language" and abbreviate it as "WL". Putting it all together, possibly a student could live with Mathematica Desktop for 104 €/Y. "Possibly" because I assume that this does not include any product upgrades which would make it pretty useless. If that is true, he would have to pay at least 181 €/Y, possibly 333 €/Y.
|
|
|
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.
|
|
|
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.
|
|
|
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.
|
|
|
I think one thing that Mathematica does well is solving differential equations including differential-algebraic equations with DSolve.
|
|
|
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.
|
|
|
I had no idea! Is there a site you could point me to, in order to get a better understanding of the application?
|
|
|
Do you have any references for that? I'm curious.
|
|
|
There is a video of the making of Pirates of the Caribbean, although it's been years since I watched it. As for references to specific sites: that is a matter of intellectual property.
|
|
|
Hi George, thanks for taking the time to comment in detail. You have plenty of relevant experience with WL and have come to some clear views as to its strengths and limitations. First, I agree with this comment:
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.
I also largely agree that:
The notebook interface is great for this type of investigation and interactive exploration. However, it is rubbish at making stand-alone apps.
But WL is not completely rubbish at production systems. I am aware of at least one product, which I believe was developed 100% in WL that works extremely well, even by the standard of a production environment. I, too, have produced a small WL application that has shown itself to be very robust (although it's bit of a cheat as its just WL wrapper for a C++ system, really). I also struggle with this view:
It is also far too hard to do computer-science or complicated programming.
I've written some pretty complicated programs in WL - not in the sense that developers typically mean, which often just refers to tens of thousands of lines of code related to a UI for example, but in terms of core mathematical, statistical and econometric concepts, which (in my view) is much more important (and complicated) stuff. Yes, WL is a large ocean and for the new swimmer it can appear confusing and intimidating. But is not that hard, because of WL's nature as an interactive, functional programming language. The trick is simply to start by formulating some small component of the system you want to build, test it interactively to ensure it works as intended and then move on to the next component. Then you string all the components together, one by one. I think the difficulty is that in languages like C, Fortran, Python, etc, the structure of the language often dictates a single, obvious way to tackle a problem. WL's diversity and flexibility means that there are often multiple plausible approaches one could take. In WL, I often spend ages thinking about which method might be best and experimenting with alternatives in order to arrive at the best solution. Sometimes, as I do that, I feel I am wasting time - but this is usually more than made up during the implementation stage, which tends to progress much faster if I have spent time at the outset thinking more deeply about the problem I am trying to solve. Finally:
- Fix the bugs.
- Market Mathematica (Wolfram|One, etc.) for what it does best -- interactive computation.
- Fully implement the Wolfram engine
Perhaps as you say the solution to the challenge facing WR is not to try to "fix" MMA to enable it to do production work, but to focus on the Wolfram engine instead...
|
|
|
Perhaps as you say the solution to the challenge facing WR is not to try to "fix" MMA to enable it to do production work, but to focus on the Wolfram engine instead...
Exactly. Of course, the Wolfram engine, as I understand it, is mostly the Kernel, plus some bits that ended up in the front end for historical reasons. So, it really isn't focusing on the Wolfram Engine as a separate project, but making sure that there is functional parity -- as well as full support for native hardware. An interesting test case will be whether, as part of the port of the Wolfram Engine to Apple Silicon, it will also be available for iPadOS. If this turns out to be the case, then I can see a lot of apps that use the Wolfram Engine, but which use a custom UI. One of the issues (among many others) with porting Mathematica to iPad is the need to make the UI for the iPad version as close to the desktop as possible, a formidable task given two fundamentally different design principles at work. I want to re-iterate that Mathematica and its notebook interface is perfect for a wide range of applications and probably is the best in class for the vast majority of Mathematica users. But it should not try to be all things to all people: the best hammer in the world is not much use if you need a wrench.
|
|
|
In fact Wolfram has an embeddable solution for iOS: It's called CDFKit and it was presented many times in Wolfram Technology Conferences by Rob Raguet-Schofield and Jason Harris. CDFKit can be integrated as an iOS-Framework in Objective-C or Swift projects. The availability of CDFKit seems to be bound to a purchase of an Enterprise Version of Mathematica (which is costly) and maybe a special contractual arrangement (to publish/distribute a certain number of apps). This is of cause way too complicated: availability and usage should be as easy as free Wolfram Engine. I agree what was said earlier: Apple Silicon (CPU, GPU, Neural-Engine) should be exploited and optimized much more for special tasks as AI, ML and -- if possible -- general compute. Maybe CDFKit could be adapted also as a "lightweight" Wolfram Engine for macOS. It would be quite easy for Wolfram Research to develop a similiar "educational app" like Apple's Swift Playgrounds for iPadOS. A mini-REPL on the left with WL syntax coloring and CDF-Output incl. DynamicModule/Manipulate on the right (using CDFKit). This would be a much better experience than the Wolfram Cloud App. The ultimate question remains: Where is Mathematica for the iPad?
|
|
|
I think the complaints about cost are misplaced. Wolfram products are in high demand and so I don't believe the price is going to come down.
|
|
|
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).
|
|
|
My thoughts on this topic, besides that it should recieve more public discussion, are twofold. First, I am not sure whether I will buy Mathematica once I exit academia. As long as I have a 'free' license though, I'm hooked. I think both mathematics and computer science students have a hard time approaching MMA even though it has tremendous potential to benefit both kinds of people†. I like to tell them that MMA is the worlds best software rapid prototyping tool; or when I'm being cynical, that MMA is both good for nothing and good at literally everything††. Frivolous yet powerful things are often the most compelling and fun... Second, can MMA ever have a practical use†††? I think besides small niches, there is exactly one possibility. I haven't played with it's C code generation very much, but it seems like it's mainly limited to producing 'zombie routines' that must hook into a kernel. The symbolic nature of WL admits, for instance, a search over all possible algorithms to achieve a task. I think a richer library of code generation tools/examples plus an expanded code generation interface (i.e. x11 calls, various windows dlls; think of existing gpu and ffmpeg functionality) could start to make WL useful for 'actual code development'. †In many lower division math classes, the entirety of homework can be automated in MMA. Document scanning, equation parsing, equation solving with steps, typesetting and printing. Literally the whole process: it's a thing of beauty. Applied computer science students, once relieved of worrying about the nontrivial trivialities of modern software, can appreciate the beauty of theory. ††Good for nothing in that it's useless for producing anything dynamic (i.e. production software), and good for everything in that it's capabilities are wiiiidespread and richly interconnected and as a result can produce amazing static visualizations, sounds, videos etc. Most academic publications are entirely static--most of scholarship is just prototyping ideas--such that MMA is the perfect scholarly workbench. †††Again, practical in the sense of providing a directly valuable service--there's some economics word I'm looking for. One might say I'm asking for the well crafted code that goes into the kernel to be freely given up. Instead, I'm suggesting that the symbolic power of WL could be suited for automatedly writing lots of code--I would only be able to give examples if I were to embark on this as a project.
|
|
|
You make some good points but maybe your premise is wrong. Is Facebook dying? ![enter image description here][1] Google trends might be deceiving. As a frequent WL user I never search for WL! I think the WR is addressing many of the isssues you mentioned:
creating standalone software - Wolfram cloud and WebMathematica --
WL add-on for Excel --
etc.
I do agree that some applications need more finishing and polishing. As an Engineer I appreciate the addition of FEA to Mathemetica but it still needs a little more. The statistics capabilities are tops but why not add design of experiment capability. The presenter notebooks are fantastic if only I could use my custom theme background images like power point can.
Nevertheless Mathematica remains to be my preferred tool to solve complex problems symbolically and numerically, simulate systems and present results.
|
|
|
Hi Kay, yes indeed it might that the premise is wrong (and in my original post I gave one possible explanation for the downtrend that is innocuous). In this case, however, I think that perhaps the chart for Facebook accurately reflects the slowdown in usage growth of the platform: 
Source: Statista So, while it certainly doesn't mean Facebook is dying yet, it tells us that growth is slowing, which may ultimately mean the same thing. In term of your other points, I think we are saying the same thing: Mathematica has come so far as to be considered excellent in many fields, but seems to lack the last x% of functionality to render it truly outstanding (like design of experiments in statistics, in your example). Perhaps that is by design. A rational argument might be presented along the following lines:
Usage growth Mathematica is slowing. We (i.e WR) can't reverse that trend by providing more functionality to existing users who are already committed to our product. We have to find new users and bring them on board. To do that we have to provide new functionality that will appeal to potential users who haven't tried Mathematica before. That argues in favor of adding more breadth to the product scope, rather than more depth, beyond a certain level.
If this argument were to be accepted, it would mean that WR would be constantly developing functionality in a field up to a certain level - typically below what is required by a professional at the forefront of the field - before abandoning it to focus on developing new functionality in other areas. It seems to me that WR needs a "finish the job" Tzar, whose function would be to identify the critical functionalities missing from key subject matter areas and with the authority to prioritize them for development. In many cases the gaps in necessary functionality could be filled with a handful of new functions. But for some fields (e.g. machine learning) the list would be very long indeed.
|
|
|
Philipp, Thanks for your thoughtful input. One can only hope that someone at WR is paying attention... Perhaps the single biggest shortcoming in Mathematica, compared to, say, Matlab or Python is in regard to deployment in production. I have developed a couple of production systems IN WL, but my sense in each case was that I was pushing the envelope in terms of Mathematica's core capabilities. I always had to be ready to handle bug fixes and crash-recovery scenarios. Unlike other languages, which also had their fair share of bugs and crashes along the route to deployment, there never really seemed to come a time when Mathematica could be expected to work seamlessly - there always seemed to be another problem waiting in the wings. Similar systems developed in C#, C++, Python or Matlab would always (eventually) get to a point where they were reliable enough to deploy in a production setting, with a reasonable expectation of reliable performance. But I can't say the same for systems I have developed in Mathematica. Now, it could be that this is just my lack of experience/expertise in developing production ready systems in WL. But I also think that it is perhaps one of the key limitations of the language. It's not to do with the language being interpreted - so are Matlab and Python - but some other aspect of the language architecture (e.g. memory management) that renders it unsuitable for deployment in production. I wish it were otherwise; but I can live with that limitation, providing I know it exists. In any case, while the title of the post is about what Mathematica is For, it is perhaps also useful to produce a list of things that Mathematica is NOT suitable for, which from my perspective would include: 1) Anything that can be done more easily in Excel 2) Anything requiring deployment in production What about other users' experience? Can anyone else offer an alternative view of Mathematica's capabilities in relation to development and deployment in a production setting? Are there any other limitations you see Mathematica as having?
|
|
|
I recently spent almost two weeks to install keras(the most star count deep learning framework on github) to my gcp compute engine linux debian machine, keras now bundled with tensorflow2, only can run inside docker container, docker itself is cloud native technology, and I also spent great portion of time to install the gpu support in docker, now everything seems ok to go. The Capability to package app inside docker to run seems the way to go in cloud era.
|
|
|
Hi Philipp, Wolfram Application Server was announced today. Perhaps it will address some of the issues we face with deploying and supporting WL-based applications in production environments. There is no mention of pricing / licensing but I suspect it will likely be out of reach for most startups / small companies.
|
|
|
Hi Rohit, Thank you for the information. I will take a look at it as soon as there is a trial version available. There was also a presentation about WAS at WWDC 2020. Hopefully it will be easy accessible => pricing information available online without contacting sales, trial license for download, …
|
|
|
Hi Kapio, I know about redmine. Actually I am a heavy user :) and it is definitely a step in the right direction. Direct contact with QA and sometimes with the developers helps a lot. Still what I would really appreciate is that development cycles are dedicated for bug fix only releases like version 12.1.1. Just polishing the existing stuff. There are also a lot of things fixed in regular releases but because of the new features almost always some regressions end up in the release.
|
|
|
I think Mathematica is far behind Python. Since I have used Python, I seldom use Mathematica.
Python is much more powerful than Mathematica in data processing.
|
|
|
Wenguang, I happen to agree with you. But what would you say are the specific data processing capabilities that Mathematica lacks, or is inferior to Python, from your experience? Can you give some examples?
|
|
|
@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
|
|
|
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.
|
|
|
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.
|
|
|
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
|
|
|
You mention using your RPi to access Mathematica remotely. But cant that be done just as easily and more effectively by accessing MMA on your PC via remote desktop when you are travelling)? Is there something specific about the RPi implementation of MMA that makes it more accessible for remote work?
|
|
|
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.
|
|
|
Reply to this discussion
in reply to
|