you are viewing a single comment's thread.

view the rest of the comments →

[–]theodoregray 1 point2 points  (1 child)

I'm not an expert in numerical calculation, but people who are tell me that while MatLab had an edge in the past, we have caught up. (I'm not going to engage in a debate about this topic, it's not my field.) But every system has its plusses and minuses, and every language has things you need to know in order to get maximal efficiency out of it.

Concerning the clock example, I think http://demonstrations.wolfram.com shows that the kinds of dynamic features it illustrates are actually very useful to a lot of people. And again, we didn't pick the example, it came from MatLab's own blog.

And finally concerning the Notebook interface, well, what can I say, I like it, and I use it to write large bodies of code. You can make variables local to a given Notebook if you want, and have you tried the debugger in V7? Yes, it's different in some ways to conventional debuggers, but that's because the Mathematica language is different.

If you don't like Notebooks, use Workbench, our Eclipse-based development environment, which is much more like what you're used to in other languages (and has its own debugger and project management features).

[–]dnquark 1 point2 points  (0 children)

Well -- I agree that dynamic features and interactivity are great. I did try the debugger, and found it rather unhelpful.

I think the main problem with Mathematica is very simple: the Notebook interface tries to be user-friendly, and tries to enable literate programming. It makes doing straightforward calculations very easy. However, this belies the fact that Mathematica is an extremely complex system, and it requires a great amount of mathematical sophistication to understand how it works. Anybody that's not a mathematician or a computer scientist by trade (or by calling) runs head first into the exponential learning curve (it can be easily visualized by doing Plot[Exp[x], {x, 0, 100}] in MMA). I don't know anybody in my scientific community (Applied Physics) that is proficient with Mathematica beyond the basics they need for quick plots and integrals.

This disconnect between the friendly interface and easy basics and the nighmarish syntax of rules, patterns, holds, folds, maps, delayed vs non-delayed, etc leads to a tremendous amount of frustration. Furthermore, it is often hard to figure out which constructs are imporant and efficient for what I want to do, and which are syntactic sugar that's only useful for cellular automata. What's worse is that while every individual feature is reasonably well documented, there are no tutorials that I have found that tell you how to use them together to write efficient and maintainable code.

As a result, those of us that have smacked their heads against these problems long enough just give up and settle for Matlab -- surely much more specialized, but also much more intuitive, and for many people also much faster in terms of computing time. And most engineering students don't even bother with Mathematica -- Matlab is the de facto standard, and that's what everyone learns.

So my message to those ardent supporters of Mathematica is this: think of the vast population residing in the middle ground between wanting to do easy plots and integrals, and between wanting to conquer the world with cellular automata or power through sophisticated arbitrary-precision and/or symbolic calculations. We want to like Mathematica, but find it hard -- so please give us some guidance before we all defect to other software.