Programming, Software and Code

MATLAB wishlist

"Did I ever tell you", he said and then paused to glance at his computer screen, "how much MATLAB sucks?". He clicked his mouse once, then again, then a third time much harder. "Damnit!" His muted yell caught the attention of passers-by. "I'm going to do my dissertation on how much MATLAB sucks. I've got plenty of data already".

MATLAB has a number of great features that engineers and scientists can use to model systems, analyze data, and verify designs. What's great about it is that non-programmers can pick it up quickly and use it to solve complex problems. There is an immense library of builtin functions and optional toolboxes that solve most common problems, and creating a new simulation is typically as easy as cobbling together these existing pieces. Here are a list of features that I think engineers appreciate:
Now, I like MATLAB well enough, but there are a few issues that I have with it now. I've slowly developed a wishlist from my time using it. This isn't a complete list, just a few of the things that are on the top of my head right now.
I have been kicking around the idea for some time now of creating a MATLAB/Octave port to the Parrot VM. This whole wishlist of mine (except embedding FORTRAN, because there isn't a FORTRAN port to Parrot yet) could easily be implemented using that system. Maybe when I have some more time in the future, I'll work on implementing it. Until then, all I can do is dream.


does r2008a satisfy your request for better OO implementation? matlab has been multithreaded for a while, hasn't it?

I guess I haven't seen r2008a, I'm still using a classroom version of r2006a for my school work. I wasn't aware that there were any changes made to the OO implementation, so I apologize if my comments are outdated and incorrect. I'll have to look around and see what the new OO semantics are, if they have indeed been upgraded.

As for threading, I'm not aware of any ability to create multiple threads in M code. I've heard of various hacks that you could use to simulate a multithreading environment in M code, but it's not the same as native threading. Again, if this is something that's been added, I'll have to research it and learn more.

Thanks for the comment!

I was nodding in agreement about your OO gripes. Then I Andrew's comment, and I LOLed. I use r2009b and I am halfway to the asylum picking apart the docs.

I've been very impressed by the way Matlab has progressed in the last few years. Development, especially when it comes to improved language syntax and semantics has been very impressive indeed. They have improved their threading support, added improved OO support (we can argue about some of the syntax they chose, but we can't argue that it is OO).

I really should go back and write an updated blog post to talk about how most of my concerns have been met. However, the last version of MATLAB that I've personally used is r2006a, so I really don't have enough experience to do the kind of proper comparison that MATLAB deserves.

After this past afternoon spent writing a small matlab program that is completely OO (using their newest OO language constructs), I must say that Matlab still sucks. Yes, it is indeed truly OO in the sense you mean in your November 13 post, but the syntax is really nuts. Also, the documentation is still horrible, the user interface is still terrible, the environment still lacks mechanisms for efficient memory handling, and the built-in libraries still lack a reasonable naming convention. Plus, the environment keeps crashing on me! (I'm using 2009a for Mac/Intel).

I guess that's what one can expect from a company that has a monopoly on scientific computing.

I've never found the documentation to be too bad. But I suppose there is a lot of personal preference that goes into that.

You are right about the syntax, it always has struck me as being extremely idiosyncractic and contrary to popular convention. Of course, the M language was developed many years ago with a basis in FORTRAN and due to backwards compatibility issues they haven't been able to break.

Andrei, you said that Matlab sucks and that the OO-syntax is nuts. I assume you include the OO-support in your accessment.

Would you care to provide some examples?

/ per

MATLAB definitely doesn't suck. It's the industry-leading simulation tool for a reason. The problems with MATLAB are three-fold:

1) It has grown organically over time, adding features that scientists and engineers need.
2) Several language features are not exactly industry standard, as coders would understand them. Being different is certainly not a bad thing in itself, but it does put a large base of existing software engineers out of their comfort zone
3) The user base is pretty well entrenched. You can't just change MATLAB syntax without breaking huge amounts of existing software. They probably couldn't come up with a complete language rewrite (like Python 3000, or Perl 6) for the same reason.

MATLAB is certainly not bad. It is different, and different can be a little bit weird sometimes when you're not used to it.

This entry was originally posted on Blogger and was automatically converted. There may be some broken links and other errors due to the conversion. Please let me know about any serious problems.