当前位置:Gxlcms > Python > 在生物信息学领域,python和perl谁更强大、易用、代表着未来的发展方向?

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

时间:2021-07-01 10:21:17 帮助过:15人阅读

回复内容:

泻药。
  1. 首先我个人的主张是:python !
  2. 3年的生物信息应用开发和数据分析实践经历表明,我选择Python并在期间推荐周围的同事和朋友也尝试和选择python,是非常有益效率的,至少明显克服了以前perl的部分弊端。
  3. 空洞的语言之争在程序猿本是一个有违职业操守的行为,但放到某一个特殊场景也许有益新手也引发他人思考。 对生物信息而言,语言其实是一个次要问题,最重要的是建模和求解,而非工具选择;何况有些时候在使用别人的程序时是无法选择语言的。
  4. 谈点具体的:python代码本身比perl更易学易读易懂,这点基本没太大争议;而对于非一次性程序,尤其是pipeline类的,对“易改”有更高的要求,我们很不希望一个冗长的perl脚本在三个月后就看不懂。。。还有那些怪异符号对人的震慑感 >=< 另一个方面,因为历史原因,以前积累的生物信息学数据库和开源程序/公开程序(因为某些原因,大家只是共享自己的程序,没有任何开源许可)大部分是perl构建,而后人为了学习和重现也继续学习perl;但实际上这不是必要的,不需要为此而让自己也使用perl,可实践中人们精力有限,学一门语言总比学两门轻松。
  5. 对于 bioXXX方面,其实大同小异,只是社区活跃度有所不同。至少我所见过和使用过的很多程序以及分析流程中,perl主要用于小脚本,python经常用于pipeline串联和某些分析方法实现等,R主要是统计和结果可视化(有 bioconductor),至于SVG的输出,则基本是语言无关的,看各自的喜好了。另一些web类的工具,或者workbench等,则基于java构建的也不在少数,比如solid的部分工具,CLC workbench,貌似是SWT ?等等。甚至Broad的IGV浏览器采用了java web start这种技术(较少见),或许它可以在下个版本考虑javaFX ?!
综上,perl和python各有自己的优缺点,为了学习和重现前人的成果,学习perl无可厚非;为了自己在实践中开发和分析数据,优先推荐python。

顺便推荐点老外们的讨论供参考:
  • biostar.stackexchange.com
  • network.nature.com/grou
  • quora.com/Bioinformatic
作为使用过两种语言的我来说,python确实是写脚本程序的首选,优美而易懂。但是一个让我始终放不下perl的原因是它强大的处理文本的能力,因为绝大多数生物信息分析工作都是各种格式转换和文本处理,perl能强大到用一行命令完成python几十行脚本的任务,而且它和写shell命令行差不多,但可以比shell命令行更出色,另外因为这些处理任务的程序一般只用一次,所以没有维护不维护的问题,但用perl写起来非常省时省力。所以一般写大型程序我会用python,其它文本处理任务用perl。
下面是一个不错的教程教授perl单行命令,学会受益匪浅。
catonmat.net/blog/intro 赞同语言本身没有强弱之分,但总体来说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就不错 都学比较好吧,除非以后哪个把对方的优点全部吸收了,那就可以不用都学了。

人气教程排行