我将扩大我的评论。
我认为有一些因素影响了Python在科学计算中的使用,尽管我认为没有明确的历史观点可以说:“是的,这就是为什么Python被用于Ruby或其他方面的原因。 ”
早期历史
Python和Ruby年龄大致相同-根据Wikipedia的说法,Python于1991年正式发布,而Ruby于1995年正式发布。
但是,Python的出现要比Ruby早,因为Google已经在使用Python,并在千年之交寻找Python开发人员。既然我们在编程语言的使用及其对使用语言的影响方面没有悠久的历史,我将得出理论,Google对Python的早期采用对于那些希望超越使用Matlab,C ++, Fortran,Stata,Mathematica等
即,我的意思是说Google在一个拥有数千台机器(考虑并行化和扩展)并不断处理数百万个数据点(再次,扩展)的系统中使用Python。
事件汇合
科学计算曾经在SGI和Crays之类的专用机器上完成(还记得吗?),当然,FORTRAN由于相对简单并且可以更轻松地进行优化而被(并且至今)被广泛使用。
在过去的十年左右的时间里,商品硬件(意味着您或我可以成为百万富翁而买不起的东西)已经占领了科学和海量计算领域。查看当前的前500名排名 -世界上排名最高的“超级计算机”都是使用常规的Intel / AMD硬件构建的。
Python进入了一个好时机,因为Google再次推广Python,而Google使用商品硬件,并且他们拥有数千台机器。
另外,如果您研究一些旧的科学计算文章,它们会在2000年左右开始兴起。
早期支持
这是2000年为《天文数据分析软件和系统》撰写的文章,建议使用Python作为科学计算的语言。
本文引用了有关Python的这句话:
Python是一种解释型的面向对象的编程语言,在科学应用程序中已开始受到相当多的关注(Python,1999)。这是因为Python和一般的脚本语言代表了许多科学项目的下一个逻辑步骤(Dubois 1994)。首先,Python提供了一种解释性编程语言,可以将其视为科学程序已经使用的简单命令语言的扩展。
其次,Python易于与用其他语言编写的软件集成。结果,它既可以用作驱动现有程序的控制语言,也可以用作将不同系统组合在一起的粘合语言。最后,Python以书籍和在线参考的形式提供了大量第三方模块,已建立的用户群以及各种文档。由于这个原因,人们可能会认为它是高度精炼和扩展的版本,是科学家在编写自己的命令解释器时经常试图完成的工作。
因此,您可以看到Python早在90年代末就具有吸引力,这是因为它的功能与当时的现有系统相似,并且很容易将Python与C和现有程序集成在一起。根据文章的内容,Python可以追溯到1995-1996年的时间段已投入科学使用。
人气增长差异
Ruby的受欢迎程度随Ruby On Rails的兴起而爆发,Ruby的兴起始于2004年。我在大学的时候,第一次真正听到有关Ruby的嗡嗡声时,那是在2005-2006年。django for Python大约在同一时间发布(根据Wiki,2005年7月),但是Ruby社区的焦点似乎非常集中在促进其在Web应用程序中的使用。
另一方面,Python已经拥有适合科学计算的库:
还有很多,尽管我不了解他们的很多时间表(除了浏览他们的下载站点之外),但是Python还具有SciPy(基于NumPy构建,于2006年发布),并与R(统计语言)绑定。在2000年代初期,有了MatPlotLib,并且在ipython中也有了一个非常强大的shell环境。
ipython于2000年代初首次发布,并添加了许多功能,使其非常适合科学计算,例如集成的matplotlib图形和能够管理计算集群。
从以上文章:
还值得一提的是其他一些与Python相关的科学计算项目。Python的数字扩展为Python添加了快速的数组和矩阵操作(Dubois,1996年),MMTK是基于Python的分子建模工具包(Hinsen,1999年),Biopython项目正在开发基于Python的工具,用于生命科学研究(Biopython,1999年), Visualization Toolkit(VTK)是具有Python绑定的高级可视化软件包(VTK,1999)。另外,Python社区中正在进行的项目正在开发图像处理和绘图的扩展。最后,在(Greenfield,2000)中介绍的工作描述了STScI项目中Python的使用。
Python的科学和数字软件包的好清单。
因此,很多原因可能是由于其悠久的历史以及直到2000年代Ruby的相对默默无闻,而由于Google的传福音,Python获得了广泛的关注。
因此,如果您在1995年至2000年期间评估脚本语言,那么您真正在看什么?有Perl,其语法在语法上可能已经足够不同,以至于人们不想使用它,然后有Python,它具有更清晰的语法和更好的可读性。
是的,可能有很多自我增强功能-Python已经拥有了所有这些强大而有用的用于科学计算的库,而Ruby则倡导在科学中使用它的少数派声音,并且像SciRuby一样涌现了一些库,但是在过去的十年中,Python的工具已经成熟。
Ruby的整个社区似乎对将Ruby进一步发展为Web语言更加感兴趣,因为这确实使它广为人知,而Python则走了一条不同的道路,后来被广泛用作Web语言。