Simple, basic improvements that would make Matlab so much better.
This was written at the end of 2006, to some division of Mathworks.
See also the main matlab page of this site, for parallel pages.
Matlab has many maths functions, as well chosen routines or as well
written m-files with good references; it has also some clever and
useful extras such as simulink and a quite handy (in concept if
not in responsiveness) GUI nowadays. At its core it has a lot to
offer, which I suppose is why we keep using it in spite of the
following gripes.
BUT, in spite of all the new toolboxes, parallel computing and so on
that is always advertised as coming out, matlab has and has had some
enormous bugs and lacks in the basics. These make it very annoying to
use and have wasted many hours (actually, weeks) of my time.
I am particularly
annoyed at how so little seems to be done to fix these or to avoid
them. As soon as a current busy-period is over I shall try hard to
move over all my work to "SciPy" or another Free program. I mention
the "Free" bit, as the dependence on a single company to fix the bugs
in its proprietary software is the particular problem with using matlab.
Update: I've still not got round to this, two years later....
Some specific points of annoyance:
-
Java based everything: this doubtless makes it easier for _you_ to
write for multiple platforms, but it seems to make it annoyingly slow
and starting and at general screen updates. Nothing other than
java-based GUIs has ever been as sluggish as this that I've noticed.
And why matlab should have needed so many seconds to start and so much
RAM just for a GUI, ever since the v5-v6 transition, is still amazing
to me!
-
Bug: save button on figures overwrites e.g. a
xxxx.fig file with xxxx.eps or other format,
depending on last-used format: fixed after three half-yearly releases
and several complaints from people I know; hours wasted just in my
department; matlab support at one point defended this behaviour as not
a bug.
-
Figure save dialogue still awful: if one types "save as" then
modifies a filename to .eps instead of .fig then changes the type to
"EPS", one hardly expects the name to be automatically changed back to
.fig. Look at almost ANY other program (e.g. xfig) for the obvious
RIGHT way to do it: changing the type changes the extension to the
appropriate one and preserves the basename!
-
Figures can't be printed by "print" button in versions ~7.1,7.2, but
fixed after a year or more in 2006b; the bad period was such that they
came out much too big with
-
No proper SMP support: people working with long simulations have now
easy access to multi CPU machines, and there exist already many free
routines for using SMP capability: but the most matlab seems able to
do is to run parallel _jobs_ on multiple machines (or processors): why
not start properly and begin with SMP before thinking of the special
cases where there are multiple separate jobs to be done (see
mathematica!).
Update: yes, from around 2007b? SMP potential; but rather
late, really, compared to others like Mathematica..
-
GUI is heavily single-threaded - running something in the command
window means no opening or modifying of other figures, m-files etc.
Even some backgrounding ability or multiple command lines would be
good. Matlab being so excessive with resources anyway it's hardly
reasonable to open another whole matlab instance just to play with some
figures while running a new calculation. Why not allow all other parts
to work even when doing calculation. Goodness knows, there are only
about a dozen threads shown for matlab!
-
Waiting for user input (input command) in a loop seems to make 100%
cpu use: power-wasting, noisy, annoying to other processes, etc. etc.,
and highly incompetent; support told me that "it's fine - expected -
your computer will sort this out and give CPU to other programs"; no:
the system will _share_ matlab's wasting of resources with other
programs' attempts at serious use. It also wastes electricity (e.g.
see IT equipment
power consumption, at different loadings).
-
One can't use "Multiselect" "on" in uigetfile chooser (c. 2007):
have to "work around" with not using native dialogues - wastes lots of time working
this out for all of us
-
red messages about java errors streaming down the screen and telling
me to restart matlab, at various times when doing quite normal tasks
(particularly when clicking through the pwd subwindow) (2006/2007
was particularly bad for that -- it's got better -- but it shouldn't
have been bad to begin with if properly checked).
-
Mouse-hovering to see variables in the mfile editor gets them wrong if
one looks at a function but has similar names in the workspace: a
well-written implementation would show nothing
or better still would be able to remember variables at least from
functions that have had errors (this would save the need for insertion
of debugging points, etc., particularly useful as the execution up to
that point may take much time).
more, more, more - it's just really annoying that with so many good
features matlab doesn't get debugged properly for many basic things. I
have several colleagues and associates in other places with similar
feelings. That is why we recommend people strongly against matlab,
while pointing out some of the advantages over the competition that in
some cases may make it worth the struggle (even if the large cost is
ignored, the problems often make other programs preferable!).
I'd love it if you'd try really hard with making the (solaris, linux -
that's all I use) versions actually work properly and neatly in all
these little and big details. I'd have thought a good start would be
to have several of your people who work in UI development, algorithms,
and support, to work only on the unix platforms, in order to have a
chance of meeting platform-specific matlab bugs before they get into
the wild. Such users would have to have the right attitude to user-interaction,
rather than the ``bow to it and fit around it'' idea that several
support people have shown.
A quick-starting, responsive, highly multithreaded, SMP-capable desktop
environment, with nicely working finesses and helpful error messages;
and bugs/support people who reliably acknowledge and quickly fix (next
release, update available for the desperate) bugs.
What a dream -- but we're far from it.