回复内容:
泻药。
- 首先我个人的主张是: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>
用perl 做生信快10年了,至今没有发现有什么地方非换成python不可的,语言就是个工具,在于你运用,就像用PC还是MAC,熟练程度不同而已
语言是没有强弱的,不过Python可用的开源包以及更新频率可能要略快于Perl。
另外我个人认为Python学习曲线比较平缓。至少我接触了好多年Perl,现在依然写不出来。。。大牛门可以拍了。
perl和Python和生信关系都不大~ 也没有优劣之分~ 因为可以跳过perl和Python的学习,直接应用Bioperl和BioPython~ doge~ 再者,等到语言被淘汰,我们也老啦~ awk多么老啊,现在不是一直很强大易用~ 生信那么多文本,你难道要用Java去处理。。。有时候简单不代表淘汰,反而在特定的情况意味着强大~ 对于未来发展来说~ Github~ 上面有最先潮的一切~
python吧,不仅可以做实验,还可以直接出工业级代码,biopython就不错
都学比较好吧,除非以后哪个把对方的优点全部吸收了,那就可以不用都学了。
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn