来自当知百科
跳转到: 导航搜索
  
4c70c27dca355.jpg

目录

FORTRAN开发历史

  早在1951年,美国IBM公司约翰·贝克斯(JohnBackus)针对汇编语言的缺点着手研究开发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(ANSIX3.9-1966)和美国国家标准基本FORTRAN(ANSI X3.10-1966),前者相当于FORTRANⅣ,后者相当于FORTRANⅡ。基本FORTRAN是美国国家标准FORTRAN的一个子集,从而实现了语言的向下兼容,初步解决了语言的兼容性问题。通常称美国国家标准FORTRAN为FORTRAN66。FORTRAN 66的推出在国际上产生了广泛影响,1972年国际标准化组织(简称ISO)在FORTRAN66基础上制定了FORTRAN语言三级国际标准:基本级、中间级和完全级。

  20世纪60代末,结构化程序设计方法提出后,具有结构化特征的程序设计语言开始出现,如:ALGOL、PASCAL、MODULA、C等。如何将结构化特征引入FORTRAN66引起计算机厂商和研究机构的高度重视,许多计算机厂商开始对FORTRAN66进行不同程度的扩充,引入了结构化特征。针对这种情况,ANSI于1976年对FORTRAN 66(ANSIX3.9-1966)进行了修订,吸收了计算机厂商所扩充的一些行之有效的功能,同时增加了许多新内容。ANSI于1978年4月正式公布了新的美国国家标准(程序设计语言FORTRANANSI X3.9-1978),同时宣布撤消ANSI FORTRAN 3.9-1966,通常称新标准为FORTRAN77(该版本原计划1977年公布)。FORTRAN 77向下兼容FORTRAN 66。在1980年,FORTRAN77被ISO正式确定为国际标准ISO 1539-1980,该标准分全集和子集。FORTRAN77推出后,由于具有结构化特征,在社会上得到了广泛应用,同时由于扩充了字符处理功能,在非数值处理领域也能大显身手。

  20世纪80年代末,FORTRAN77结构化和现代化的研究开始兴起,到1991年5月,ANSI公布了新的美国国家标准FORTRAN(ANSI3.198-1991)。之后,ISO采纳该标准,并确定为国际标准ISO/IEC1539-1:1991,新国际标准还采纳了我国计算机和信息处理标准化技术委员会程序设计分会提出的多字节字符集数据类型及相应的内部函数,为非英语国家使用计算机提供了极大的方便。通常称新标准为FORTRAN90,FORTRAN 90向下兼容FORTRAN 77。之后不久又出现了FORTRAN 95。

  FORTRAN 90的推出,使传统FORTRAN语言具有了现代气息。Fortran 2003 的规则已经由ISO组织制定发布。

  Windows平台下,微软公司将FORTRAN 90无缝集成在DeveloperStudio集成开发环境之中,推出了Microsoft FORTRAN PowerStation 4.0,使FORTRAN90真正实现了可视化编程,彻底告别了传统DOS环境(字符界面),转到了现代Windows环境(视窗界面),共享微软公司Windows平台的丰富资源。

  在1997年3月,微软公司和数据设备公司(Digital EquipmentCorp,简称DEC)强强联合,合作研究、开发和推出了功能更强的FORTRAN语言新版本: 

  Digital Visual FORTRAN 5.0,它是Microsoft FORTRAN PowerStation4.0的升级换代产品。DEC公司在高性能科学和工程计算方面拥有世界领先技术,其高质量的FORTRAN编译器遍及全球。1998年1月,DEC与Compag公司合并,DEC成为Compag公司的全资子公司,于是DigitalVisual FORTRAN更名为Compag Visual FORTRAN,其最新版本为Compag Visual FORTRAN6.6。Compaq和HP合并之后,Compaq的Fortran小组和Intel的Fortran开发小组合并,开发出来IntelFotran编译器9,有linux和window2个版本,其windows版本为Intel Visual Fortran,可以和微软的VisualStudio.net集成。Windows平台下还有PGI,Absoft,Intel等多个商业公司的Fortran编译器,还有大量小公司的免费Fortran编译器。

  openMPI使Fortran等语言可以容易且免费的实现并行计算。

  Linux平台下,其gcc编译器默认支持fortran,另外有Intel,SunStudio,openMPI,Photran等共享编译器和PGI,Absoft,lachy,IBM,SGI,HP等多个版本的商业编译器。

  支持Fortran 2003标准的编译器行将推出,新版本的Sun Studio 编译器已经支持部分 Fortran 2003语法。

Fortran的版本

FORTRAN I

  最早的FORTRAN版本应用于IBM 704系统上,包含了32种语句,包括:

  DIMENSION和EQUIVALENCE语句赋值语句三态算术IF语句。以 IF这个陈述式检查例外情况(ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW和DIVIDECHECK);IF语句以处理判断开关和判断指示灯GOTO,计算的GOTO,ASSIGN,和赋值GOTODO循环格式化的输入与输出(FormattedI/O): FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE,PRINT和PUNCH非格式化的输入与输出(Unformatted I/O): READ TAPE, READ DRUM, WRITETAPE和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 和 FORTRANII、FORTRANIII等的开发过程包含了过多的机器相依性(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 StandardsAssociation,即今日的 ANSI)的委员们开始为FORTRAN制定标准规格,名为"American StandardFortran." 1966年委员会推出两套FORTRAN标准版本,分别定义成 FORTRAN(基于FORTRANIV,用来应付 de facto 标准)和 Basic FORTRAN(基于FORTRANII,并且移除其平台依赖性)。FORTRAN 第一套标准后来被称为 FORTRAN 66(大家仍习惯称之为FORTRAN IV)。FORTRAN 66 有效的成功第一套工业标准版的FORTRAN。其功能如下:

  主程序,SUBROUTINE,FUNCTION和BLOCK DATA程序单元INTEGER, REAL, DOUBLEPRECISION, 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和ELSEIF从句,提供改进了的对结构化编程的语言支持。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语句IMPLICITNONE变量,用于IMPLICIT语句位处理内部函数,基于类似的包含在工业实时Fortran(ANSI/ISA S61.1(1976))中的函数1991年推出IEEE 1003.9 POSIX标准版,为Fortran-77 的编程人员提供了 POSIXsystem上的呼叫。有超过一百种功能呼叫被定义在文件上。允许存取POSIX-相容的行程控制(processcontrol)、信号取得(signalhandling)、档案系统控制(file systemcontrol)、装置控制(devicecontrol)、程序指定(procedurepointing),以及资料流的输入与输出(stream I/O)。

  由于成功的修正了 FORTRAN 77发展流程,使得原本过于缓慢重复的编程设计可以顺利的应付计算机领域迅速的变化。同时,作为将近15年的“标准FORTRAN”,FORTRAN77成为历史上最重要的一套电脑语言。

FORTRAN 90

  FORTRAN 77的被严重推迟的后续版本,非正式的名称是Fortran90,最终于1992年作为ANSI标准被发表。这一大版本添加了许多新特性以反映自1978年标准以来发展的在编程方面显著的变化:

  自由格式源代码输入,以及小写的Fortran关键字模块,将有关联的过程和数据组合在一起,使它们可以被其它程序单元调用,包括允许限制一些模块的特定部分访问。RECURSIVE过程极大地改善了参数传递机制,允许在编译时检查接口通用过程的用户自定义接口操作符重载派生/抽象数据类型新的数据类型定义语法,以指定数据类型和变量的其它属性可以在表达式和赋值语句中按整体操作数组(或数组节),由此极大地简化了数学和工程计算。这些特性包括整体、部分和通配的数组赋值(比如用WHERE语句作选择性赋值),数组常数和表达式,用户定义的数组函数和数组构造。动态内存分配通过ALLOCATABLE属性和ALLOCATE和DEALLOCATE语句POINTER属性,指针赋值和NULLIFY语句以便于创建和操作动态数据结构CASE结构以用于多路选择EXIT和CYCLE语句以用于在按顺序地"跳出"正常的DO循环重复最长31个字符的标识符行内注释用户可控制的可定义的数字精度新的和增强的内部过程

FORTRAN 95

  Fortran 95 仅是一个小改版,大部份修正了Fortran 90standard一些较为显著的问题。虽然如此,Fortran 95 仍有不少的扩充,尤其是在 High PerformanceFortran 的规格:

  FOR ALL和嵌套的WHERE结构以帮助向量化用户定义的PURE和ELEMENTAL过程Fortran95的一个重要补充是ISO技术报告TR-15581:增强的数据类型工具,非正式名称是可分配的TR。这一标准定义了ALLOCATABLE数组的增强的应用,先于与完全的Fortran2003兼容的Fortran编译器,以供使用。这些使用包括在过程伪参数列表中以及将函数返回值使用ALLOCATABLE数组作为派生的类型组件。(ALLOCATABLE数组比基于POINTER的数组更受欢迎,因为ALLOCATABLE数组是由Fortran95保证的,当它们退出范围时会被自动释放掉,避免了内存溢出的可能性。另外,别名也不再是优化数组引用时的一个问题,可以使编译器生成比用指针时更快的代码。)

  Fortran 95的第二个补充是ISO技术报告 TR-15580:浮点异常处理,非正式名称是IEEETR。这一标准定义了对IEEE浮点算术和浮点异常处理的支持。

FORTRAN 2003

  最新的版本,Fortran 2003,有着更大幅度的改版。ISO Fortran Working Group(WG5)的官方网站有关于Fortran 2003新特性的详细总结,并有PDF文件PDF或者压缩PostScript文件可供直接下载。

  据该文所述,本版本的主要改进包括:

  增强了衍生类型:带参数的衍生类型,改善了控制的可操作性,改善了结构化的创建和释放。支持面向对象编程:扩展类型和继承,多态,动态类型分配,以及类型绑定过程。改善了数据操作:可分配的组件(编入IEEETR15581),延期的类型参数,VOLATILE属性,在数组构造和分配语句中显式定义类型,增强的指针,扩展的初始化表达式,增强的内部过程。增强的输入/输出:异步传输,流访问,用户指定衍生类型的传输操作,用户在格式转换时指定舍入控制,为连接前单元指定常数,FLUSH语句,关键字的规范,访问错误信息。过程指针。支持IEEE浮点算法和浮点异常处理(编入IEEETR 15580)。与C语言的交互性支持国际化:访问ISO106464字节字符和在格式化的数字输入/输出中选择数字或者逗号。与宿主操作系统增强的集成:访问命令行参数,环境变量和处理器错误信息。

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的特性

  Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。

  易学,语法严谨。

  可以直接对矩阵和复数进行运算,这一点类似matlab。

  自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。

  很多专用的大型数值运算计算机针对Fortran做了优化。

  广泛地应用于并行计算和高性能计算领域。

  Fortran90,Fortran95,Fortran2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。

Fortran语言的Hello World程序

  下面是一个在标准输出设备上使用Fortran90输出HelloWorld的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:

  program main

  print *,'hello world'

  end

Fortran编译器

  Windows操作系统下:

  Fortran Power Station 4.0 (FPS4.0),微软公司开发的Fortran编译器。1997年3月转让给DEC公司。

  Digital Visual Fortran (DVF),Fortran Power Station的DEC公司版本。

  Compaq Visual Fortran (CVF),1998年1月,DEC公司被康柏公司收购,Digital VisualFortran更名为Compaq Visual Fortran。一个著名的版本是Compaq Visual Fortran6.5。目前康柏公司已并入惠普公司。Compaq Visual Fortran的最新版是6.6。

  Intel Fortran,英特尔公司的开发的Fortran编译器。

  Lahey Fortran

  Absoft Fortran

  OpenWatcom

  Linux操作系统下:

  PGI Fortran

  G77,GNU的Fortran77编译器,集成在GCC中。

  GFORTRAN,GNU的最新的Fortran编译器,集成在GCC4.0中,目的是支持Fortran95和一部分Fortran2003的功能,以替代G77。

  g95,跟GFORTRAN同为开放源代码的Fortran95编译器。

Fortran程序包

  几个著名的Fortran程序包:

  IMSL--国际数学和统计链接库

  BLAS--Basic Linear Algebra Subroutines

  LAPACK--Linear Algebra PACKage

  FORTRAN90是ISO(国际标准化组织)于1991年推出的最新标准,我国国家标准是GB/T3057-1996.除了保持FORTRAN77的全部优点之外,又增加了许多具有现代特性的功能,使他成为具有良好的结构特性,鲜明的时代特性的程序设计语言.程序设计是计算机基础教育的基础与重点,高级语言程序设计课是继微机应用基础之后的一门必修的基础课,目的是向学生介绍程序设计的基础知识,使学生掌握高级语言程序设计的基本方法,具有应用计算机的初步能力,并培养学生掌握用计算机处理问题的思维方法。通过该课程的学习,要求学生了解FORTRAN语言的特点,基本成份及使用方法,具有阅读程序和初步编程的能力。进行算法的初步训练,掌握最基本算法的设计和实现方法。掌握结构化程序设计方法,能设计出良好风格的程序。具有调试程序的基本能力。

Fortran的将来

  Fortran语言是一种极具发展潜力的语言,在全球范围内流行过程中,Fortran语言的标准化不断吸收现代化编程语言的新特性,并且在工程计算领域仍然占有重要地位。

  不可否认,Fortran语言与目前流行的JAVA,C#等高级语言相比,它缺乏创造力。但是,工科学生必须注意到,由于Fortran在工程计算领域长期处于统治地位,很多优秀的工程计算软件都是运用fortran语言编写,例如ANSYS,Marc,为了能够使用这些商业软件的高级功能,必须先学会fortran语言,才能编写应用程序接口。

  在数值计算中,Fortran语言仍然不可替代。Fortran90标准引入了数组计算等非常利于矩阵运算的功能。在数组运算时,Fortran能够自动进行并行运算,这是很多编程语言不具备的。运用fortran语言,你能够运用很多现成的函数软件包,所以非常便利。(目前流行的Matlab的早期版本,主要就是为两个著名的Fortran函数包提供程序接口)

个人工具
名字空间

变换
查看
操作
导航
工具箱