SlideShare a Scribd company logo
What makes a good programming language for bioinformatics education? Greg Slodkowicz Chris Workman group Center for Biological Sequence Analysis
Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
Programming language trends
Programming language trends 2001 Java C C++ (Visual) Basic Perl PHP Python C# (Objective C) (Lua) 2011 Java C C++ C# PHP (Visual) Basic Objective C Python Perl Lua
Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
Comparing programming languages ’ 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
How to compare languages? Make an army of clones, teach them programming, do statistics
Software engineering perspective Effort (/time) to solve a problem is proportional to the number of lines needed for the solution [1] The number of bugs per line of code is constant regardless of the language used [2] [1]  F Brooks 1995 [2]  L Hatton 1995
Languages in the comparison Language Paradigm Execution model Perl Mixed Interpreted Python Mixed Interpreted Java OO VM C Procedural Compiled C++ OO Compiled
Practical comparison We compare several small problems implemented in each language: dna2prot Translate DNA to amino acid sequence fasta* Generate and write random DNA sequences reverse-complement* Read DNA sequences and write their reverse-complement k-nucleotide* Repeatedly update hashtables and k-nucleotide strings regex-dna* Match DNA 8-mers and substitute nucleotides for IUB code *From the Programming Language Benchmark Game
Code lengths compared
Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
Unix legacy Many more syntactic structures in Perl Things happen by ‘magic’ Perl Python Java $str =~  /xxx$/  str.endswith(“xxx”) str.endsWith(“xxx”) $str !~ /xxx$/ not str.endswith(“xxx”) !str.endsWith(“xxx”) `cmd` os.system(cmd) Runtime.exec(cmd) s/xxx/yyy/ str.replace(“xxx”, “yyy”) str.replace(“xxx”, “yyy”) tr/abc/xyz/ str.translate(trantab) str.translate(“xxx”, “yyy”) <FILE> file f File f
Perl special variables
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
Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
Bio* main projects BioPerl BioPython BioJava BioRuby
Bio* commit activity Activity by year Total # of commits
Summary Changing landscape of programming practice Scripting languages are more suited for teaching bioinformatics New languages emerge and can make teaching bioinformatics easier There are  more and more viable bioinformatics libraries
Questions? Acknowledgements Chris Workman Peter Wad Sackett Nils Weinhold

More Related Content

PPTX
Soalan chapter 5
PDF
JetBrains MPS: Projectional Editing in Domain-Specific Languages
PPTX
presentation on C++ basics by prince kumar kushwaha
PPT
Python Intro For Managers
PDF
Large Scale Text Processing
PPTX
Python vs c++ ppt
PDF
Embracing diversity searching over multiple languages
PDF
Big Data Spain 2017 - Deriving Actionable Insights from High Volume Media St...
Soalan chapter 5
JetBrains MPS: Projectional Editing in Domain-Specific Languages
presentation on C++ basics by prince kumar kushwaha
Python Intro For Managers
Large Scale Text Processing
Python vs c++ ppt
Embracing diversity searching over multiple languages
Big Data Spain 2017 - Deriving Actionable Insights from High Volume Media St...

What's hot (19)

PDF
Scaling Language Specifications
PPT
History of c++
PDF
C++ vs python the best ever comparison
ODP
The D Programming Language - Why I love it!
PDF
D programming language
PPTX
Php Vs Phyton
PDF
Difference between c, c++ and java
PPTX
Lambda The Extreme: Test-Driving a Functional Language
PDF
History of C/C++ Language
PPTX
Introduction to c programming language
PPTX
C++ history session 00 history
PPTX
Go programing language
PPT
History of c++
PDF
Chatbots are so last decade
PDF
PDF
Introduction to D programming language at Weka.IO
PPTX
C language myths & secrets
PPTX
Before Starting Python Programming Language
Scaling Language Specifications
History of c++
C++ vs python the best ever comparison
The D Programming Language - Why I love it!
D programming language
Php Vs Phyton
Difference between c, c++ and java
Lambda The Extreme: Test-Driving a Functional Language
History of C/C++ Language
Introduction to c programming language
C++ history session 00 history
Go programing language
History of c++
Chatbots are so last decade
Introduction to D programming language at Weka.IO
C language myths & secrets
Before Starting Python Programming Language
Ad

Viewers also liked (7)

PDF
Camino Portuges. Велопоход 2кс Португалия, сентябрь 2014
PPT
Week 2 knives
PPTX
The nawab of pataudi
PPT
Week 3 stocks
PPTX
Som worship 2011
PPTX
Camino Portuges. Велопоход по Португалии, 2кс, сентябрь 2014
PPT
Week 1 intro to principles of food production
Camino Portuges. Велопоход 2кс Португалия, сентябрь 2014
Week 2 knives
The nawab of pataudi
Week 3 stocks
Som worship 2011
Camino Portuges. Велопоход по Португалии, 2кс, сентябрь 2014
Week 1 intro to principles of food production
Ad

Similar to Programming languages vienna (20)

PDF
List of programming_languages_by_type
PPTX
From Programming to Modeling And Back Again
PDF
PIL - A Platform Independent Language
PDF
TI1220 Lecture 14: Domain-Specific Languages
PPT
02-chapter-1.ppt programming languages 10
PPT
brief intro for Programming Languages 02-chapter-1
PDF
Perl5 VS JSON
PPT
ITU - MDD - Textural Languages and Grammars
PPTX
Lecture 1 introduction to language processors
PPTX
Unit1 principle of programming language
PPT
Microsoft .NET Framework
PDF
Generative programming (mostly parser generation)
PDF
concepts-in-programming-languages-2kuots4121.pdf
PDF
Create Your Own Language
PPT
Nakov dot net-framework-overview-english
PDF
What we can learn from Rebol?
PPTX
Future of PERL in IT
PDF
Sugar Presentation - YULHackers March 2009
PDF
Language Specification in Programming Languages
ODP
Concepts of JetBrains MPS
List of programming_languages_by_type
From Programming to Modeling And Back Again
PIL - A Platform Independent Language
TI1220 Lecture 14: Domain-Specific Languages
02-chapter-1.ppt programming languages 10
brief intro for Programming Languages 02-chapter-1
Perl5 VS JSON
ITU - MDD - Textural Languages and Grammars
Lecture 1 introduction to language processors
Unit1 principle of programming language
Microsoft .NET Framework
Generative programming (mostly parser generation)
concepts-in-programming-languages-2kuots4121.pdf
Create Your Own Language
Nakov dot net-framework-overview-english
What we can learn from Rebol?
Future of PERL in IT
Sugar Presentation - YULHackers March 2009
Language Specification in Programming Languages
Concepts of JetBrains MPS

Recently uploaded (20)

PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPT
Teaching material agriculture food technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Cloud computing and distributed systems.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Electronic commerce courselecture one. Pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Spectral efficient network and resource selection model in 5G networks
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Empathic Computing: Creating Shared Understanding
Teaching material agriculture food technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Cloud computing and distributed systems.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Electronic commerce courselecture one. Pdf
Big Data Technologies - Introduction.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Review of recent advances in non-invasive hemoglobin estimation
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Unlocking AI with Model Context Protocol (MCP)
“AI and Expert System Decision Support & Business Intelligence Systems”
Chapter 3 Spatial Domain Image Processing.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Mobile App Security Testing_ A Comprehensive Guide.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

Programming languages vienna

  • 1. What makes a good programming language for bioinformatics education? Greg Slodkowicz Chris Workman group Center for Biological Sequence Analysis
  • 2. Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
  • 4. Programming language trends 2001 Java C C++ (Visual) Basic Perl PHP Python C# (Objective C) (Lua) 2011 Java C C++ C# PHP (Visual) Basic Objective C Python Perl Lua
  • 5. Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
  • 6. Comparing programming languages ’ 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
  • 7. How to compare languages? Make an army of clones, teach them programming, do statistics
  • 8. Software engineering perspective Effort (/time) to solve a problem is proportional to the number of lines needed for the solution [1] The number of bugs per line of code is constant regardless of the language used [2] [1] F Brooks 1995 [2] L Hatton 1995
  • 9. Languages in the comparison Language Paradigm Execution model Perl Mixed Interpreted Python Mixed Interpreted Java OO VM C Procedural Compiled C++ OO Compiled
  • 10. Practical comparison We compare several small problems implemented in each language: dna2prot Translate DNA to amino acid sequence fasta* Generate and write random DNA sequences reverse-complement* Read DNA sequences and write their reverse-complement k-nucleotide* Repeatedly update hashtables and k-nucleotide strings regex-dna* Match DNA 8-mers and substitute nucleotides for IUB code *From the Programming Language Benchmark Game
  • 12. Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
  • 13. Unix legacy Many more syntactic structures in Perl Things happen by ‘magic’ Perl Python Java $str =~ /xxx$/ str.endswith(“xxx”) str.endsWith(“xxx”) $str !~ /xxx$/ not str.endswith(“xxx”) !str.endsWith(“xxx”) `cmd` os.system(cmd) Runtime.exec(cmd) s/xxx/yyy/ str.replace(“xxx”, “yyy”) str.replace(“xxx”, “yyy”) tr/abc/xyz/ str.translate(trantab) str.translate(“xxx”, “yyy”) <FILE> file f File f
  • 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
  • 16. Overview Language usage trends Practical language comparison Perl design Bioinformatics library comparison
  • 17. Bio* main projects BioPerl BioPython BioJava BioRuby
  • 18. Bio* commit activity Activity by year Total # of commits
  • 19. Summary Changing landscape of programming practice Scripting languages are more suited for teaching bioinformatics New languages emerge and can make teaching bioinformatics easier There are more and more viable bioinformatics libraries
  • 20. Questions? Acknowledgements Chris Workman Peter Wad Sackett Nils Weinhold

Editor's Notes

  • #2: 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.
  • #4: 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
  • #5: You need a bit of context information to interpret this
  • #7: It’s always dangerous to compare programming
  • #8: ‘ 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
  • #9: 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
  • #10: 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
  • #11: 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
  • #14: 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
  • #15: Worst offenders $_, @_ Implicit behaviours, values are implicitly put into variables with arbitrary names
  • #16: 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
  • #18: OBF There are some affiliated