Java vs Perl for Bioinformatics - Calling Cab 28
Teaching programming to biologists is one of the key challenges of bioinformatics educators. A few weekends ago, when several dozen bioinformaticians from across Canada organized to discuss curriculum and educational practice, this was certainly an issue of contention. How do you rapidly give a novice computer user the experience and wherewithal to design and write computer programs? Furthermore, how do you teach them about programming without intimidating them? These questions invariably brought up debate as to which programming language is the easiest and most fruitful for a biologist to learn. While temporarily pitting the Perl camp against the Java camp provided some humorous levity, the underlying issue was more serious as the choice in introductory language should provide most 'accidental programmers' with a serviceable understanding of the concepts of good programming and appreciation for using the right tool for any particular job. Fortunately, before any blood was shed, we considered this expertise to be language-neutral. Both languages offered the quick and 'dirty' methods of managing and transforming bioinformatics data. Both had the potential to cover the introductory concepts for programming. What we realized was missing was an introduction that was general enough to be language neutral but with a focus on resource identification. Students, regardless of the field, need to be introduced to the concepts in conjunction with information on what is the right language for a particular job and how to access the larger amount of information available on the Internet. Most students that I have had experience with will be stuck once they have reached a debugging error that they do not understand. Anyone who is reading this article on the Internet is likely more than familar with Google (what I consider as one of the most powerful debuggers and automatic code generators available). Educators teaching crash courses in programming need to present the simple skills which most of us apply when encountering 'show-stopping' programming errors. This ability with a better understanding of how to set-up a programming problem will undoubtedly lead to less instances of "programming in anger".
A few of us were reflecting on this debate immediately afterwards on our way to the pub. The cab driver overheard that we were programmers and inquired what languages we used. The response was, "mostly Perl and Java". To which he replied, "What about real languages?" Incidentally, he offered us C debugging advice if we called up his cab, number 28.