Jump to content

Good programming language to learn?


enginegeek

Recommended Posts

Hi guys, I am a chemical engineering freshmen. Matlab is the only programming language I have learnt so far. I am comtemplating a career as a researcher/professor. May I know what programming language would be useful to learn that will be helpful to me in grad school/research?

Link to comment
Share on other sites

It's great that you learned Matlab in your freshman year. The reason why the Matlab course is at the beginning of the engineering curriculum is that Matlab is a very useful tool for numerical studies and plots and that you are expected to use Matlab in many other courses in the future. I'd suggest you to understand and know how to utilize Matlab well. Although they know the theory and concepts, some students fail to produce results because they do not know the tool well. 

 

If you are interested in learning new languages, I'd recommend C or Java. The C language resembles Matlab such that it does not take too much time to understand it once you know Matlab (for loops, if statements, etc). 

 

 

Link to comment
Share on other sites

object oriented programming is indeed more in depth, and would be a good thing to learn. however, in the long run, matlab is really all you need when it comes to programming in chemical engineering. Whether you're doing data analysis, or running a molecular simulation, it can all be done through matlab.

Link to comment
Share on other sites

I've worked for a number of years as a software engineer, and I've used a number of languages and frameworks along the way -- Python, Django, PHP, Java, JavaScript, SQL, JQuery, HTML, C, Zend, Clojure, R, Stata, SAS, Matlab... I may be forgetting some but you get the idea.  For your purposes, I'd highly recommend learning Python if you want to learn a new language.

 

I wouldn't bother with C -- it's too low level for most research.  C is good when you need routines that are very efficient, or when you need to do things at the byte level.  The downside is that C takes many more lines of code when compared to higher level languages.  You'll spend lots of time writing algorithms and routines that come for free with other languages.  For research, programmer efficiency is paramount, and C just won't serve you well on that front.  Also, C is not object oriented (as opposed to C++).

 

Java is a very nice language, but again, probably not the best choice for research.  Java is higher level than C, and is sort of the de-facto standard to which most other object oriented languages are compared.  Java is almost certainly one of the most popular langauges used in industry (i.e. not in academia) today.  For a variety of reasons (strongly typed, good encapsulation, interface support, etc.) Java is good for enterprise type projects for which many programmers must collaborate.  Java also has great library support, probably better than any other language, and it also has great integration in terms of testing and continuous integration for large projects.  Some people argue that Java is more verbose than Python, and that argument definitely has some truth to it, but newer versions of Java have gone a long way towards closing that gap.  Java is not, however, a scripting language.  You must write in an object oriented manner when using Java.  The fact that Java enforces an object oriented style might be an upside if you just want to learn about object oriented programming, but if you just want a quick and dirty prototype for your research it can get onerous.  This object oriented style and built in access control schemes also make the barrier to entry relatively high for even basic programs.  When you're just starting out this can be a burden because you have to read a lot before you can even completely understand a basic "hello world" program.  Also, my completely anecdotal impression is that Java is not as popular as Python in academia. 

 

C# is basically Microsoft's answer to Java.  I'm sure there are some more meaningful differences, but I don't really have much experience with C#.  Honestly if you're interested in C# I'd just learn Java and then if you need to pick up C# later it will probably be relatively easy. 

 

VBScript is mainly good for writing macros in Microsoft products.  There are some limited applications, but the syntax is poor, and I think you'll find it limiting relatively quickly.  I'd skip it. 

 

PHP is used for building dynamic web applications.  Unless your just need want to program websites, just skip this one.  It also has a sort of klunky syntax, and its object oriented support was sort of tacked on in later versions rather than baked in, which can make it feel kind of klunky.  JavaScript is a client side programming language for the web.  It's a popular beginner language, but again basically useless for your purposes.

 

SQL is a database query language -- it's a very good skill to have in terms of employment and research as well, but it's more of a complement to 'real' programming languages, and so I would skip it for now.

 

I wouldn't bother learning a functional language like Haskell or one of the Lisp dialects until you are firmly grounded in object oriented design.  I say that not because I think an object oriented style is better, but simply because object oriented langauges are so much more popular -- functional languages are used comparatively rarely in both academia and industry.

 

For statistical programming your choices mainly SAS, Stata, Matlab, R, and Python (and maybe Mathematica?  I don't have much experience with it).  SAS is a very powerful tool, although not really a programming language in the same way that say Python or Java are programming languages.  In that sense, it's something more similar to Matlab.  SAS is especially popular with informatics, epidemiology, and bioinformatics types of research.  Personally I didn't care for SAS's syntax very much, but I'm sure there are others on these forums who would disagree.  Again, completely anecdotally, in my opinion SAS's popularity seems to be waning.  Stata is sort of the same, again not really a programming language, and it is popular with economics folks because it has good regression support for sometimes esoteric models.  I'm not sure if it would serve you well for engineering types of problems though.  R is an open source language that is very popular with stats types and other disciplines as well.  It has a strong community and seems to be growing in popularity because of a newfound interest in "big data."  Overall, R is a good research tool and is popular in acedemia.  R is probably not a bad choice, and is in some ways similar to Matlab, so you'll probably be able to pick up the basics quickly.

 

I think that pretty much covers it for the languages that people often suggest as a beginner -- and now I'll put in my plug for Python.  Python has good object oriented support, but is also powerful as a scripting language.  Python is also versatile -- you can use it for research, building web applications, and desktop applications.  Python's syntax is among the best of modern languages, and you'll be able to pick up the basics quickly.  Python is also supplanting R in some datascience applications because of some great statistical libraries like Numpy and Pandas.  If you want to get a job as a programmer Java might be a better choice -- there are more programming jobs for Java programmers.  However, the programming jobs for Python tend to be more interesting IMO ;-)  Also, consultants and analyst jobs (even outside of the tech industry -- i.e. banking etc.) tend to want people who know Python far more often than they want people who know Java.

Edited by finalrez
Link to comment
Share on other sites

My first programming language was Java and it was taught to me in a formal Computer Science course. I never use it for research. But from that, I was able to teach myself other languages such as C. I think object oriented languages are very important skills to have, even if you don't end up programming with "objects" as much later on. MATLAB, IDL, R, and similar languages are good but I feel they are more "scripting" languages than full programming languages. 

 

I would also strongly put in a plug for Python. It's free which is important because it means you can use it anywhere, no matter where you go in the future. My current school has a lot of MATLAB and IDL and Mathematica licenses so anyone on campus can use it anytime, but I know most schools aren't so lucky. So, over the past summer, I've started writing everything in Python so when I graduate and have to use my code elsewhere, I'm not dependent on my employer having a license for me. 

 

Also, I like python because you can use it without treating it like an object oriented language at all. And for research purposes, sometimes we don't need to write super elegant code--it just needs to do its job fairly quickly. Finally, Python has a lot of modules that are very easy to install to do useful calculations in science (histogramming, generating random variables, even MCMC schemes). 

Link to comment
Share on other sites

stay with Matlab discover it  , own it and master it . if you are going to a Research school most probably they are going to have matlab. remember you are a researcher, not a programmer not a developer. Having a program that is up and running and correct is a priority. 

Now if the School you are going too is more liberal and don't like to pay insane amount of money for software and licences , they are going to use either octave ( a matlab clone ) or Python .

I worked as researcher for a research company my PI was always pushing me to write in matlab/python more than C++.

Most Researchers .they try to start writing programs in C++ early in their careers but they soon drop C++ for matlab.

so Matlab . if not python

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

This website uses cookies to ensure you get the best experience on our website. See our Privacy Policy and Terms of Use