On 4/25/2007 8:34 PM, Robert Kern wrote:
The things that I get annoyed with every time I have to read some Matlab code are the lack of namespaces and first-class function objects.
Matlab does have first-class function objects. You can get a handle to any function using the @ operator. Matlab has closures as well.
function f = addn(n) tmp = n function y = closure(x) y = x + tmp end f = @closure end
The most recent version of Matlab also have classes and namespaces implemented properly - not like the old broken Matlab objects. But I've never used it as I have stopped paying for maintenance of my Matlab license - I use Python anyway. But if it weren't for NumPy, SciPy and Matplotlib, I would probably still be using Matlab.
As a programming language Matlab is very weak compared to Python. Matlab is to Fortran what Python is to Lisp. As an advanced desktop calculator Matlab has the edge. But that has more to do with the interactive environment and available toolboxes than the language it self. It is also easier to write C or Fortran extensions for Matlab than for Python.