在生物信息学领域,python和perl谁更强大、易用、代表着未来的发展方向?

回复内容:
泻药。首先我个人的主张是:python ! 3年的生物信息应用开发和数据分析实践经历表明,我选择python并在期间推荐周围的同事和朋友也尝试和选择python,是非常有益效率的,至少明显克服了以前perl的部分弊端。空洞的语言之争在程序猿本是一个有违职业操守的行为,但放到某一个特殊场景也许有益新手也引发他人思考。 对生物信息而言,语言其实是一个次要问题,最重要的是建模和求解,而非工具选择;何况有些时候在使用别人的程序时是无法选择语言的。谈点具体的:python代码本身比perl更易学易读易懂,这点基本没太大争议;而对于非一次性程序,尤其是pipeline类的,对“易改”有更高的要求,我们很不希望一个冗长的perl脚本在三个月后就看不懂。。。还有那些怪异符号对人的震慑感 >=< 另一个方面,因为历史原因,以前积累的生物信息学数据库和开源程序/公开程序(因为某些原因,大家只是共享自己的程序,没有任何开源许可)大部分是perl构建,而后人为了学习和重现也继续学习perl;但实际上这不是必要的,不需要为此而让自己也使用perl,可实践中人们精力有限,学一门语言总比学两门轻松。对于 bioxxx方面,其实大同小异,只是社区活跃度有所不同。至少我所见过和使用过的很多程序以及分析流程中,perl主要用于小脚本,python经常用于pipeline串联和某些分析方法实现等,r主要是统计和结果可视化(有 bioconductor),至于svg的输出,则基本是语言无关的,看各自的喜好了。另一些web类的工具,或者workbench等,则基于java构建的也不在少数,比如solid的部分工具,clc workbench,貌似是swt ?等等。甚至broad的igv浏览器采用了java web start这种技术(较少见),或许它可以在下个版本考虑javafx ?! 综上,perl和python各有自己的优缺点,为了学习和重现前人的成果,学习perl无可厚非;为了自己在实践中开发和分析数据,优先推荐python。顺便推荐点老外们的讨论供参考:http://biostar.stackexchange.com/questions/2742/perl-or-python-for-comparative-genomics http://network.nature.com/groups/bioinformatics/forum/topics/1611 http://www.quora.com/bioinformatics/how-did-perl-start-off-as-the-dominant-language-in-bioinformatics 作为使用过两种语言的我来说,python确实是写脚本程序的首选,优美而易懂。但是一个让我始终放不下perl的原因是它强大的处理文本的能力,因为绝大多数生物信息分析工作都是各种格式转换和文本处理,perl能强大到用一行命令完成python几十行脚本的任务,而且它和写shell命令行差不多,但可以比shell命令行更出色,另外因为这些处理任务的程序一般只用一次,所以没有维护不维护的问题,但用perl写起来非常省时省力。所以一般写大型程序我会用python,其它文本处理任务用perl。下面是一个不错的教程教授perl单行命令,学会受益匪浅。http://www.catonmat.net/blog/introduction-to-perl-one-liners/ 赞同语言本身没有强弱之分,但总体来说python更强大,一方面有google在支持,使用的人多更活跃,另一方面python功能更丰富,可以做文本处理、统计分析,甚至作图,学一门就可以了,对于perl主要只能做文本处理,统计和作图还得再学r。 关于perl和python之争,历史悠久。这里贴一下,看看我收集的,大家是怎么说的

关于生物信息的perl和python的比较和争论由来已久,这里我仅给出几个链接:

做生物信息学:python还是perl?功能强大而又简单易学的编程语言python_有个博客请高手指点:生物信息学应用,学perl还是学python更好?为学生物信息的推荐python

2013年我在china unix 论坛的perl和python版,做了个对这个问题的调查,现在还有很多人参与,到2014底约200+150人参加,大家也可以参考一下:

perl对python 使用调查-python-chinaunix.net python版

perl对python 使用调查-perl-chinaunix.net perl版

perl的接口就是一坨巨大的shi:它强迫你用perlxs这种shi一样的语言写接口,而且api的命名也是一坨shi。随便看了下python的接口写法,好像要干净得多。===================最近为了学习python,用python写了一个简单的代码生成器。感觉python在构建日常脚本方面,与perl相比还是有很多不方便的地方:labmda里只能有一个语句。对于稍微麻烦一点(但却没有那么麻烦)的排序、映射,就得单开函数,而不能直接放在此处。正则表达式不如perl易用。比如perl可以简单地写成:

$foo =~ /some(reg)exp/ or die “failed to parse foo for xxx”;
my $wanted_part = $1;

用perl 做生信快10年了,至今没有发现有什么地方非换成python不可的,语言就是个工具,在于你运用,就像用pc还是mac,熟练程度不同而已
语言是没有强弱的,不过python可用的开源包以及更新频率可能要略快于perl。另外我个人认为python学习曲线比较平缓。至少我接触了好多年perl,现在依然写不出来。。。大牛门可以拍了。
perl和python和生信关系都不大~ 也没有优劣之分~ 因为可以跳过perl和python的学习,直接应用bioperl和biopython~ doge~ 再者,等到语言被淘汰,我们也老啦~ awk多么老啊,现在不是一直很强大易用~ 生信那么多文本,你难道要用java去处理。。。有时候简单不代表淘汰,反而在特定的情况意味着强大~ 对于未来发展来说~ github~ 上面有最先潮的一切~
python吧,不仅可以做实验,还可以直接出工业级代码,biopython就不错
都学比较好吧,除非以后哪个把对方的优点全部吸收了,那就可以不用都学了。

Posted in 未分类

发表评论