01
Pandas1.0最近推出了。但是你知道它是如何诞生的吗?
这个故事可以从很多地方开始,但让我们从1954年开始。1954年有两件事对Pandas的诞生非常重要。
02
1954年3月1日,美国在比基尼环礁试验了一枚高当量热核炸弹。氘化锂(LiD)是燃料。天然锂包括两种不同的同位素——锂6和锂7。氘化锂6被认为是很好的氢弹燃料,而在假设氘化锂7是完全惰性的情况下,其在反应中被用作慢化物质。事实证明,这个假设是极其错误的——本来应该缓和反应的物质最终变成了燃料。导致本来应该是600万吨级的爆炸结果变成了1500万吨级的爆炸。
这次试验的后果在时间和空间上都是深远的。一艘日本渔船的船员遭受了严重的辐射中毒,马绍尔群岛的许多人遭受了放射性尘降物的长期伤害。它让人们了解了放射性尘降物到底是什么,也让人们了解了身处核爆炸之外并不安全——核爆炸会影响数百英里外的人们。也许最引人注目、也与我们的故事最相关的是1963年《有限禁止核试验条约》(Limited Test Ban Treaty),该条约终止了在大气层、水下和太空的核试验。布拉沃城堡清楚地说明了这些实验有多么危险,破坏有多么广泛,而且基本上不可能保证不出现重大错误。
当然,这意味着要对模拟核爆炸的计算机技术进行重大投资,而不是过于依赖试验。这项技术已经处于起步阶段,但模拟核武器的任务将推动科学计算直到今天。这种对计算机和软件的追求正是硅谷的根本来源。
03
“我的大部分工作都是因为懒惰。我不喜欢写程序,所以,当我在IBM 701上编写计算导弹轨迹的程序时,我开始编写一个程序系统,使编写程序更容易。”-约翰·巴克斯
对于任何一个Pandas的用户来说,这种思维过程应该是非常熟悉的——它本质上是Pandas、R、SQL以及其他任何试图让你专注于数学和数据操作的声明性编程的框架的动力。Fortran(关于“公式转换”的合成词)是编写科学程序的工具,与等价的Python代码相比,它可能看起来冗长,但肯定比汇编更具表现力。你可以遵循这里的代码,但不一定是一堆运算码的情况。它还具有仍然在使用的最古老的编程语言的特点。它是在1950年开发的,但它的第一个项目是在1954年运行的。
Fortran不仅仅是科学计算的精神先驱。用于进行矩阵操作的Fortran包,如BLAS和LAPACK,都在pandas的“引擎盖下”。您计算机上的翻译不一定是用Fortran编写的(默认是C语言)。但它是一个选项,C的来源,如果你真的需要性能,它通常是你想要的。
值得注意的是,BLAS、LAPACK和大部分Fortran科学生态系统的其他部分仍然是军工复合体的产品。或者,至少是那些可用的开源软件。像能源部、DARPA和NSF(有国防授权)这样的组织提供资金和工作时间来保持这些软件包的最新更新直到今天。这就是为什么它仍然被使用的部分原因。然而,Fortran语言只是我们故事的一半。pandas不仅仅是关于快速操作—它还与语法有关。
04
好了,Fortran是汇编的一个进步,但它并不是NumPy或Pandas代码的真正样子。为此,我们需要具有良好的向量化语法的基于数组的语言。我要谈论的是APL,因为它是最不可思议的。我敢肯定韦斯·麦金尼说这是Pandas的灵感。
有一种说法是,有两种编程语言,一种是“从计算机向上”开始的,另一种是“从数学向下”开始的。Fortran虽然相对友好,但它仍然会让你考虑诸如预分配内存之类的事情。APL来自一位名叫Kenneth E. Iverson的数学家,他提出了一种操作数组的符号。最终他们用Fortran编写了一个实现,它成为了一种真正的编程语言。
APL简洁、富有表现力,使矩阵运算成为一等公民。当然,你必须学会一堆奇怪的符号,需要一个定制的键盘,必须内化包含“副词”概念的语法。但是,如果您所做的只是操作数据,那就没有那么糟糕了。它也更接近数学符号,如果你有这方面的背景,这是很好的。