Programming languages & research

This forum made possible through the generous support of SDN members, donors, and sponsors. Thank you.

DendWrite

Full Member
10+ Year Member
Joined
Oct 19, 2008
Messages
333
Reaction score
1
I did a search but didn't find many topics on this. My school offers some CS courses in Java programming, and it is something that I messed around with in high school. I'd like to learn a language that would be useful to me later on in research and was wondering which would be the most valuable for me to learn. We don't offer any C/C++ classes, so I didn't know if Java would be a total waste or if it is used in research a lot. My research so far has not really involved any programming so I don't have any experience with what's the norm.
 
Most of the CFD work that I've done would use C/C++, not java. CFD is used in the medical field, so thats a possible application I guess.
 
Yeah, Java is a little odd for research...it really rocks out in I.T. C/C++ are definitely very common and useful. If you wanted to check out some programming environments, take a look at MatLab and SAS. Personally I hate SAS, and would definitely recommend R. However, if you ever decided to go corporate they would want SAS...but R, being open-source, definitely appeals to the academic, and will do anything you will need it to do (most likely); I find that it's 80% of SAS. R and SAS are statistical packages (definitely very useful in research) and MatLab is a mathematical/computational/simulation package that is used for some hard core science research.

Other than that, go for Python. Very easy to learn, but very useful.
 
1. Programming languages aren't as important as understanding the concepts behind programming. Once you understand that (which takes a while) you should be able to pick up additional languages pretty easily.

2. I'm not sure I would worry so much about what will be useful for "research" because that's a pretty vague goal and presumably you are not going into a full time research career if you are posting in this forum.

3. Matlab, SAS, R, SPSS, etc. are very useful environments, but only to those with enough mathematical understanding to be able to (and need to) use them. If you have a great mathematical background maybe look into one of those, but otherwise work on the math and stats first.

4. That being said, I can't recommend Python strongly enough as a language both to begin programming and to continue developing expertise in. It's extremely well designed and efficient, easy to learn yet incredibly powerful, and has a great community behind it. I could go on and on. It is also much better to learn programming in an interpreted language since you can more easily experiment and see what is going on.

http://www.python.org/
 
3. Matlab, SAS, R, SPSS, etc. are very useful environments, but only to those with enough mathematical understanding to be able to (and need to) use them. If you have a great mathematical background maybe look into one of those, but otherwise work on the math and stats first.

lol I forgot to mention that you need to know math very well to use MatLab and stats to use SAS and R.

I can't believe you brought up SPSS. 👎
Python is definitely good to start with.
 
What pseudo said...

A semester Java class isn't going to do much for you. Programming is really something you just have to be into and practice a lot with. I've taken Java and C++ amongst others and really, didn't find the courses that high yield. The people that did best were the ones that loved the stuff and understood the essence of programing. Me, I found it pretty painful. I did minor things but even in my research that was all tech oriented, I rarely had to do much of any programming.
 
You might as well just take a bioinformatics course since it'd be more relevant to your immediate interest.
 
It depends on exactly what you want to do, and as stated above it's the CS concepts that matter, not the specific language. That being said, there are a few things that are nice to have in your toolbox:


1. A fast language for simulations and large calculations such as C/C++.

2. A good scripting language. Perl and ruby are personal favorites.

3. (optional) A good symbolic math language. R was mentioned, and I have to agree with that. It's becoming much more widely used, and some of the packages are pretty good. Other options are matlab and mathematica.

4. While not quite a programming language, learn how to use databases and how to design good databases to hold the information you want to hold and do the processing that you're interested in. From my experience, one of the biggest problem in bioinformatics right now is the huge number of hard-to-use file formats. It's gotten to be ridiculous, and scientists seem to keep reinventing the wheel here. Databases really aren't that hard to use, they've been optimized extensively, and they're more robust than any simple file system could ever hope to be.

Also not quite programming, but I'd recommend becoming familiar with the linux environment. It's free, and it's gotten to be very user friendly. In addition, all of the tools I mentioned above are available and free for linux. Ubuntu is a good distribution, but there are other options available.

My personal toolbox includes:
-Ubuntu with mysql, rails (a web server) and emacs (a programmer-specific text editor)
-Code::Blocks for C/C++ development using gcc as a compiler
-Perl for quick tasks / data analysis, etc.
-ruby for when perl is a little too sloppy and I'd like a bit more structure but don't want to spend hours writing it in C++.
-R for mathematical and statistical data analysis


Obviously I do this quite a bit, so you might want to start out in a simpler setting. Perl will probably give you the most bang for your buck, and ruby can teach you a reasonable amount about object-oriented programming and structure. C++ is insanely powerful but requires a significant time commitment to become proficient in.
 
The fact is that for large projects your grant should include funds for a professional database programmer/admin and statistician. You will be the PI, not the programmer.

Now for most of your small-scale clinical research stuff -- the things you'll be doing as a medical student and a resident -- you just need to keep track of your data and do simple analysis on them. So, again database and SAS (or even SPSS) would be the most useful.

Health informatics, if you're thinking about getting into things such as electronic medical records and decision support systems, are driven by large databases so knowledge in that arena is helpful. The web is increasingly becoming a common delivery system for these services, so knowing the state-of-the-art in that realm wouldn't hurt.

C++/Java is more suited for heavy lifting, such as computational biology, but I don't see many physicians doing this work and most of those that are doing it either have an additional PhD in the field or are working alongside someone that does.

For a career physician/researcher, you just don't need to know memory management, run-time-typing, dynamic algorithms, etc.
 
Top