开发历史
早在1951年,美国IBM公司约翰·贝克斯(John Backus)针对汇编语言的缺点着手研究开发FORTRAN语言,并于1954年在纽约正式对外发布。称约翰·贝克斯提出的FORTRAN语言为FORTRANⅠ,FORTRANⅠ虽然功能简单,但它的开创性工作,在社会上引起了极大的反响。到1957年第一个FORTRAN编译器在IBM704电脑上实现,并首次成功运行了FORTRAN程式。
在1958年,对FORTRANⅠ进行了扩充和完善,引进了子函式等概念,推出了商业化的FORTRANⅡ版本。之后,FORTRAN语言发展迅速,多种版本相继在其它电脑上实现。
在1962年,推出了FORTRAN Ⅳ。FORTRAN Ⅳ没有充分考虑兼容性,导致FORTRANⅡ程式不能在FORTRAN Ⅳ系统中运行,使其套用受到了很大限製,这时语言不兼容性问题和影响被突出表现出来。此前也出现过FORTRAN Ⅲ,但由于存在严重缺陷,没有在电脑上实现。
随着FORTRAN语言版本的不断更新和变化,语言不兼容性问题日益突出,语言标準化工作被提上了日程。1962年5月,美国标準化协会(简称ANSI)成立相关机构着手进行FORTRAN语言标準化的研究工作,并于1966年正式公布了两个标準文本:美国国家标準FORTRAN(ANSI X3.9-1966)和美国国家标準基本FORTRAN(ANSI X3.10-1966),前者相当于FORTRAN Ⅳ,后者相当于FORTRANⅡ。基本FORTRAN是美国国家标準FORTRAN的一个子集,从而实现了语言的向下兼容,初步解决了语言的兼容性问题。通常称美国国家标準FORTRAN为FORTRAN 66。FORTRAN 66的推出在国际上产生了广泛影响,1972年国际标準化组织(简称ISO)在FORTRAN 66基础上製定了FORTRAN语言三级国际标準:基本级、中间级和完全级。
20世纪60代末,结构化程式设计方法提出后,具有结构化特征的程式语言开始出现,如:ALGOL、PASCAL、MODULA、C等。如何将结构化特征引入FORTRAN 66引起电脑厂商和研究机构的高度重视,许多电脑厂商开始对FORTRAN 66进行不同程度的扩充,引入了结构化特征。针对这种情况,ANSI于1976年对FORTRAN 66(ANSI X3.9-1966)进行了修订,吸收了电脑厂商所扩充的一些行之有效的功能,同时增加了许多新内容。ANSI于1978年4月正式公布了新的美国国家标準(程式语言FORTRAN ANSI X3.9-1978),同时宣布撤消ANSI FORTRAN 3.9-1966,通常称新标準为FORTRAN 77(该版本原计画1977年公布)。FORTRAN 77向下兼容FORTRAN 66。在1980年,FORTRAN 77被ISO正式确定为国际标準ISO 1539-1980,该标準分全集和子集。FORTRAN 77推出后,由于具有结构化特征,在社会上得到了广泛套用,同时由于扩充了字元处理功能,在非数值处理领域也能大显身手。
20世纪80年代末,FORTRAN 77结构化和现代化的研究开始兴起,到1991年5月,ANSI公布了新的美国国家标準FORTRAN(ANSI 3.198-1991)。之后,ISO採纳该标準,并确定为国际标準ISO/IEC 1539-1:1991,新国际标準还採纳了我国电脑和信息处理标準化技术委员会程式设计分会提出的多位元组字元集资料类型及相应的内部函式,为非英语国家使用电脑提供了极大的方便。通常称新标準为FORTRAN 90,FORTRAN 90向下兼容FORTRAN 77。之后不久又出现了FORTRAN 95。
FORTRAN 90的推出,使传统FORTRAN语言具有了现代气息。Fortran 2003 的规则已经由ISO组织製定发布。
Windows平台下,微软公司将FORTRAN 90无缝集成在Developer Studio集成开发环境之中,推出了Microsoft FORTRAN PowerStation 4.0,使FORTRAN 90真正实现了可视化编程,彻底告别了传统DOS环境(字元介面),转到了现代Windows环境(视窗介面),共享微软公司Windows平台的丰富资源。
在1997年3月,微软公司和资料设备公司(Digital Equipment Corp,简称DEC)强强联合,合作研究、开发和推出了功能更强的FORTRAN语言新版本:
Digital Visual FORTRAN 5.0,它是Microsoft FORTRAN PowerStation 4.0的升级换代产品。DEC公司在高性能科学和工程计算方面拥有世界领先技术,其高质量的FORTRAN编译器遍及全球。1998年1月,DEC与Compag公司合并,DEC成为Compag公司的全资子公司,于是Digital Visual FORTRAN更名为Compaq Visual FORTRAN,其最新版本为Compag Visual FORTRAN 6.6。Compaq和HP合并之后,Compaq的Fortran小组和Intel的Fortran开发小组合并,开发出来Intel Fotran编译器9,有linux和windows2个版本,其windows版本为Intel Visual Fortran, 可以和微软的Visual Studio,net集成。Windows平台下还有PGI,Absoft,Intel等多个商业公司的Fortran编译器,还有大量小公司的免费Fortran编译器。
OpenMP使Fortran等语言可以容易且免费的实现并行计算。
Linux平台下,其gcc编译器默认支持fortran,另外有Intel,Sun Studio,openMPI,Photran等共享编译器和PGI,Absoft,lachy, IBM,SGI,HP等多个版本的商业编译器。
支持Fortran 2003标準的编译器行将推出,新版本的Sun Studio 编译器已经支持部分 Fortran 2003 文法。
文法版本
FORTRAN I
最早的FORTRAN版本套用于IBM 704系统上,包含了32种语句,包括:
DIMENSION和EQUIVALENCE语句赋值语句三态算术IF语句。以 IF 这个陈述式检查例外情况(ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW和DIVIDE CHECK);IF语句以处理判断开关和判断指示灯GOTO,计算的GOTO,ASSIGN,和赋值GOTODO迴圈格式化的输入与输出(Formatted I/O): FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT和PUNCH非格式化的输入与输出(Unformatted I/O): READ TAPE, READ DRUM, WRITE TAPE和WRITE DRUM其他的输入与输出:END FILE, REWIND,和BACKSPACEPAUSE, STOP,和CONTINUEFREQUENCY语句(为编译器提供最佳化帮助)
FORTRAN II 1958年IBM又推出 FORTRAN II. 支援使用者撰写副编程(subroutines)以及函式(functions)。有六个新陈述如下:
SUBROUTINE, FUNCTION,和ENDCALL和RETURNCOMMON接下来的几年内,FORTRAN II 继续又支援 DOUBLE PRECISION 和 COMPLEX 等资料型态(data types)。
FORTRAN III
IBM 继续开发 FORTRAN III 至1958年时已可以内建组合语言码并新增其它功能;然而这个版本却从未推出。有如704 FORTRAN 和 FORTRAN II、FORTRAN III等的开发过程包含了过多的机器相依性(machine-dependent),造成编程码不易移植到其他机器上的问题。早期提供FORTRAN版本的厂商经常为此所苦
FORTRAN IV
自1961年开始,由于客户的强烈要求,IBM 开始发展FORTRAN IV,目的在于移除一些FORTRAN II 中过于依赖机器本身的编程码(例如:READ INPUT TAPE)同时新增一些新的功能,如 LOGICAL 资料型别。布尔类型(TRUE或者FALSE)与 逻辑IF语句 则取代了 算术IF语句。FORTRAN IV 于1962年推出,最早套用于IBM 7030("Stretch")电脑之上,以及其接续的IBM 7090和IBM 7094版本。
FORTRAN 66
早期的FORTRAN语言发展史上最重要的一件大事也许是美国标準协会(American Standards Association,即今日的 ANSI)的委员们开始为FORTRAN製定标準规格,名为"American Standard Fortran." 1966年委员会推出两套FORTRAN标準版本,分别定义成 FORTRAN(基于FORTRAN IV,用来应付 de facto 标準)和 Basic FORTRAN(基于FORTRAN II,并且移除其平台依赖性)。FORTRAN 第一套标準后来被称为 FORTRAN 66(大家仍习惯称之为 FORTRAN IV)。FORTRAN 66 有效的成功第一套工业标準版的FORTRAN。其功能如下:
主程式,SUBROUTINE,FUNCTION和BLOCK DATA程式单元INTEGER, REAL, DOUBLE PRECISION, COMPLEX和LOGICAL资料类型COMMON, DIMENSION和EQUIVALENCE语句DATA语句用以指定初始值内部和EXTERNAL(例如库)函式赋值语句GOTO,赋值GOTO和计算GOTO语句逻辑IF和算术(三态)IF语句DO迴圈READ, WRITE, BACKSPACE, REWIND和ENDFILE语句以处理顺序读写FORMAT语句CALL, RETURN, PAUSE和STOP语句DATA和FORMAT语句中的霍尔瑞斯常数,作为子程式的实际参数最长六个字母的标识符注解行
FORTRAN 77
在FORTRAN 66 标準推出之后,各家编译器厂商不断推出更具扩充性的标準FOTRAN("StandardFortran"),这使得ANSI于1969年开始着手于1966标準版本的修正工作。最后定稿于1977年,1978年四月正式推出FORTRAN。新的标準规格也就是着名的 FORTRAN 77,这个版本是基于FORTRAN 66之上新增许多功能,弥补过去的缺点:
CHARACTER资料类型,极大地扩展了的字元输入和输出以及对基于字元的资料进行处理的工具IMPLICIT语句IF语句块,以及可选的ELSE和ELSE IF从句,提供改进了的对结构化编程的语言支持。OPEN,CLOSE和INQUIRE语句以改进I/O能力直接访问档案I/OPARAMETER语句以指定常数SAVE语句以储存在地变数内部函式的通用名称1978年推出了一个重要的版本 FORTRAN 77 是为MIL-STD-1753Release版。这个规格由美国国防部製定,这个标準化的FORTRAN 77 编译器并未引入ANSI FORTRAN 77标準。一些新功能最终合并到Fortran 90 标準版。
DO WHILE和END DO语句INCLUDE语句IMPLICIT NONE变数,用于IMPLICIT语句位处理内部函式,基于类似的包含在工业即时Fortran(ANSI/ISA S61.1 (1976))中的函式1991年推出IEEE 1003.9 POSIX标準版,为Fortran-77 的编程人员提供了 POSIX system上的呼叫。有超过一百种功能呼叫被定义在档案上。允许存取POSIX-相容的行程控製(process control)、信号取得(signalhandling)、档案系统控製(file system control)、装置控製(devicecontrol)、程式指定(procedure pointing),以及资料流的输入与输出(stream I/O)。
由于成功的修正了 FORTRAN 77 发展流程,使得原本过于缓慢重复的编程设计可以顺利的应付电脑领域迅速的变化。同时,作为将近15年的“标準FORTRAN”,FORTRAN 77成为历史上最重要的一套电脑语言。
FORTRAN 90
FORTRAN 77的被严重延后的后续版本,非正式的名称是Fortran 90,最终于1992年作为ANSI标準被发表。这一大版本增加了许多新特徵以反映自1978年标準以来发展的在编程方面显着的变化:
自由格式原始码输入,以及小写的Fortran关键字模组,将有关联的过程和资料组合在一起,使它们可以被其它程式单元调用,包括允许限製一些模组的特定部分访问。RECURSIVE过程极大地改善了参数传递机製,允许在编译时检查接口通用过程的使用者自定义接口操作符重载派生/抽象资料类型新的资料类型定义文法,以指定资料类型和变数的其它属性可以在表达式和赋值语句中按整体运算元组(或数组节),由此极大地简化了数学和工程计算。这些特徵包括整体、部分和通配的数组赋值(比如用WHERE语句作选择性赋值),数组常数和表达式,使用者定义的数组函式和数组构造。动态记忆体分配通过ALLOCATABLE属性和ALLOCATE和DEALLOCATE语句POINTER属性,指针赋值和NULLIFY语句以便于建立和操作动态资料结构CASE结构以用于多路选择EXIT和CYCLE语句以用于在按顺序地"跳出"正常的DO迴圈重复最长31个字元的标识符行内注解使用者可控製的可定义的数位精度新的和增强的内部过程
FORTRAN 95
Fortran 95 仅是一个小改版,大部份修正了Fortran 90 standard一些较为显着的问题。虽然如此,Fortran 95 仍有不少的扩充,尤其是在 High Performance Fortran 的规格:
FOR ALL和嵌套的WHERE结构以帮助向量化使用者定义的PURE和ELEMENTAL过程Fortran 95的一个重要补充是ISO技术报告 TR-15581:增强的资料类型工具,非正式名称是可分配的TR。这一标準定义了ALLOCATABLE数组的增强的套用,先于与完全的Fortran 2003兼容的Fortran编译器,以供使用。这些使用包括在过程伪参数列表中以及将函式返回值使用ALLOCATABLE数组作为派生的类型组件。(ALLOCATABLE数组比基于POINTER的数组更受欢迎,因为ALLOCATABLE数组是由Fortran 95保证的,当它们退出範围时会被自动释放掉,避免了记忆体溢出的可能性。另外,别名也不再是最佳化数组引用时的一个问题,可以使编译器生成比用指针时更快的代码。)
Fortran 95的第二个补充是ISO技术报告 TR-15580:浮点异常处理,非正式名称是IEEE TR。这一标準定义了对IEEE浮点算术和浮点异常处理的支持。
FORTRAN 2003
最新的版本,Fortran 2003,有着更大幅度的改版。ISO Fortran Working Group (WG5)的官方网站有关于Fortran 2003新特徵的详细总结,并有PDF档案PDF或者压缩PostScript档案可供直接下载。
据该文所述,本版本的主要改进包括:
增强了衍生类型:带参数的衍生类型,改善了控製的可操作性,改善了结构化的建立和释放。支持面向对象编程:扩展类型和继承,多态,动态类型分配,以及类型绑定过程。改善了资料操作:可分配的组件(编入IEEE TR 15581),延期的类型参数,VOLATILE属性,在数组构造和分配语句中显式定义类型,增强的指针,扩展的初始化表达式,增强的内部过程。增强的输入/输出:非同步传输,流访问,使用者指定衍生类型的传输操作,使用者在格式转换时指定舍入控製,为连线前单元指定常数,FLUSH语句,关键字的规範,访问错误信息。过程指针。支持IEEE浮点演算法和浮点异常处理(编入IEEE TR 15580)。与C语言的互动性支持国际化:访问ISO 106464位元组字元和在格式化的数位输入/输出中选择数位或者逗号。与宿主作业系统增强的集成:访问命令行参数,环境变数和处理器错误信息。
FORTRAN 2008
Fortran 2003之后的下一个版本是Fortran 2008. 一如 Fortran 95, 这只是一个小改版,略微更正了 Fortran 2003 的一些问题, 并且合并了 TR-19767的语言功能。
如同 February 2007, 新的功能包括了Co-array Fortran – 平行处理模式BIT 资料型态。2007年8月,资料型态 BIT 被移除了。2008年2月,Coarrays 的计画已缩小,仅有 Parallel I/O,而研发团队也被裁员了。
特徵
Fortran语言的最大特徵是接近数学公式的自然描述,在电脑裏具有很高的执行效率。
易学,文法严谨。
可以直接对矩阵和复数进行运算,这一点类似matlab。
自诞生以来广泛地套用于数值计算领域,积累了大量高效而可靠的源程式。
很多专用的大型数值运算电脑针对Fortran做了最佳化。
广泛地套用于并行计算和高性能计算领域。
Fortran90,Fortran95,Fortran2003的相继推出使Fortran语言具备了现代高级程式语言的一些特徵。
编程
下面是一个在标準输出设备上使用Fortran90输出Hello World的简单程式,这种程式通常作为开始学习程式语言时的第一个程式:
program main
print *,'hello world'
end
编译器
Windows作业系统下:
Fortran Power Station 4.0 (FPS 4.0),微软公司开发的Fortran编译器。1997年3月转让给DEC公司。
Digital Visual Fortran (DVF),Fortran Power Station的DEC公司版本。
Compaq Visual Fortran (CVF),1998年1月,DEC公司被康柏公司收购,Digital Visual Fortran更名为Compaq Visual Fortran。一个着名的版本是Compaq Visual Fortran 6.5。目前康柏公司已并入惠普公司。Compaq Visual Fortran的最新版是6.6。
Intel Fortran,英特尔公司的开发的Fortran编译器。
Lahey Fortran
Absoft Fortran
OpenWatcom
Linux作业系统下:
PGI Fortran
G77,GNU的Fortran77编译器,集成在GCC中。
GFORTRAN,GNU的最新的Fortran编译器,集成在GCC 4.0中,目的是支持Fortran95和一部分Fortran2003的功能,以替代G77。
g95,跟GFORTRAN同为开放原始码的Fortran95编译器。
程式包
几个着名的Fortran程式包:
IMSL--国际数学和统计程式库
BLAS--Basic Linear Algebra Subroutines
LAPACK--Linear Algebra PACKage
FORTRAN90是ISO(国际标準化组织)于1991年推出的最新标準,我国国家标準是GB/T 3057-1996.除了保持FORTRAN77的全部优点之外,又 增加了许多具有现代特徵的功能,使他成为具有良好的结构特徵,鲜明的时代特徵的程式语言.程式设计是电脑基础教育的基础与重点,高级语言程式设计课是继微机套用基础之后的一门必修的基础课,目的是向学生介绍程式设计的基础知识,使学生掌握高级语言程式设计的基本方法,具有套用电脑的初步能力,并培养学生掌握用电脑处理问题的思维方法。通过该课程的学习,要求学生了解FORTRAN语言的特点,基本成份及使用方法,具有阅读程式和初步编程的能力。进行演算法的初步训练,掌握最基本演算法的设计和实现方法。掌握结构化程式设计方法,能设计出良好风格的程式。具有调试程式的基本能力。
将来发展
Fortran语言是一种极具发展潜力的语言,在全球範围内流行过程中,Fortran语言的标準化不断吸收现代化程式语言的新特徵,并且在工程计算领域仍然佔有重要地位。
不可否认,Fortran语言与目前流行的JAVA,C#等高级语言相比,它缺乏创造力。但是,工科学生必须注意到,由于Fortran在工程计算领域长期处于统治地位,很多优秀的工程计算软体都是运用fortran语言编写,例如ANSYS,Marc,为了能够使用这些商业软体的高级功能,必须先学会fortran语言,才能编写应用程式接口。
在数值计算中,Fortran语言仍然不可替代。Fortran90标準引入了数组计算等非常利于矩阵运算的功能。在数组运算时,Fortran能够自动进行并行运算,这是很多程式语言不具备的。运用fortran语言,你能够运用很多现成的函式软体包,所以非常便利。(目前流行的Matlab的早期版本,主要就是为两个着名的Fortran函式包提供程式接口)



















