回复内容:
泻药。
- 首先我个人的主张是:python !
- 3年的生物信息应用开发和数据分析实践经历表明,我选择Python并在期间推荐周围的同事和朋友也尝试和选择python,是非常有益效率的,至少明显克服了以前perl的部分弊端。
- 空洞的语言之争在程序猿本是一个有违职业操守的行为,但放到某一个特殊场景也许有益新手也引发他人思考。 对生物信息而言,语言其实是一个次要问题,最重要的是建模和求解,而非工具选择;何况有些时候在使用别人的程序时是无法选择语言的。
- 谈点具体的:python代码本身比perl更易学易读易懂,这点基本没太大争议;而对于非一次性程序,尤其是pipeline类的,对“易改”有更高的要求,我们很不希望一个冗长的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可以简单地写成:
<code class="language-text">$foo =~ /Some(Reg)Exp/ or die "failed to parse foo for XXX";
my $wanted_part = $1;
</code>
Copier après la connexion
用perl 做生信快10年了,至今没有发现有什么地方非换成python不可的,语言就是个工具,在于你运用,就像用PC还是MAC,熟练程度不同而已
语言是没有强弱的,不过Python可用的开源包以及更新频率可能要略快于Perl。
另外我个人认为Python学习曲线比较平缓。至少我接触了好多年Perl,现在依然写不出来。。。大牛门可以拍了。
perl和Python和生信关系都不大~ 也没有优劣之分~ 因为可以跳过perl和Python的学习,直接应用Bioperl和BioPython~ doge~ 再者,等到语言被淘汰,我们也老啦~ awk多么老啊,现在不是一直很强大易用~ 生信那么多文本,你难道要用Java去处理。。。有时候简单不代表淘汰,反而在特定的情况意味着强大~ 对于未来发展来说~ Github~ 上面有最先潮的一切~
python吧,不仅可以做实验,还可以直接出工业级代码,biopython就不错
都学比较好吧,除非以后哪个把对方的优点全部吸收了,那就可以不用都学了。