为什么Perl在生物学中使用这么多?
解决方法
How Perl Saved the Human Genome Project。
从他的分析:
我认为有几个因素:
> Perl对于切片,切片,扭曲,拧紧,平滑,汇总和以其他方式处理文本是非常好的。虽然生物科学现在涉及大量的数值分析,但大多数主要数据仍然是文本:克隆名称,注释,注释,参考书目。甚至DNA序列是文本的。互换不兼容的数据格式是一个文本拼凑与一些创造性猜测相结合的问题。 Perl的强大的正则表达式匹配和字符串操作操作符以一种与任何其他现代语言不相等的方式来简化这个工作。
> Perl是宽容的。生物数据通常是不完整的,字段可能缺失,或者预期存在一次的字段出现几次(因为例如一个实验重复运行),或者手动输入数据,并且不完全适合预期的格式。 Perl不特别介意值为空或包含奇数字符。可以编写正则表达式来拾取和更正数据输入中的各种常见错误。当然,这种灵活性也可以是诅se。我在下面谈谈更多关于Perl的问题。
> Perl是面向组件的。 Perl鼓励人们使用Perl库模块或经典的Unix面向工具的方法在小模块中编写他们的软件。外部程序可以很容易地使用管道,系统调用或套接字并入Perl脚本中。 Perl5引入的动态加载器允许人们用C程序扩展Perl语言,或者使整个编译库可用于Perl解释器。目前正在努力将所有世界上收集的关于生物数据的智慧纳入一组称为“bioPerl”的模块中(稍后在Perl Journal中将发表文章详细讨论)。
> Perl易于编写和快速开发。解释器不需要提前声明所有的函数原型和数据类型,新变量根据需要弹出存在,调用未定义的函数只会在函数是必需的。调试器与Emacs很好地工作,并允许开发的舒适的交互式风格。
> Perl是一个很好的原型语言。因为Perl是快速和脏的,所以在将它们转换为快速编译语言之前,对Perl中的新算法进行原型化通常是有意义的。
有时,事实证明Perl是足够快,所以算法不必移植;更频繁地可以在C中编写算法的小核心,将其编译为动态加载的模块或外部可执行体,并将应用程序的其余部分留在Perl中(对于以这种方式实现的复杂基因组作图应用的示例,参见http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/)。> Perl是Web CGI脚本的一种很好的语言,随着更多的实验室转向Web发布数据,Perl是越来越重要。