views:

356

answers:

4

I am an experienced C++/Python/Java programmer starting to write some Matlab code and I'm having a really hard time getting use to it. Somehow it reminded me of something I read on a random blog a while ago :

Closed languages owned by a single company without the resources to build out an ecosystem can and do fail eventually. Sometimes a lot. Sometimes completely.

I know there is lots and lots of great advantages coming with Matlab but what I'm looking for now is to know more about its weak points in order to avoid further disapointments.

So the question has to be taken quite literally : if you have both experience in Matlab and in medium/large scale software engineering, I'm interested to hear about what you think are the weak points of Matlab.

I understand this is a general and therefore tricky question but I thought some people might have interesting insights...

+1  A: 

Deployment is tricky - the dependencies are huge and compiling to executables hard to get right. I think matlab is more suitable as a concept developer / prototyping tool than for production software - unless you can install standard Matlab on your target platform.

disown
@disown - sorry for being completely off topic, but I love the GEM bee in your avatar! :-)
Lucero
+1  A: 

Deployment's always been my big beef with Matlab as well, the compiler doesn't work with all the toolkits. Generally I might use it for prototyping as per disown's comment and then deploy in some other language.

ChrisC
+5  A: 

I'd characterise myself as a software engineer (mostly parallel Fortran these days) with a reasonable amount (5 years) of experience with Matlab. Coming from software engineering I think the major deficiences you will encounter are:

  1. Matlab doesn't have very well developed facilities for structuring large software systems. If you are an adherent of OO then recent versions of Matlab might appeal, there are now OO facilities within Matlab, you no longer have to call out to Java (or have Java call Matlab). I haven't got deeply into Matlab OO yet, I'm not sure it answers any problems I have so I can't comment on them other than to say that they look like a late addition to me. Which, of course, they are.

  2. As a development platform Matlab is deficient in comparison with the kind of facilities that IDEs such as Visual Studio or Eclipse have. The editor is OK as an editor, but it doesn't provide much help when refactoring. There's no integrated source-code control, nothing like a project browser, not much in the way of intelligent code completion and the like. As a Fortran programmer the lack of these doesn't bother me at all :-) but more sophisticated developers might miss some of it.

  3. I find Matlab's data structures (not just the ones they call structures, but all of them) a bit clunky. In particular you have to go to OO to do dynamic data structures. I guess dynamic data structures are outside the core of what most Matlab developers work with, but as a software engineer you may miss them.

  4. As @disown has already pointed out, deployment is a bit of a mess too.

Having said all there are signs that Matlab is becoming more suitable for use in a production environment and getting away from being strictly for prototyping or small-scale development by non-developers. For example, the Parallel Computing Toolbox is, I think, a very good implementation of a system which does for parallel Fortran what Matlab originally did for Fortran. Sure, it can be expensive to deploy Matlab on a cluster but that's only money.

As to the point about Matlab being proprietary, and therefore closed. It's not something that bothers us tremendously from day to day. If The Mathworks collapsed tomorrow, and I don't suppose it will, we could continue to run Matlab for a couple of years while we lined up a replacement. And I'm sure that if the Mathworks did collapse then there would be a rush of companies bidding to sell us a replacement.

High Performance Mark
OO are a late addition, indeed. However, most of the code that is internally rewritten is rewritten as OO, so over the next few years, I expect OO to penetrate Matlab more and more.
Jonas
A: 

I only took a semester of Matlab, so my insights are a bit limited, however, I am now a software developer having written most of application in Java & Coldfusion talking to an Oracle database. I look at Matlab as a specialized language that can help analyze and calculate fast sums of numeric data. I wouldn't use Matlab for much other than to help solve mathematical or scientific problems.

Jay

related questions