学什么语言

二代测序刚开始的时候,做生物信息的大牛很多是数学物理计算机专业,比如开发 SOAPdenovo 软件的前辈们。那个时候编程的核心是算法,怎么让比对更快、怎么让组装结果更好。
二代测序发展了10年后的今天,几乎所有你要做的分析都有现成的软件帮你实现,所以,做生物信息的人分化成了两种:生物信息工程师和生物信息程序员。
程序员继续优化算法、开发软件;而更多生物、医学专业的人做生物信息,做的是工程师的工作,想办法用现有的工具解决问题。
程序员写程序追求性能,通常选择 C、C++、java 等,这些语言更接近机器语言,运行快,但更难学;
而工程师追求简单易学、开发效率高,通常选择 python 或者 perl,它们抽象成都高,更接近自然语言。
那么 Perl 和 Python 该选那个呢?虽然写些小程序都能轻松搞定,但还是建议 python,一方面稍微好学写,写的程序也更优雅;另外 Python 应用很广泛,包括一些人工智能也用 Python,未来有更多的可能性。
Perl 虽然用的人越来越少了,但是这10来年的积累,大量生信软件(比如 Trinity)都是用它开发的,所以即使不会写,还是要能看的懂。
所以,我的建议是,学会 Python,看懂 Perl。

怎么学

一门编程语言能做很多事情,做网站、开发游戏、爬数据、可视化。Python 的 活更全。
不同应用,用到的编程语言基础是一样的。主要包括数据结构、流程控制、输入输出、函数方法模块等。
但是,编程的套路是完全不一样的。比如,做网站的套路是:怎么解析前端用户的请求、处理请求、与数据库交互、返回结果。
而做生信则完全不同。举个例子,要写一个能统计染色体序列总长的小程序。即使你不会编程也知道,这个程序的输入应该是一个 fasta 格式的文件,程序经过计算,输出序列的总长。套路应该是这样的:
第一步:解析命令行参数,获得 fasta 文件的路径(文件在哪?)
第二步:读取文件内容,解析出每条染色体的长度
第三步:计算出序列总长
第四步:输出结果
所以,建议看书的话,看完基础知识之后,直接开始练习,遇到问题再回过头来解决。切忌像大学学 C语言一样,把一个问题研究一个礼拜,也许在生物信息中根本用不上。
 

视频课程:《生物信息入门之 Python》《生物信息入门之 Perl》,做课不易,谢谢支持!