为什么没有fortran标准库?


10

要成为专注于数学和科学计算的语言,我总是对Fortran标准库中完全缺乏有用的数学例程感到困惑。人们希望它至少带有一个计算标准偏差和均值的例程,但是事实并非如此。特别是随着Fortran 90的推出和模块的添加(从而减少了名称空间的污染),我看不出这种严重缺乏服务的任何原因。

我想听听您关于为什么会这样的知识。


自从我使用fortran以来已有20年了,在那些日子里,我对标准所说的只是我使用的机器上的东西并没有给予太多的关注。我发现可用的数学库数量庞大,并且在我使用的所有机器上都是一致的。我想知道这是否是因为尽管这些库不是标准的,但它们是否普遍存在?(我不知道这是一个问题)。
马丁·约克

Answers:


17

早在开发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程序员都可以在睡眠中编写的东西。


>另外:FORTRAN程序员应该在数值方法方面有合理的背景-与今天相反,今天看来程序员的首要技能是学习如何使用Google :-)
AndersK 2011年

3
无论如何,每个人都使用了NAG
Martin Beckett

1
@MartinBeckett:这早于NAG。
John R. Strohm 2013年

1
@Rook,恐怕您注定要非常失望。
John R. Strohm 2015年

1
@Rook我绝对可以做到,但是我不知道我会在第一次尝试时以高效且数字稳定的方式来做到它们。
Ixrec 2015年

2

我个人认为这是由于MKL库造成的。如果您正在寻找高性能的数学库,那么MKL是您所需要的。它并不昂贵,并且在其项目中执行数学计算的实验室可以负担得起。


您介意对此进行更详细的解释-它如何以及为什么回答所提出的问题?在Stack Exchange上不太欢迎“仅链接的答案”
gnat



-1

FORmulaTRANslation语言的设计旨在使您可以轻松编写自己的公式。当您可以从Fortran 90开始编写时,为什么Fortran应该定义均值函数

xmean = sum(x)/ max(size(x),1)?


3
您假设数组x充满了值。通常这是一个非常糟糕的假设。
约翰·R·斯特罗姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.