Let’s talk about the deep end. Specifically, being thrown into it.
Module 1 — Introduction to Bioinformatics using Perl
This first week has been a whirlwind. I have just started the Applied Bioinformatics MSc at Cranfield University. Within an hour of sitting down we’re facing the black screen and white text of the command line and being told to start programming.
Fortunately, we were given something between an introduction and a warning when we started; there are no essays and very few lectures, the aim of the game is to write code until you’re good at it, in multiple languages.
Our focus this week was Perl, the historical programming family used by biologists everywhere. After a brief outline of the main functions and data types we can use with it we began working through written practical booklets. These contained tasks designed to gradually build our base of knowledge on how to apply Perl in a relevant environment.
I was immediately engaged because it was clear that from the start that everything we learnt would be useful for our futures. These were not abstract challenges with no real-world application. Rather, by the time we received our assignment at the end of the week, we could build pipeline tools that can be utilised to uncover the sequence, structure and interaction networks of any protein required.
If there’s a corner to be cut (and more importantly, lines of code to be avoided) then I’m the first in line to find out how. Later in the week we were introduced to BioPerl. This is a collection of open source tools developed by the community that can be used as standalone modules or as part of a larger program.
Essentially, after writing scripts for a week, we were told that they’d already been written. Of course, without having first worked through our tasks we wouldn’t understand how the BioPerl packages were functioning and so it didn’t completely devalue our efforts.
Further, BioPerl is object-oriented, which felt like the next level. For Perl, we’re writing programs that process data they’re given and output a response. For BioPerl, however, we’re defining objects that interact with each other in a program. You can read this for a better explanation.
It was my first foray into coding; Perl is the first programming language I’ve tried to learn. I found that the learning curve is incredibly steep initially, but slowly you are brought around to a different way of thinking.
It’s frustratingly logical, and whilst Perl is supposed to be a more robust, flexible language (the unofficial motto is ‘there’s more than one way to do it’) compared to say, Python, the fact remains that a missing semi colon here, or open bracket there, will halt all progress. This is the case in any code you’re writing and so getting into the right habits has been a valuable lesson.
Although it appears that learning Perl may have more importance in understanding legacy code now, I have grown to enjoy using it. The Camel has always been the symbol of Perl and whilst the only official reason is its appearance on the cover of the first edition of Programming Perl by O’Reilly Media, it’s easy to see the parallels between the desert dweller and the often ugly, but always resilient programming language.