I spent some of my weekend searching the web for C++ tutorials. It was an interesting exercise, because I now have the impression that people who write tutorials for compiled languages think rather differently to people who write about scripting languages.
Scripting tutorials seem to begin by defining an interesting task, then explaining how to do it. When I first wanted to use Perl to fetch and parse data from the web, I used an excellent tutorial entitled “Scoring a Web Page with Perl and LWP”, no longer online so far as I can tell. Similarly, the BioPerl tutorials get straight into the business of parsing and manipulating biological data files. This is my preferred approach – I think the best tutorials show you how to do something useful, interesting and real-world straight away.
On the other hand, many of the tutorials that I’ve read for C, C++ or Java seem to concentrate solely on the structure and syntax of the language. They begin with “Hello World” then take you through variables, loops, control structures, pointers and functions. At some stage they get to objects which are always explained using a variety of analogies (cars, animals, computer parts). And then – they stop. You can go through a 12 or 20-part tutorial, understand it fully and still be unable to code anything more useful than “Hello World” at the end of it.
I wonder why this is? Is it because to do anything useful with these languages, you need in-depth knowledge of their libraries, which is beyond a simple tutorial? Or are “scripting people” more practical and interested in getting the job done quickly? Or perhaps languages like C/C++ are traditionally more suited to mathematical operations, preferred by engineers and physical scientists, whereas biological scientists do more text processing and so prefer the “quick and dirty” script? Or is it just a feature of web tutorials – perhaps I need a book.
I’m interested in how other computational biologists learned their programming skills, what languages they use/prefer, how they came to choose those languages.