Python in the Scientific World
neopythonic.blogspot.com
neopythonic.blogspot.com
The other advantage of matlab is that it is more friendly to non-programmers. There are a lot of people that get lots of real things done in matlab due to all the semi-idiotic design features that annoy serious programmers. (Monolithic namespace, "everything is a matrix", one function per file, etc.) The huge advantage of "copy on write" is that you don't even have to really understand the concept of "different copies of the same data". That's a big hurdle coming to python-- a hurdle you might not want to get over if you don't care about programming, and just want to solve your problem.
It's like Python is a better programming environment than Excel too, but spreadsheets aren't going away anytime soon (it remains to be seen whether Python + OOo wins over the long term)
Mathworks could do a lot worse than bolt on an optional Python front-end. What people pay for Matlab for is the toolboxes, really.
Actually if anyone has any suggestions to address those issues, I'd appreciate it.
Matlab works very well for many disciplines and the shear amount of documentation make it very easy to use for people who aren't really programmers. My main peeve with matlab is that to write a function it is required to make a separate file however most problems that are solved with matlab don't really need functions in the first place.
SciPy/NumPy and matplotlib can be nice to use but if I need to get an engineering problem done quickly I can find functions that I need much quicker in matlab and the matrix as the central object is very helpful.
The problem of having many possible combinations as mentioned by lliiffee doesn't seem like much of a big deal. Surely a faculty could just specify their recommended setup?
> My main peeve with matlab is that to write a function it
> is required to make a separate file however most problems
> that are solved with matlab don't really need functions
> in the first place.
That's just where the madness begins! My current pet peeve is that you can't index the result of a function directly: x = 10:-1:1;
a = sort(x)(1:5); % illegal!
tmp = sort(x); % depressing :(
a = tmp(1:5);
f = @(x,i)x(i); % a little better
a = f(sort(x),1:5);
Every release gets a bit better, but there are still a lot of strange historical limitations.function rtn = foo(x)
rtn = bar(x) + 1
function rtn = bar(x)
rtn = x^2
My comment exactly. Having worked with Matlab professionally, how it survives when there's any plausible alternative is astounding. Well, not really, Matlab is pathological as a development environment but somehow does a good job of facilitating the back-of-an-envelop-magic of the physicists.
It's the crystal meth of numeric programming - a quick rush followed by a giant crash.
I think one of the major reasons for Python being that choice is that its syntax and "Python way of doing things" is really geared at making it difficult to obfuscate the code into meaninglessness. Clarity is always important in research.
Fortran isn't going anywhere, we're just hiding it in the background.
Also check out Sage: http://www.sagemath.org/
It's huge amounts of glue and connect-this-program-to-that-program-with-a-pile of regexes. Most of the number-crunching's in hand-optimized C or F90...
During my PhD, I designed/wrote a transition-state prediction algorithm in Python, hooking it up to atomistics codes written in Fortran. One of my colleagues, now one of my cofounders at Timetric, wrote a standards-compliant XML library in ANSI F95 - http://uszla.me.uk/FoX/ - which, believe it or not, is one of the rare cases where XML made life a lot better!
That doesn't mean it isn't fun, but it's a lot less clean than you might think.
Building a convincing baseline is hard. Which means that it is difficult to show your approach works in general
Of course, I hand-wrote a lot of my NLP algorithms in Perl, back in the day. Now that's a good use of a time machine...