I’ve been working with Mathematica quite a lot recently, and while it has some really nice features like the Manipulate operator which lets you create interactive plots or anything in a single line, it has a few major fuckups in my opinion. So allow me to rant about my personal top three of them for a bit.
Place 3: Shared data among notebooks
All data among all currently opened notebooks is shared. Implicitly. Without namespaces. Thus, it’s almost impossible to have two independent documents open at a time, because there will be name clashes almost for sure. And because of the sometimes non-existent or not very helpful error messages, it can take you quite a while to find out that the function you defined in the line above was overwritten by some completely unrelated document which you edited in the meantime.
This is just a question of use cases, in how many cases do I want to import data from one document into another, and in how many don’t I? Why not just have something like namespaces, or an Export or Import function? Or just the possibility to turn of this share feature altogether? I don’t want it.
Place 2: Brackets
Mathematica uses a whole lot of square brackets . And if I say a lot, I mean a lot. Statements which have five or six of them closed right after each other are not uncommon, you’ll even find plenty of them in the “Examples” of the documentation. What’s the problem? Well, there’s no bracket highlighting. It highlights them if they’re mismatched, but often enough they’re matched but it’s still not what you want. What’s so difficult about highlighting the matching opening bracket if I’m on the closing one with my cursor?
As if that wasn’t bad enough, they chose “[[ ]]” as the array access operator. So if you want the first element of a, you write “a[]”. Holy shit. If you do things like this, you absolutely *need* bracket highlighting. Period.
And the winner is: The “undo” feature
In Mathematica, you can undo one operation, and there’s no redo. Let me repeat this: You can undo exactly ONE operation, and there’s NO redo feature at all. Wow. They managed to create an application which is worse than Microsoft notepad in one point, and that really means something. Even the most basic usecase of undo — I type a line, hit two wrong keys, and hit Ctrl+Z to undo them — is broken by this unholy implementation, because it’s likely to undo your typing the *whole line* or so. And you can’t redo it, so you have to type it all over. So you better don’t use it at all.
The reason for this seems to be that it can be complicated to implement a proper undo for notebooks which are fed with dynamic data. Well, I don’t care about that. I just want to undo what I typed, I don’t give a f*ck about the output (which, in almost every case, can easily be re-created from the input, even if it’s lost in the process). I’d also be fine with a warning dialog or anything. It can’t be difficult to find a solution which is better than this one, really.
Fact is: There’s no valid excuse for not having a proper undo feature.
But, to say something positive in the end: Their linux port is okay. It has an installer which works, and overall, it’s not painful to use under Linux with its Qt based interface.