7. How to compare languages? Make an army of clones, teach them programming, do statistics
8.
9. Languages in the comparison Language Paradigm Execution model Perl Mixed Interpreted Python Mixed Interpreted Java OO VM C Procedural Compiled C++ OO Compiled
15. Perl philosophy ” (…) Perl is chock-full of exceptions to its rules. This is a good thing, as real life is chock-full of exceptions to rules.” Schwartz et al., Learning Perl, O’Reilly
My name is Greg Slodkowicz and I’ll be talking about how well suited different programming languages are for solving common problems in bioinformatics, in particular in bioinformatics education.
To put it into context, here’s a plot of programming language popularity in the last 10 years. This is general, . So it’s not something specific for bioinformatics. Java, C, C++ -- heavy duty compiled languages Visual Basic has been promoted by Microsoft used mainly by small businesses and we can see from the plot that it’s on it’s way out in favour of C# and other things PHP, still the most popular language for the web
You need a bit of context information to interpret this
It’s always dangerous to compare programming
‘ clinical trial’ ’ Religious’ aspect (holy language wars) Few hard facts, folk wisdom/software engineering practice instead Difficult to compare across universities (different student intake etc.) Personal preference
My background So of course we can’t do it ‘scientifically’ to get a definite answer but we can reason about the properties of each language and we can use software engineering practice to help us. If you’re a professional software developer 1-1.5 bugs per 100 lines of code. This is not because
It’s always dangerous to compare programming langs Has to do with overall popularity trends, also to do with the courses which are taught Ruby is also quite tempting to try out but it’s really slow and there’s not much scientific communit
Decided to implement solutions to several simple problems that could occur in an introductory bioinformatics course. IUB – degenerate base codes - optimized so not the optimal case for introductory stuff - but chosen out of many submissions - I pick shortest, not fastest
Scoping, bolt-on error handling, profusion of control structures which do the same thing Have to work against the language to teach effectively Makes it difficult to understand somebody else’s code; also difficult for self-study
Worst offenders $_, @_ Implicit behaviours, values are implicitly put into variables with arbitrary names
You can make up your own mind if it’s a good thing – it’s loosely reasoned And in fact increases the cognitive load Means you have to work against the language to produce good code. In theory, people say that it gives more power but not for beginners