What are the programming languages important to learn for a geneticist or bioinformatician?
Comparing some commonly used languages in bioinformatics

I think that indeed Perl is losing users but there are still quite a lot of people using it. Bash (or other shell) is essential. While one can replace Python with C or Java and eventually replace R by Python or Julia, I find Bash to be really necessary. To compare Python to R, Python is much faster. If you are a purist, you'll like Python much more than R. R is a weird language, I use it a lot but you always have to deal with very special kind of objects. The big advantage of R is its community; There are tons and tons of functions. Typically, for any task you you want to do and related to statistics or to phylogenetics, you'll find an already existing package that will do the job for you. C is nice and very popular. It is super fast but it is not super handy for most tasks. Moreover, C doesn't have an interpreter which is always kinda annoying when you're use to high level languages such as R typically. I know nobody who uses Ruby and I don't code in Ruby but it is an important language. Some may use it for bioinformatics and it is very much used in many other disciplines (unlike R, which only statisticians know).

What I personally use

Personally, I use mostly R, Python, C/C++ and Bash. Bash to organize stuff, modify files and manage processes on my machine and on remote machines. R for data analysis. Python when R is too slow (to analyze more data such as sequence data for example) and C/C++ to run individual based simulation. I happen to use some other languages for my work but not as often.

How to learn

Nobody excels at coding to start with. Actually, after my first class of programming I had in mind that programming was not meant for me. Now, I don't excel, I am just a biologist who codes a bit and not a computer scientist but I spend the majority of time coding and I love that. I learn a lot everyday but ever since I started to feel a bit confident, I found that I could do much with this knowledge. You'll probably realize after some time that few people are really good at coding and you can already do much with only a few days of training. Don't be afraid. I think that indeed one of the best way to learn a language is to use it for a project. Here are a bunch of things you could do:


Go on Dryad.com, get some data and analyze them. You can redo the analysis they did on the original paper for example. Or, better you could try to discover something by yourself by combining some existing data.
individual-based (OOP) simulations in population genetics


simulate genetic drift in populations. Try to estimate the probability of a new mutation to fix and the time it takes to get fixed.
Simulate the process of selective sweep with defining chromosomes.
You'd basically have to have a function that creates a list of objects of type individuals. Each individual has two objects called chromosomes. You have a function that simulate reproduction (without selection, recombination nor mutations to start with). And you need a function to print the statistics you need on a file. I think you could do a simple individual-based simulation in a few days only and then you'd feel more comfortable with the language and you would also have a better grasp on how one can numerically simulate a population through time.