You compelled me to investigate this language further. I’ve learned a lot. I’ve learned that it has real issues as a programming language.

This Quora question gave me a lot of insight:

I think Mathematica is a horrible, horrible programming environment. It does not even bother given line information about where it detects syntax errors. Perhaps is easier and more intuitive to use in a functional idiom but for imperative or object oriented development, it blows. Of course, it has other strengths.

and

I would say it is not a well-designed programming language, but I don’t think it was ever intended to be.

Trying to use Mathematica to write the kinds of programs we write with languages like Java, Python, or C++ would drive any programmer insane. Mathematica makes it very difficult to follow the traditional programming paradigms that make writing complex programs bearable.

and

The killer problem with Mathematica is that nothing scales. Symbols are global and there is no lexical scope, which does not scale. The rewrite rules are one giant global table called DownValues, which does not scale (particularly for parallelism). The libraries are mostly black boxes that you cannot improve upon. However, that is arguably not a problem because most people use Mathematica to write small scripts and not to write large software (although that is arguably self-selection).

and

Frankly, Mathematica is a bit of a mess under the hood. It’s quirky and buggy and hard to understand (I mean REALLY hard to understand), but it can be fun to use, especially if you are a nerdy kind of intellectual type like me.

…

Mathematica is a leisure-time tool, if you ask me. If you are seriously trying to get something done, something important, I don’t think it makes sense to spend all the time and frustration it takes to learn Mathematica. But if you like computers and math, and you have a year or two to spare, by all means, enjoy yourself.

…

Mathematica has improved significantly since I started using it, 4 years ago, in 2011. It is much less crash-prone, but still occasionally gets stuck somehow and has to be exited and re-entered.

I do not think it is any easier to learn Mathematica on one’s own, though, so my “leisure-time” comment is still true, with one clarification: I said it would not be justifiable to learn Mathematica for the first time to use in a practical application. I still think that. However, if you do somehow already know how to use Mathematica, it might very well have lots of practical uses in a real-world project.

and

I’ve not been using Mathematica long but I’m intrigued by what appears to be it’s lazy functional symbolic programming core.

As a professional programmer I’m horrified by:

- the munging together of mathematical content and presentation options (such as line styles) in the same functions

- that some options are specified with symbols and some with strings

- that some options are

namedwith symbols and some with strings- that arguments to functions with very similar forms can lead to very different behaviour (eg 1 vs {1} vs {1,10})

- symbols being global by default

I would not want to use this language as a general programmer.

Thanks for opening my eyes to this dubious programming language. It was a real education.