要成为专注于数学和科学计算的语言,我总是对Fortran标准库中完全缺乏有用的数学例程感到困惑。人们希望它至少带有一个计算标准偏差和均值的例程,但是事实并非如此。特别是随着Fortran 90的推出和模块的添加(从而减少了名称空间的污染),我看不出这种严重缺乏服务的任何原因。
我想听听您关于为什么会这样的知识。
要成为专注于数学和科学计算的语言,我总是对Fortran标准库中完全缺乏有用的数学例程感到困惑。人们希望它至少带有一个计算标准偏差和均值的例程,但是事实并非如此。特别是随着Fortran 90的推出和模块的添加(从而减少了名称空间的污染),我看不出这种严重缺乏服务的任何原因。
我想听听您关于为什么会这样的知识。
Answers:
早在开发FORTRAN时,就没有代码的可移植性。一台机器上的FORTRAN编译器接受与另一台机器上的编译器略有不同的语言,这绝对是例行程序。最常见的变化是名称长度。IBM 1130 FORTRAN允许五个字符,DEC-10允许六个字符,CDC 6600(我的第一台机器,我的第一种实际汇编语言)允许七个字符。语言需要三维数组。至少一台小型计算机(Varian 76?)FORTRAN允许七维数组。
公司通常会扩展其FORTRAN语言,以使其机器对客户更具吸引力,并且尽管这些扩展可能提供相似的功能,但它们从来都不相同。许多编译器提供了用于执行文件I / O和覆盖管理的扩展,但它们从来都不相同。有时他们甚至都没有。
从FORTRAN到FORTRAN的转换,是将程序从一台计算机移植到另一台计算机上,这是一个非常繁忙的家庭手工业,能够做到这一点的人总能找到工作。(我做了两次这样的转换:我帮助将原始的Matuszek-Reynolds-McGehearty-Cohen“星际迷航”游戏从CDC 6600移植到DEC-10,并且将EKG分析程序从Varian 76移植到TI 990。这些项目是相同的。)
尽管有些人尝试过,但这种事情使得提供“标准”库非常非常困难。IMSL库是最大的库,但它以源代码形式提供,并且要求客户在其系统上使用它。
另外:希望FORTRAN程序员在数值方法方面具有合理的背景。那时,几乎每个星球上的FORTRAN程序员都学会了如何为自己做平均值和标准差,作为一项家庭作业。每个FORTRAN程序员都在学校学习了二等分法和Newton-Raphson迭代法(如今称为“ Newton方法”)。Runge-Kutta方法通常是死记硬背地讲授的,当时,六阶Runge-Kutta积分器是教科书的示例。(很久以后,人们才发现四阶Runge-Kutta是成本效益曲线上的“最佳位置”。)
并且:程序员很少更改计算机,而不更改工作。那些确实四处走动的程序员都被期望并被要求非常擅长于学习新系统的工作原理,并了解其中的差异。
在那种环境下,几乎不需要任何“标准” STDDEV代码,这是任何称职的入门级FORTRAN程序员都可以在睡眠中编写的东西。
cernlib对您从事高能物理研究的人员做了很多您要的工作,它仍然很有用。
FORmulaTRANslation语言的设计旨在使您可以轻松编写自己的公式。当您可以从Fortran 90开始编写时,为什么Fortran应该定义均值函数
xmean = sum(x)/ max(size(x),1)?