I use Mathematica frequently and, within the niche that it serves, it is starting to remind me a lot of Excel.
Both are commercial software, have a low barrier to entry, are powerful enough to run the software for a nuclear power plant, have enough footguns to make this a terrible idea, and are so overused that it might be happening anyway.
But I do not think we will get rid of it any time soon.
The error handling is atrocious. The language isn‘t just untyped - everything that‘s not defined is symbolic, and builtins will silently operate on symbolic expessions even if you don‘t expect them to. Consider this:
myfunc[x_] := {2*x, 3*x};
myfnuc[5][[1]]
Without the 'fnuc' typo, this would create the list {10, 15} and take the first part, giving 10. With the typo, it returns 5 without warning. Why? myfnuc[5] is now treated symbolically, and the first part/argument is 5.
A similar problem comes from functions like Integrate, which become symbolic when Mathematica doesn‘t find a solution. So instead of a number, you might randomly get a symbolic expression. If you were trying to do a complicated computation with the result, this might now produce a symbolic result which is too big to fit your memory, filling up all RAM before the Mathematica kernel crashes.
Multiplication with multi-dimensional arrays comes to mind (not unlike numpy, actually). Rare bugs when simplifying symbolic expressions. Unconventional definitions of special functions. Probably several others that I am forgetting now.
More importantly there are lots of possibilities for disaster caused by the lack of typing, and complex Mathematica code quickly becomes impenetrable. Oh and version control systems are all but useless for the main ".nb" file format. Again, just like Excel.
I think I mostly like that element of NumPy’s design. 2D arrays are in general not matrices. Images, for example, do not have matrix multiplication semantics.
I guess when you have a software package named "Mathematica", mathematicians expect to be able to take their math and transliterate it easily. Making them specify the "Dot" function would irk them.
I don't know the motivation of the decision, but "ElementwiseProduct" is harder to type, and still has a lot of use cases.
So, still like a 100x improvement in the areas you're concerned with, compared to using any standard programming language (to either re-implement the same stuff or use third-party libraries)?
I mean footguns in "Multiplication with multi-dimensional arrays"? That's a problem with Mathematica as opposed to what? Implementing it yourself? Using a third party library for that (that you have to also find and assess it's doing the right thing - which apparently numpy also doesn't as you say). Another specialized tool (and wouldn't that just have it's own footguns)?
If you just said "it has its set of caveats that you need to be careful about" that would be understandable.
But your wording/tone implies that Mathematica is somehow worse, and using it is (your words) "a terrible idea". So, what are those wonderful alternatives that don't have the same and much worse issues?
Battles have been fought over dumber things. Writing system-critical code in Mathematica is probably "a terrible idea" for most applications that don't make enough money to justify paying for a license. For the people who do pay for that license... don't they reserve the right to complain about "multiplication with multi-dimensional arrays"?
Neither of you have to be wrong, but insisting that Wolfram isn't liable for the situation isn't right. They built the moat, now they have to deal with people falling in on both sides.
Indeed. I think they're experimenting with moatless because a worse thing than people complaining about your language/software is people not using it at all.
As a random computer engineer, I find using mathematica to be extremely convenient when trying to grok a problem or lay out a first attempt at a solution. Of course it isn't really helpful when dealing with glue issues (i.e. making software work together) but it is really good at letting you experiment at a high level and put together an algorithm to process/interpret/transform/generate some data.
I say it's good for high level experimentation because basically every function/transform/operation/solver you could ever need is present in the standard library [1] and stuff "just works". IMHO it's not really something you'd want in production but it lets you get an MVP for a given problem/solution working faster than any other tool I've used and all while rarely needing to even consider a 3rd party library. You can then focus on just mapping that MVP to whatever language/library/ecosystem you are actually working in.
It used to be the big differentiator was the ability to do symbolic math and actually solve equations. Maple could also do it, as could the TI89, so I never really got into it. It was just a huge difference from Matlab.
But if I have an actually nasty equation to solve, like a system of differential equations with erf functions or something, I do actually go to wolfram alpha for help. It happens more often than I'd like, it's especially nice that no matter how nasty the equations you can still use units.
So, it can express an average Rosetta Code non-math task in ~180 bytes, compared to Python, ~270, or Java, ~420. I guess this is because of its vast libraries of "batteries included".
Where it all falls apart is sharing. Nobody can run my creation, and even Mathematica Home Cloud is $194/year, which I find pretty steep, being used to free & libre software.
Monetizing is a whole different story, with commercial licenses starting at $1620/yr, which I could only justify if I already had a team wanting to learn the language and a large-ish profitable business service whose source code I wanted to convert to a locked-in solution for some reason.
I bought a one time home license for like $200ish a number of years ago and it still works, and will likely work forever. I have transferred it between computers and even OSes over time. Worth it. I pay as much for JetBrains annuallt and way more for the Adobe stuff I use maybe twice a year.
A permanent home/hobby license for Desktop costs $387, as far as I can tell. It only allows 4 cores being used, and for more you need to buy Core Extensions.
They do make some attempts on their web site to steer you into the yearly subscription, or into buying a yearly support contract if you do buy a permanent license, so some folks might not realize the permanent licenses are still available without a support contract.
They also run regular sales on all their products. Pi day is coming up.
A good niche for mathematica is finance: type in your equations, tell it what "type" your variables are, let it solve them. Let the machine get it right.
I feel about this the way I feel about "free" Windows when you buy a computer from a mainstream retailer. It's not worth the price, it's not a gift, it's just an adverstisement and a gateway to the walled garden. I have a normal Mathematica license and for the few times it's the right tool for the job I find myself reaching for something else anyway. I can almost always get things done with FOSS (usually within the python ecosystem) and I don't have to think about activations or Mr. Wolfram.
Linux distros are not by any means walled gardens. You can always install new software by building it from source or often from just downloading something someone else built (as long as it's statically linked or you have the shared libs).
Windows is also not a walled garden but to a lesser degree than Linux. It is far harder to get a "standard" build environment up for windows simply because Microsoft refuses to distribute the UCRT (or VSRedist) build libraries in a form that doesn't require manually digging through installer internals or setting up Visual Studio. It can be done for free & legally but it's a significant pain in the ass. Regardless of how annoying it is, there is no financial/legal barrier to building software for windows and you can trivially install 3rd party software or even execute it without installing.
Android I somewhat agree is a walled garden in practice (certain features are limited to gApp/play store apps only and setting up 3rd party play stores or apps is annoying) but by the simple fact that you can build apps for android or install them without any financial or legal barriers, it can't realistically be called a walled garden (maybe a hedge maze might be more accurate).
MacOS isn't entirely a walled garden despite getting pretty close (kinda like a worse dev/install experience from windows + *nix).
iOS however is 100% a walled garden.
Point being that out of every OS you mentioned, exactly 1 of them qualifies and the rest do not (despite having anti-user/anti-competitive practices)
Linux quickly becomes a quagmire of impracticality once you dare to step outside of the distro-provided or -recommended repositories, so much I would argue it's functionally a walled garden at that point.
By contrast, on Windows you can install, run, upgrade, and downgrade whatever you want whenever you want however you want without sacrificing practicality.
This is among the most insane mind acrobatics that I have read in many years. Twisting meanings to make one of the biggest straight jackets among server and desktop OSes that I have ever encountered in my career sound like it's some kind of heaven of freedom is just outright disgusting. (edit: grammar)
> “one of the biggest straight jackets among server and desktop OSes that I have ever encountered in my career”
Speaking of insane mind acrobatics, it’s like you’re arguing a parody of windows you read on slashdot twenty years ago and have never encountered it at all.
This isn't a totally invalid point. There are so many thousands of packages and options and the learning curve can be very steep, so much so that one 'self-fences', puts up their own guard rails. So something like Windows which is walled, but a very broad pasture, seems unwalled. Whereas, linux/open source, can seem like a dangerous jungle and requires one to build their own wall.
Kind of like old zen parable about how to control cows, give them a wide comfortable pasture and then they behave, and never question the fence in the distance.
lxd init # choose defaults except use "dir" for disk
lxc launch ubuntu:22.04 my-ubuntu # or any other distro
lxc exec my-ubuntu -- bash
Clean, lightweight, full virtual machine every time that's much less heavy than Virtualbox. You can mess around in there as much as you want without creating the quagmire you speak of on your main installation, because it's a full, completely clean VM isolated away. Also lots of distros to choose from. Personally I find Windows to be super unstable once you've installed/uninstalled a bunch of stuff. Obviously, there's also Docker but sometimes you want a full VM to get a bunch of stuff working together.
Linux is far less of a walled garden in principle. And it seems a lot of people are assuming "walled garden" is a statement from developers perspective (no cost license or difficulty in developing for platform).
I think what you're saying though is that your choices and options are far easier and wider with windows as a regular user, than with Linux, and if so I see your point. I've been working with Unix at work happily for 25 years now, day in and out in the cli, yet I've always bounced trying Linux on desktop. It feels like a limited, difficult, thorny garden for most regular windows users :)
That’s not really a walled garden though. A wall is something out there to impede progress. Linux and Windows are not walled gardens, they are forests. A forest doesn’t necessarily have easy paths to every destination, some are far, some are just hard to get to. But there’s nothing artificial to prevent you from figuring out how to navigate through the forest.
Calling the inherent difficulty of things a “walled garden” removes any meaning from the term. I’m bad at picking up human languages, I don’t know lots of programming languages, I don’t know anything about overland navigation, I’m bad on MacOS and I’ve never used an Amiga, so is most of the world a walled garden?
A walled garden isn't just about developer lock-in driven by financial incentives. As far as the end-user goes, if the choices provided outside of the garden are wholly impractical it might as well be walled in practice even if it's not in theory/principle.
This feels like a rabbit hole argument. So, down the rabbit hole we go!
Let's imagine for a minute that using Open Source or FOSS also implies feeding back into the ecosystem. "Normal users" should be feeding back into the ecosystem somehow which then implies some form of understanding of that ecosystem. It can be bug reports (which requires understanding enough to post a coherent bug report), bug fixes (which requires knowing a little more), project leadership (which requires a different skillset and perhaps technical knowledge), monetary contributions (which makes the software less "free")
My argument is, "Open Source doesn't get you past tanstaafl." The work to use it still needs to be done by someone. If you want to be a user of it and the thing you want to do isn't on the already-paved/easy-path then you need to get someone to pave that path for you or you need to understand how to do it yourself. That's the nature of the beast and has nothing to do with being a "walled garden."
> Linux quickly becomes a quagmire of impracticality once you dare to step outside of the distro-provided or -recommended repositories
That’s not my experience with using third party repos and building third-party software from source on Linux. Heck, much of the time that I use Linux is fit software where I need to do the latter and it isn’t practical on Windows.
Your inability to work with Linux distros does not make Linux distros walled gardens.
Your argument would be equivalent to me claiming that the closed source nature of the average Windows software makes the software itself a walled garden. Except in the case of a Linux distro you are entirely free to modify it in any way you want.
The fact that more things work out of the box without much effort and with a GUI on Windows does not make Linux distros walled gardens.
And pretending that Windows allows you to install and uninstall things at will without any side effects is just naive and makes me wonder if you've ever actually used Windows that much. I've had more problems with broken windows installations due to incompatibilities between different versions of Microsoft development tools and frameworks than I have ever had dealing with issues with building and installing software on Linux distributions.
Neither Windows nor Linux are walled gardens in any reasonable definition of the term. A “wall” is a barrier constructed to prevent you from passing.
Windows and Linux are just forests or farms, or however you want to expand the analogy. That somebody hasn’t cut a path for you doesn’t make them a walled garden. Different paths have been cut for each operating system, and people familiar with the particular paths on those systems will have an easier time navigating the terrain. But nobody has constructed a wall. A forest is “functionally” walled off only to the extent to which the person doesn’t know how to navigate. This is not a property of the system but the user.
Go try disabling the telemetry on Windows 10 after each update. On Linux, you can compile stuff from source anywhere. Or even use pkgsrc on top of any distro.
You forgot the ./configure step which is the hard part.
For all but the most trivial of software this step is likely to fail, and often fail big and cryptically. Then you get to figure out what packages to install from your distro's repos to fix all these errors. It's even more fun when that dependency was never packaged for your distro, because then you get to install that dependency from source and repeat this entire process.
Oh, and I hope there's never a security update for any software you install from outside of the repos, because you'll never remember to update it until you need a newer version for some other reason.
> For all but the most trivial of software this step is likely to fail, and often fail big and cryptically. Then you get to figure out what packages to install from your distro's repos to fix all these errors.
In my experience, the vast majority of the time the installation instructions list the necessary packages for at least Debian-style and Redhat-style distros. Build instructions for Windows tend to be much worse. though if the software supports Windows at all, you are slightly more likely to have an installer or at least precompiled binary because build tooling availability and build experience is so much worse on Windows.
Windows is slowly getting more walled. For example, it’s not possible anymore to freely define file type associations in the registry. Windows only enables the user to do so via a very limited UI, which for example doesn’t allow custom icons, command lines, or custom groupings or forwarding of associations. Someone reverse-engineered the protection to defeat it [1], but it’s still a pain. Another example is that it’s almost impossible to change the UI look in ways not intended by Microsoft (which are much more limited now than 20 years ago).
To play Devil's Advocate, I can see the reasoning behind that. Malware changing file associations behind the scenes is a fairly common occurence. Hell, even programs you want occasionally change file associations without your permission.
So putting protections in place to try and prevent that is ultimately a boon for most users.
You don't have to pay anyone to sign a driver you write to use it yourself. With Windows you can write some software, but not all software. You have to pay Microsoft to sign drivers. The code that enforces that is the wall. No such code exists in a Linux. All is possible.
Just to clarify - this is main difference between Windows and Linux, and this is why Windows by definition is walled garden?
Actually, I think I'm ok with it. As far as I understand you don't need to sign USB drivers, and for other drivers signing is additional level of security.
Wine is just a few clicks away in most distros or go to https://www.winehq.org/ and follow the instructions there. It can run quite a bit of Windows software. I've just spent a pleasant few minutes playing 3D Pinball for Windows - Space Cadet,
I don't know why you were downvoted because it's a perfectly reasonable question. The answer is not really, or rather the last time I tried it wasn't easy to get X windows running properly so you were stuck with just terminal based programs but that was a couple of years ago. Now I have switched entirely to Linux I'll have to leave it to others to describe the current state of affairs with WSL and X windows
I haven't used it, but in theory it seems to be fully supported, with screenshots in the help article showing several apps running, and instructions (however short) laid out for various apps like Gedit, GIMP, Chrome, even Nautilus: https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-...
It seems to be as easy as installing a driver and then... installing the apps in the distro. That makes it even easier than Wine IMO.
To me, it seemed perfectly reasonable to call it the Windows equivalent to Wine but :shrug:
You have a point. Anyone can develop software for windows. It's not walled off at all. There are security prompts in place when you start doing unsafe things but you can pretty much do anything.
The only thing walled off is the source code but nobody is referring to that.
I think people are associating walled garden with closed source. This is not a consistent association because there is one operating system that is, in actuality, a true walled garden where the term fits:
iOS is a walled garden.
The characterization of the term here is entirely different from windows or Linux.
Thus the parent is also correct about his point. If you use a Linux distro exclusively with a package manager. It is effectively as if you are in a walled garden. It is just like using the app store on macos exclusively.
The fact it's free is really cool but the choice to limit this to Raspberry Pi is rather weird because Raspberry Pis are painfully slow (can't even navigate YouTube comfortably) and even fairly hard to acquire in the first place. They should rather make it free for all individual non-commercial tinkerer no matter the hardware they use. I believe this would ensure popularity sustainability and the raspberry-only way may turn out not enough.
I would consider this a great way to promote genuine Raspberry Pi over the clones but as long as Raspberry Pi demand exceeds the offer anyway this doesn't make much sense.
People did useful work with Mathematica on the computers of 35 years ago.
They had a tiny fraction of an RPi's compute. Maybe because interesting mathematics is more the product of interested mathematicians rather than hardware.
With Mathematica around for 35 years, there's evidence that it has a sustainable model with regard to popularity.
I knew real science stars who ran Mathematica on 486 with huge success. But that's a different story. This project targets hobbyists and kids educating themselves and this normally involves watching YouTube tutorials/lectures and googling information up. For some people this can be good and teach them patience, for many this will be an obstacle and divert them to alternatives. Mathematica is great but has keep the competition in mind. I am afraid it will decline heavily sooner or later.
... it was painfully slow on the original Raspberry Pi, but it is usable on the Pi 4. You probably wouldn't want to use it for serious work or even serious course work (e.g. post secondary), but it does demo the product and is fine for high school level math. The biggest hurdle is the startup time and, depending upon how patient you are, visualization.
Without a Raspberry Pi, at least you can use the wolfram engine for free [0] and integrate with your applications, although without all the benefits of the wolfram notebooks environment.
You should be able to view a YouTube video on a Pi 4 with enough RAM, while running Mathematica in another window. With the newer hardware the performance problems should only come if you try to use 4k video or something.
This has been a thing for a while, and if you have enough Pis, you can even run it on a clustered kernel setup - I did that a few years ago with 5 Pi 2 boards (20 cores in all): https://taoofmac.com/space/blog/2016/08/10/0830
You would be correct, which is why I don't own it anymore.
Doing it with Pi 4s would be interesting, but if I had to set up a sub-EUR 1000 cluster I'd go and grab 2-3 Celeron N5105 mini PCs, which would _in total_ have less than 90W consumption (although physically powering them would be a hassle - I was able to power all the Pi2s from a single Anker charger, which was great).
If you're more interested in learning programming, the underlying python libraries like sympy are of more value for algebraic solving, plus numpy and matplotlib for evaluating and visualizing.
IIRC, this has been the case for a while. I seem to recall getting a Raspberry Pi ~5 years ago which had Mathematica on it. Admittedly it was quite slow, but as far as I can recall it did work.
The Raspberry Pi is how I got introduced to Mathematica in 2019. I actually it for Advent of Code that year, which was difficult and frustrating but a huge learning experience!
Wow, did Freecell, solitaire, and Pinball in windows cause addiction to gambling in children?
That's how it sounds.
Me and brother were into RPis since 2B and always used Raspbian.
Never did we once even clicked on Mathematica, I know many people in the community who never clicked Mathematica.
Rpi also has a good Python integration, which is very well endorsed by the community and and obvious choice for many.
I wonder who paid who in this deal. Is free Mathematica used to prop up an OS no one uses, on boards no one can buy(for their normal prices). Or is it raspberry pi foundation taking part in Wolfram advertising? Mathematica is a very nice product, but it's expensive. They tend to "get" people by offering cheap licenses through universities. Then there is free and open source Octave. It is just as good for everything I used it for, but sometimes code for Mathematica requires tweaking before it could run on Octave.
Raspberry Pi Foundation gets another high profile and very desirable piece of educational software to include in their OS so it's a big win for them (and some of their users).
Wolfram gets a bunch of potential paying users when the children/college students/hobbyists get into the workforce and decide to use Mathematica in a commercial setting or pay for licenses of their own to use on their own more powerful workstations at home.
Looks like a win-win for everyone. I'm not really understanding all the negativity here. If it's because Mathematica is closed source, the Raspberry Pi OS image already includes closed source software like Minecraft education edition.
What exactly is the boundary between commercial and non-commercial use?
E.g. say you make an educational video that contains a portion of using Mathematica on RPI, and you could get ads income, is that indirect or direct commercial use?
What if you use it to compute dimensions of some woodworking art piece that you sell later?
What if you make a scientific or mathematical discovery thanks to it that you later use in some way to make money?
From the Rpi Mathematica bundle license agreement:
Permitted Uses and Installations:
Subject to the terms of this Agreement and Your acceptance thereof, WRI grants You a non-exclusive license to use the Product solely for personal or educational purposes on a Model A or Model B Raspberry Pi computer. You are also authorized to:
- maintain one archival copy of the Software on storage media; and
- author and distribute Computable Document Format™ (CDF) files consistent with any associated licensing terms.
Prohibited Uses:
All uses of the Software and other elements of the Product not specifically stated in the Permitted Uses and Installations section of this Agreement or otherwise set forth in alternative or supplemental license agreements or terms of use are prohibited, including, without limitation:
- directly or indirectly using the Product for commercial purposes;
- decompiling, disassembling or reverse engineering the Software;
- modifying the Software in any manner, except those portions written in the Wolfram Language and included as examples;
- distributing, publishing, transferring, sublicensing, lending, leasing, renting or otherwise making available the Product or any portion of the Software, including collections of data, except as permitted at https://www.wolfram.com/components for distributing Wolfram Language code;
- copying or allowing copying of the Product or any elements of the Product, except as permitted for the maintenance of an archival copy of the Software as allowed by the Permitted Uses and Installations section of this Agreement;
- allowing access to the Product by any user other than Licensee;
- removing any copyright, trademark or other proprietary notices from the Product;
- installing separate components of each Controlling Process or Computation Process on separate computers, with the exception that the front end of a Controlling Process can be on a separate computer from the associated kernel;
- using the Software for any illegal purpose or to create malicious programs, including but not limited to creating computer viruses and malware or denying computer bandwidth to WRI and its affiliates and users; and
- using a password, activation key or other means of accessing the Software other than as specifically authorized by WRI.
That's exactly where my question came from, specifically the part "directly or indirectly using the Product for commercial purposes"
Almost all the rest is about slightly different topics (I'm specifically wondering about using it for its mathematical purpose, not about all those other things that don't give math results like modifying, decompiling, distributing, archival copies, ...)
I wonder if you could run it on a Orange Pi board or Nvidia Jetson board (or perhaps even the Nvidia Grace arm CPU) as well or does it check for the RPi chip?
I toyed with trying to get it running on a Jeston Nano a couple of years ago. At the time, Raspbian was still 32 bit, JetPack was 64 bit, and running 32-bit Debian software on 64-bit Ubuntu was more of a pain than I wanted to deal with.
If it still ships with 64-bit Raspbian it might be worth another try, but I would not be at all surprised if it's somehow tied to the Pi.
They haven't made a 64-bit version for the Pi yet, and Mathematica is not a menu option when you setup 64-bit Raspberry Pi OS. The traditional 32-bit version is installable on 64-bit Raspberry Pi OS if you enable packages for the armhf architecture.
I wonder if anyone knows when the 64-bit version is coming? From Wolfram's point of view, keeping the binaries restricted to armhf might perhaps be taking the place of more onerous copy-protection or licensing features.
Owned a NeXT Cube (and later color station) back in the day. Mathematica came free. Was glorious, perhaps even more so back then. OTOH, I'm sure it did a lot less. OTOH, the baseline was so much lower.
You need it, not them. Python is the biggest threat to their vendor-lockin business model. Mathematica is so hard to use because they want you to invest sunk cost into learning the Wolfram Way.
And I think that’s very shortsighted of them. They could’ve had a big hand in AI/ML/DL considering how widely Mathematica was used in undergraduate programs across the world.
I got my first by signing up for a restock notification at `pishop.us`. I'm not doing anything heavy on it—`chrony`, `cups`, and dynamic DNS—but I'd always wanted a discrete (and discreet) small server for such tasks, and it was inexpensive and easy to assemble.
Did you have the full GUI running back then? I tried this in 2021 but couldn’t get the GUI to launch. It seemed like an expected graphics lib wasn’t available.
Both are commercial software, have a low barrier to entry, are powerful enough to run the software for a nuclear power plant, have enough footguns to make this a terrible idea, and are so overused that it might be happening anyway.
But I do not think we will get rid of it any time soon.