Question: Which Are The Best Programming Languages To Study For A Bioinformatician?
gravatar for Giovanni M Dall'Olio
10.8 years ago by
Barcelona, Spain
Giovanni M Dall'Olio420 wrote:

This is also a very classic question: Which is your favorite programming language in bioinformatics? Which languages would you recommend to a student wishing to enter the world of bioinformatics?

This topic has already been discussed on the Internet, but I think it would be nice to discuss it here. Here there are some links to previous polls and discussions:

ADD COMMENTlink modified 10.5 years ago by User 82260 • written 10.8 years ago by Giovanni M Dall'Olio420
gravatar for Giovanni M Dall'Olio
10.8 years ago by
Barcelona, Spain
Giovanni M Dall'Olio420 wrote:

The choice of a programming language is purely subjective, but when a student asks you which programming language he should start with, you have to make an answer, or at least provide some informations.

I think that a bioinformatician who studies R and at least two or three libraries (lattice/ggplot2, plyr) early can have an advantage, because he will be able to represent his data properly and obtain good results without too much effort. If your supervisor is not a computer scientist, he will be a lot more impressed by plots and charts than by programs, even if they are well written, with unittests etc.

Python is a good programming language to learn as a general purpose tool. Its bigger advantages are its easy to read syntax, and its paradigm 'there is only one way to do it', so the number of language keywords is reduced to the minimum, and two programs with the same function written by different people will be very similar (which is what doesn't happen with perl). The negative points of python are that its CSV files reading/plotting interface is not ready yet (the best is pylab), so you must rely on R to produce nice plots.

Honestly I don't like perl, because I think it can induce to many bad-behaviours in novel programmers. For example, in perl there are many similar constructs to accomplish the same objective: so, it is very difficult to understand a program written by someone else, because you have to known all the possible constructs and hope there are enough comments. It is already very difficult to reproduce a bioinformatician experiment, if you write your code in a difficult language it is a lot worst. Moreover, I know of many people who have been using perl for years, but that don't even use functions, because it looks too complicated. How can it be? It looks very inefficient. The only good point of perl is its repositories, bioperl and CPAN; however, I know of people using perl that don't even know of the existence of these, so I don't understand why they keep going with perl.

Apart from programming language, is it very useful to learn the basic usage of gnu-make, or of a derivate. This program is very useful when you have lot of different scripts, as it allows you to define a pipeline in order to run them. Some basic bash commands may also be very useful if you work with a lot of flat files (head, sed, gawk, grep, ...)

ADD COMMENTlink written 10.8 years ago by Giovanni M Dall'Olio420
gravatar for David Nusinow
10.7 years ago by
Boston, MA
David Nusinow50 wrote:

Perl can be quite lovely if you choose to write it well. If you find yourself in need of writing some perl, I'd highly recommend getting the Perl Best Practices book and going through it to learn how to make your perl code not suck. Essential tools for helping with that are perlcritic and perltidy, both of which I have bound to quick keystrokes in my emacs cperl-mode so as to make sure my code is in reasonably good shape. There's lots of blog articles out there about writing "Modern Perl" or "Enlightened Perl" that help make the language not just bearable but actually quite nice for a certain type of brain.

One thing that Perl does very well that no other language does is quick text processing on the command line. If you want to do some simple processing of a text file (which is pretty standard in this business), perl is a fantastic package to do so. Stringing together a set of UNIX utilities on a Linux system will usually have you running for a half dozen manpages looking for conflicting and unique switches, where with perl I find that there's far less I have to remember to get the same effect. The book Minimal Perl goes in to this sort of thing in detail (perl as a better awk/sed/grep/etc) and I highly recommend having a look. At the very least, I've found that using perl in this fashion filled a hole in my toolkit that I didn't even realize was there. R and Python can, of course, do this sort of thing too, but not nearly so well as Perl.

ADD COMMENTlink written 10.7 years ago by David Nusinow50
gravatar for István Albert
10.8 years ago by
István Albert ♦♦ 310
University Park
István Albert ♦♦ 310 wrote:

It is important to be considerate and not characterize one particular approach negatively. My favorite quote is:

Programming is pure thought.

Hopefully everyone is able to pick an approach that matches their individual way of thinking. While I myself do not program in Perl, I consider it to be one of the most popular and powerful platforms for doing bioinformatics analysis.

ADD COMMENTlink written 10.8 years ago by István Albert ♦♦ 310
gravatar for Fabio
10.8 years ago by
Fabio30 wrote:

Any programming language is good as long you know what you're doing.

ADD COMMENTlink written 10.8 years ago by Fabio30
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 1 users visited in the last hour