
字词转换是中文维基的一项自动转换,目的是通过计算机程序自动消除繁简、地区词等不同用字模式的差异,以达到阅读方便。
字词转换包括全局转换和手动转换,本说明所使用的标题转换和全文转换技术,都属于手动转换。
| Fortran | |
|---|---|
| 多重范式: 过程化, 命令式, 结构化, 面向对象 | |
|
面市時間
|
1957 |
|
设计者
|
约翰·巴科斯 |
|
实作者
|
约翰·巴科斯 & IBM |
| strong, static | |
|
主要实作产品
|
Absoft, GFortran, G95, Intel, Lahey/Fujitsu, Open Watcom, Pathscale, PGI, Silverfrost, SUN, XL Fortran, others |
|
影响语言
|
ALGOL 58, PL/I |
Fortran,亦译为福传,是由Formula Translation两个字所组合而成,意思是“公式翻译”。它是世界上第一个被正式采用并流传至今的高级编程语言。
目录 |
Fortran语言最初是由数值计算方面的需要而发展起来的。1953年12月,IBM公司编程员约翰·巴科斯(J. Backus)深深体会到编写程序的困难性,他写了一份备忘录给董事长斯伯特·赫德(Cuthbert Hurd),建议为IBM704系统设计一套全新的电脑语言,从根本上提高编程效率。当时IBM公司顾问冯·诺伊曼强烈反对这项建议,他认为巴克斯的建议是没有必要的,而且不切实际。但赫德批准了这项计划。1957年,IBM公司开发出第一套FORTRAN语言,运行在IBM704计算机上。历史上第一支FORTRAN编程在马里兰州的西屋贝地斯核电厂试验。1957年4月20日星期五的下午,一位IBM编程员决定在电厂内编译第一支FORTRAN编程,当编程码输入后,经过编译,打印机列出一道讯息:“源程序错误……右侧括号后面没有逗号”,现场人员都感到讶异,这个错误经过修正之后,编程编译器再度执行,二十二分钟后,打印机输出正确结果。西屋电气公司意外地成为FORTRAN的第一个商业用户。1958年推出FORTRAN Ⅱ,几年后又推出FORTRAN Ⅲ,1962年推出FORTRAN Ⅳ,开始广泛被使用。
1966年,美国标准化协会制定了Fortran(x3.9-1966,也就是Fortran 66)和Fortran(x3.10-1966)标准。这时Fortran语言还不是结构化的程序设计语言。
1976年,美国标准化协会重新对Fortran(x3.9-1966)进行了评估,公布了新的Fortran标准,也就是Fortran 77。Fortran 77是具有结构化特性的编程语言。Fortran77在短时间内取得了巨大的成功,广泛地应用于科学和工程计算,几乎统治了数值计算领域。
1980年,Fortran 77被ISO接纳为国际标准。
1991年发布的Fortran 90大幅改进了旧版Fortran的型式,加入了对象导向的观念与提供指针,并同时加强数组的功能。
Fortran后来又陆续推出Fortran 95、Fortran 2003等更新版本。
最早的FORTRAN版本应用于IBM 704系统上,包含了32种语句,包括:
DIMENSION和EQUIVALENCE语句IF语句。[1]IF 这个陈述式检查例外情况(ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW和DIVIDE CHECK);IF语句以处理判断开关和判断指示灯GOTO,计算的GOTO,ASSIGN,和赋值GOTODO循环FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT和PUNCHREAD TAPE, READ DRUM, WRITE TAPE和WRITE DRUMEND FILE, REWIND,和BACKSPACEPAUSE, STOP,和CONTINUEFREQUENCY语句(为编译器提供优化帮助)[2]1958年IBM又推出 FORTRAN II. 支援使用者撰写副编程(subroutines)以及函数(functions). 有六个新陈述如下:
SUBROUTINE, FUNCTION,和ENDCALL和RETURNCOMMON接下来的几年内,FORTRAN II 继续又支援 DOUBLE PRECISION 和 COMPLEX 等资料型态(data types)。
IBM 继续开发 FORTRAN III 至1958年时已可以内建组合语言码并新增其它功能;然而这个版本却从未推出。有如704 FORTRAN 和 FORTRAN II、FORTRAN III 等的开发过程包含了过多的机器相依性(machine-dependent),造成编程码不易移植到其他机器上的问题。早期提供FORTRAN 版本的厂商经常为此所苦
自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语言发展史上最重要的一件大事也许是美国标准协会(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 66 标准推出之后,各家编译器厂商不断推出更具扩充性的标准FOTRAN("Standard Fortran"), 这使得ANSI于1969年开始着手于1966标准版本的修正工作。最后定稿于1977年,1978年四月正式推出FORTRAN。新的标准规格也就是著名的 FORTRAN 77,这个版本是基于FORTRAN 66之上新增许多功能,弥补过去的缺点:
CHARACTER数据类型,极大地扩展了的字符输入和输出以及对基于字符的数据进行处理的工具IMPLICIT语句IF语句块,以及可选的ELSE和ELSE IF从句,提供改进了的对结构化编程的语言支持。OPEN,CLOSE和INQUIRE语句以改进I/O能力PARAMETER语句以指定常数SAVE语句以保存本地变量1978年推出了一个重要的版本 FORTRAN 77 是为MIL-STD-1753 Release版。这个规格由美国国防部制定,这个标准化的FORTRAN 77 编译器并未引入ANSI FORTRAN 77 标准。一些新功能最终合并到Fortran 90 标准版。
DO WHILE和END DO语句INCLUDE语句IMPLICIT NONE变量,用于IMPLICIT语句1991年推出IEEE 1003.9 POSIX 标准版, 为Fortran-77 的编程人员提供了 POSIX system 上的呼叫。有超过一百种功能呼叫被定义在文件上。允许存取POSIX-相容的行程控制(process control)、信号取得(signal handling)、档案系统控制(file system control)、装置控制(device control)、程序指定(procedure pointing),以及资料流的输入与输出(stream I/O)。
由于成功的修正了 FORTRAN 77 发展流程,使得原本过于缓慢重复的编程设计可以顺利的应付计算机领域迅速的变化。同时,作为将近15年的“标准FORTRAN”,FORTRAN 77成为历史上最重要的一套电脑语言。
FORTRAN 77的被严重推迟的后续版本,非正式的名称是Fortran 90,最终于1992年作为ANSI标准被发表。这一大版本添加了许多新特性以反映自1978年标准以来发展的在编程方面显著的变化:
RECURSIVE过程WHERE语句作选择性赋值),数组常数和表达式,用户定义的数组函数和数组构造。ALLOCATABLE属性和ALLOCATE和DEALLOCATE语句POINTER属性,指针赋值和NULLIFY语句以便于创建和操作动态数据结构CASE结构以用于多路选择EXIT和CYCLE语句以用于在按顺序地"跳出"正常的DO循环重复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,有着更大幅度的改版。ISO Fortran Working Group (WG5)的官方网站有关于Fortran 2003新特性的详细总结,并有PDF文件PDF或者压缩PostScript文件可供直接下载。
据该文所述,本版本的主要改进包括:
VOLATILE属性,在数组构造和分配语句中显式定义类型,增强的指针,扩展的初始化表达式,增强的内部过程。FLUSH语句,关键字的规范,访问错误信息。下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
以 Fortran 90/95 自由格式的写法为例
! 驚嘆號之後是註解 program main ! 這行可以省略,但是寫大程式的時候會發生混亂 write (*,*) "hello, world!" ! 第一個 * 表示輸出縮排使用內定值, 第二個 * 表示不指定輸出格式 write (unit = *, fmt = * ) "hello, world!" ! 作一樣的事 stop ! 這行代表程式結束,可以省略 end program main ! end 之後的 program main 也可以省略,但寫上是比較嚴謹的
几个著名的Fortran Package:
IF的话,会消耗4个指令词,需要把常数零放入存储中,然后执行三个机器循环,而如果使用转换指令来实现IF的话,只需要1到3个指令词就够了,不需要将常数存入存储,只需要1到3个机器循环来执行。一个优化的编译器如FORTRAN最有可能采用的是更精简的和通常来说更快的转换指令,而不是比较指令(使用指换指令同时也允许FREQUENCY语句来优化IF,而如果使用比较指令的话则无法实现)。同时,比较指令还将-0和+0认为是不同的值,而转换零和转换非零语句将它们视为相同的值。The fundamental unit of program is the basic block; a basic block is a stretch of program which has a single entry point and a single exit point. The purpose of section 4 is to prepare for section 5 a table of predecessors (PRED table) which enumerates the basic blocks and lists for every basic block each of the basic blocks which can be its immediate predecessor in flow, together with the absolute frequency of each such basic block link. This table is obtained by an actual "execution" of the program in Monte-Carlo fashion, in which the outcome of conditional transfers arising out of IF-type statements and computed GO TO'S is determined by a random number generator suitably weighted according to whatever FREQUENCY statements have been provided.
|
查 • 论 • 编 • 历
|
|
|---|---|
| 工业编程语言 | A+ - Ada - 汇编语言 - B - Brainfuck - COBOL - Curl - D - Eiffel - Erlang - FORTRAN - IronPython - Java - Jython - LISP - Lua - SCILAB - MATLAB - MATHEMATICA - Nuva - Oberon - OCaml - Perl - PHP - PostScript - Powerbuilder - Python - R - REXX - Ruby - Self - Smalltalk - Tcl/Tk - C# - F# - J# - Microsoft Visual C# |
| C/C++语言 | C - C++ - Turbo C++ - Borland C++ - C++ Builder- C++/CLI - Objective-C - Microsoft Visual C++ |
| BASIC语言 | BASIC - BASICA - GW-BASIC - QBASIC - QuickBASIC - True BASIC - Turbo BASIC - PowerBASIC - DarkBASIC - ETBASIC - GVBASIC Visual Basic .NET - Visual Basic - VBScript - VBA |
| Pascal/Delphi语言 | Pascal语法:(Pascal - Turbo Pascal - Object Pascal - Free Pascal) Pascal+Delphi语法:(Delphi) |
| ECMAScript方言 | ActionScript - DMDScript - JavaScript - JScript |
| GPU用着色器语言 | Cg - GLSL - HLSL |
| 学术编程语言 | APL/J - Clean - Haskell - Logo - ML - Prolog - Scheme - SAC |
| 数据库相关编程语言 | Clipper - Visual FoxPro - SQL - SQL預存程序 |
| 其他编程语言 | ALGOL - Forth - Modula-2/Modula-3 - MUMPS - PL/I - Simula |
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History