Fortran 语言的历史

前史

1954 年 IBM John Backus 带领的团队开发出第一个高阶的程序语言 - Fortran。 由于当时 Fortran 语言的竞争对手是汇编语言,所以最受人关注的就是效率问题,也因此第一个编译器就 是经过优化的编译器。在整个 Fortran 语言的历史上,对效率的重视也一直持续着。

在 1958 年,由 IBM 推出第一个主要的语言版本 - Fortran II,带入了子程序的概念。 针对 Fortran 语言的发展持续进行着,不仅仅由 IBM 继续开发,也同时有许多厂商加入, 因此导致不同系统版本间的冲突。许多非 IBM 版本也甚为流行,例如:WATFOR 与 WATFIV。

在 1962 年,不同版本间的差异也提升需要有共同标准的压力。 每个厂商不愿放弃继续扩充的权利,但是使用者却希望他们所开发出来的程序能够有机会在不同的系统中编译与执行。 于是在 1966 年由美国国家标准局 (ANSI) 主导订定第一个程序语言标准,就是现在为人孰知的 Fortran 66。

Fortran 66 标准持续了十多年,直到 1978 年 ANSI 对部分语言的限制有所意见而进行修改, 这就是 Fortran 77,由于相关技术内文是在 1977 年所制定,虽然发布时间是在一年后,依然称为 Fortran 77 标准。 其中值得注意的新功能是 CHARACTER 资料型别与 IF (IF - THEN - ELSE - ENDIF) 控制单元。Fortran 77 并不是扩充 Fortran 66,所以有一些不兼容的地方。 例如在新的标准中便完全移除 "extended-range DO loop"。

在 1980 年,国际标准化组织 (ISO) 未对内容进行更动,将 ANSI Fortran 77 标准发布为国际标准。

近史:Fortran 语言标准

在许多错误与争论后 (Fortran 82, Fortran 8x, Fortran 88),1991 年由 ISO 提供经过大幅修订的 Fortran 标准。也因为其全部技术细节是在 1990 年所制定,所以称为 Fortran 90。 此标准完全取代 Fortran 77 - 所有的 Fortran 77 标准皆包含在 Fortran 90 标准中。此时,NAG 进入了编译器的市场,在此新标准发布后随即发表了新的编译器。而其他的编译器厂商,直到其后两年才陆续推出。

人们普遍认为 Fortran 77 与 90 标准修订的差距损害了语言本身。此外,在最初的几年,Fortran 90 被发现不少的错误。 因此,于 1995 年决定要进行小部分的修订。一开始,有人建议只要进行修改即可,不需要增加其他部分,但是 Fortran 社群的部分人员 (尤其是 High Performance Fortran) 却深信需要扩展某些功能,将会很有帮助。

后来推出了 Fortran 95 标准。由于标准化流程的延误,一直到 1997 年 12 月才发布此新的标准。值得注意的功能是:elemental procedures、FORALL 结构以及用户定义资料型别的预设默认值。

不像 Fortran 90 标准,Fortran 95 并非扩展版本。其中删除了少部分所谓过时 (obsolescent) 的功能。此不兼容性试理论上的说法,因为现存的 Fortran 95 编译器皆支持已经移除的 Fortran 标准。

即使在 Fortran 95 定稿前,仍然持续讨论使用者的需求,并进行修订。原本此标准将会是 Fortran 2000,但或许因为不可避免的延迟,最终推出的版本是 Fortran 2003。

Fortran 2003 标准在 2004 年底提出。

此标准值得注意的功能是 C 语言的互操作性与面向对象。大多数的 Fortran 95 厂商已经将 Fortran 2003 的功能加入到他们的编译器中了, 由于新功能的范围与数量相当多,一般不会预期在下一个版的编译器中会包含所有 Fortran 2003 的功能,但在接下来的版本发布后,将会逐渐完全支持所有 Fortran 2003 的功能。