Search code examples
matlabprogramming-languages

Suggestions to learn any programming language after Matlab


I've taken a course in C++ in my freshman year in undergrad. However once it was over I never employed it in any project or use. I am familiar with some average topics in C++ prior to where 'link list' starts. Once I got the opportunity to do my first project after Sophomore year, I was suggested by my prof. to learn Matlab which is widely used in mathematical and engineering projects. But I often hear from people that Matlab is not a language and that it can't take the place of any programming languages like C++, Java, Fortran etc. I am also concerned about its inability to run using executable files unlike Fortran, C++ etc.

I am wanting to learn a programming language:

1) Which takes care of the above, and other, issues which Matlab lacks in many aspects.

2) Which is widely used and available in industry and research centers.

3) Which is relatively easy and quick to code, and powerful in its capabilities.

Also please:

1) Give the advantages and disadvantages (over Matlab) for the language you suggest.

2) The best way to learn it.

3) The proper sequence of topics to learn knowing that I am familiar with the programming concepts.

4) A source, which is easy, good and interesting, to learn from.

Thanks for your suggestions.


Solution

  • From matlab, I would go to python.

    First, I want to dispel of a myth. Matlab is used in industry. However, it isn't as common, and is pretty specific. It's often used for prototyping and proving mathematic analysis, not to deploy systems to customers. Once the smart mathematicians prove their ideas out in Matlab, it falls to developers to build a real system out of it. That real system is usually done in C,C++,Java and deployed to the customer.

    But, first, ask yourself why you want to learn this language.

    • Is it just to get exposure? To learn more about programming? Almost any language will get you that.
    • Do you want to be able to quickly fire off some scripts? Python would be better.
    • Do you want to develop large scale systems that leverage every ounce of processing power at the expense of development speed? C/C++/Java would be a better path.
    • Do you want to become more attractive to recruiters? Java probably has the highest amount of "want-ads", followed by C++, then maybe Python or C#.
    • Do you want to remain in a specific industry (e.g. scientific computing)? Pick out a few companies that interest you and find out what they use in-house.

    Remember, the language is not really a goal in itself, it's just a tool to get you where you're going! :)

    1) Which takes care of the above, and other, issues which Matlab lacks in many aspects.

    Yes, Python is an industry acceptable programming language with many great programming features - list comprehensions, duck typing, a strong standard library.

    2) Which is widely used and available in industry and research centers.

    It is fairly widely used, and growing. Especially for research and prototyping. Very large scale systems will still mostly be in Java or C++, but those are harder languages to learn.

    3) Which is relatively easy and quick to code, and powerful in its capabilities.

    This is python in a nutshell.

    And:

    1) Give the advantages and disadvantages (over Matlab) for the language you suggest.

    Matlab has some really cool features, but as an industry programming language, I wouldn't call it top of the line. However, the syntax is probably closest to python. Python can give you true object oriented development, and has a much richer standard library to go beyond matlabs walls.

    2) The best way to learn it.

    Start with a tutorial and move on to coding small projects. Move up from there. Learn by doing.

    I've recently taken to learning Scala (just 'cuz) by doing problems at http://projecteuler.net, and it's been fun! (for an extremely nerdy definition of fun)

    3) The proper sequence of topics to learn knowing that I am familiar with the programming concepts.

    Read code, read questions on StackOverflow. Read blogs and books about programming concepts - how to structure code, how to refactor, how to design, etc. Then, just solve problems you encounter. If you can, find a mentor or ask a lot of questions on SO.

    4) A source, which is easy, good and interesting, to learn from.

    StackOverflow. A mentor, if you have one accessible. Open source is good too.