Brian Blais wrote: > Christopher Barker wrote: >> Sturla Molden wrote: >>> It is >>> also easier to write C or Fortran extensions for Matlab than for Python. >> Really? I"m not so sure about that -- I found mex file writing pretty >> painful. >> >> With weave, boost, pyrex, swig, f2py, etc, the hardest thing about >> writing extensions for Python is choosing which tool to use! >> > > I agree with Sturla here, up until Pyrex. Looking at the Python API, swig, > f2py, > etc. I found mex files far more straightforward. Mostly this is because of > the > (mostly) single datatype in Matlab: the double matrix. Having to do reference > counting in the Python API is a drag. It is a drag, but the matlab's way of doing things is totally broken, not simple. The Matlab C api is one of the reason why I looked at python in the first place. First, the memory management in mex files is unusable for anything non trivial (for example, what happens if you do Ctrl+C, but you are calling a function from a library which does malloc ? You're screwed; many 3rd party mex files crash when you use ctrl+C in matlab). Also, wrapping with ctypes is really several order of magnitude easier AND more powerful than mex files. One thing I use to impress people used to matlab is to translate mex examples using ctypes: instead of many lines of boring glue *in C*, a few lines of python
The other big drawback of matlab is the lack of data structures which are not arrays. Cell is again, unusable for most things (most algorithms do not work on them): in python, you have list and dictionaries, and they certainly first class citizens in the language. Finally, doing complex GUI is impossible in matlab. More generally, doing things not directly related to numerical computing is really difficult in matlab, because the language is not suitable for general programming, and because of the totally brain damaged C api. I've done a fairly big amount of matlab programming, and consider myself quite familiar with it. I've done complex mex programming, even some java programming for interacting between matlab and java list/hashmap, etc... When you do those kind of things, the limitations of matlab are striking. Matlab is simpler to use for simple things: for me, there is no question about that fact. But python makes easy things just a bit more complicated, and all other things possible. The perfect example is namespace: not having namespace IS easier, at first. But this quickly makes things unmanageable. Functions are easier in matlab, but when you want to define function with many arguments and default values, this also becomes quickly unmanageable. David _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion