tags:

views:

527

answers:

8

I hear it's the future of engineering, but I'm not entirely sold. What advantages does Matlab provide? Are there any downsides?

+10  A: 

Matlab is not considered a general purpose programming language, but is a mathematical tool much like an extremely capable programmable calculator. Its focus is such that if you don't already know you need to use Matlab, then learning it won't give you much benefit.

Greg Hewgill
I have to disagree with your statement about how MATLAB "is not considered a general purpose programming language". I think MATLAB is what you make of it. Some use it more like a high-level programming language, where they don't have to worry about memory allocation/deallocation, etc., while others simply use it like "an extremely capable programmable calculator" with all of its detailed toolboxes of functions. I can't say I like the "calculator" terminology, though. =)
gnovice
+10  A: 

Matlab is "the language of technical computing." It's a great language for image processing, data manipulation, and matrix mathematics. As an engineer, I use matlab all the time. But, it's not an application programming language. It's tailored toward engineering and mathematics, with powerful built-in commands, such as FFT, image convolutions, and surface plotting.

It's not a systems/applications language, though. If you are an engineer I recommend wholeheartedly learning it. If you're a computer scientist or application programmer, you don't need it.

rlbond
+2  A: 

You should probably now learn either an object-oriented language (C++, Java, etc) or a functional language (Haskell, Scheme, etc) if what interests you is becoming more "valuable" as a programmer.

R Caloca
+2  A: 

Coincidently, I actually learned C and MATLAB in the same class: a scientific computing class with a half-semester of each. It worked out great for me since I was in an engineering program and went on to use both of them extensively: C, along with MPI, for some code for simulating large-scale biophysical models, and MATLAB for pretty much everything else I've done.

If you're an engineer, I'd say definitely learn MATLAB. But I may be a little biased. =)

gnovice
+2  A: 

It depends. If you are an application programmer then MATLAB is probably completely pointless. If you are an engineer and often find yourself prototyping engineering applications then I am surprised that you have not been taught MATLAB yet. ;)

I have a love-hate-relationship with MATLAB. On one hand it is almost embarrassingly simple and beautiful. For example matrix operations, math or any time when there is already a built-in function or toolbox that does what you need.

But then comes the time when you have to implement something fairly complicated that is not vectorizable (i.e. can be written as matrix operations instead of looping) and then I suddenly hate it with a passion. It is syntactically ugly (subjective), and annoyingly slow (objective).

kigurai
A: 

Matlab is useful depending on what you want to do. It has its strengths and weaknesses. It also depends on what type of engineering you are going into. Mechanical and Electrical engineers use it for different things (I'm not suggesting those are the only types of Engineering). I know that everything I have done in MatLab, besides signal processing, I could have just as easily done in C or C++ in fact sometimes I did because I knew C better. When it comes to wanting to plot things 3-D/2-D MatLab handles this very well. So again its the age old what do you want to do with it?

Nick S.
+1  A: 

In my opinion Matlab is not the future of engineering but its present. The rising future of engineering is Python. It has such powerfull packages like NumPy and SciPy and "simple" matrix syntax similiar to Matlab. Its graphic capabilities are as good as Matlab's. It also has optimization and signal processing modules counterpart to Matlab Toolboxes.

Tiobe Index (Usage) of Python is 6 and Matlab is on 18th place. Python is a general-purpose programming language, Matlab is just a niche product. There are very interesting developments for Python to make it yet faster e.g. virtual machine by google and other (Parrot VM).

On the other side Matlab contains Simulink (dynamic systems simulation) which does not really has competitors and its C code-generation capabilities are still underused by industry.

Mikhail