Fortran(“公式翻译”的缩写)是一种高级编程语言,特别适合科学和工程应用。它是为电子计算机开发的第一批编程语言之一,自诞生以来经历了显著的发展。Fortran 允许高效地操作数组数据,并支持复杂的数学计算,使其成为数值天气预测、计算物理学和生物信息学等领域的首选语言。
Fortran 于 1950 年代由 IBM 开发,作为一种专为数值计算和科学计算设计的语言。第一个版本 Fortran I 于 1957 年发布。其核心理念是创建一种语言,使科学家和工程师能够编写程序,而无需了解底层硬件的复杂性。
随后推出了多个版本的 Fortran,每个版本都增加了新特性并改善了可用性。Fortran II 紧随其后,增加了结构化编程特性。1966 年,Fortran IV 被引入,成为行业标准。Fortran 77(于 1978 年发布)增加了字符数据类型和改进的输入/输出能力。
从 1991 年起,Fortran 90 引入了数组编程、模块化编程、递归和动态内存分配。Fortran 2003 和 Fortran 2008 进一步增强了语言,增加了面向对象编程和与 C 语言的改进互操作性。最新标准 Fortran 2018 引入了进一步的增强,包括对并行处理的改进兼容性和功能。
Fortran 在许多科学和工程学科中仍然被广泛使用,得到了现代编译器(如 GNU Fortran(gfortran)和 Intel Fortran Compiler)的支持。它拥有庞大的遗留代码库,许多科学库都是用 Fortran 编写的,使其在某些领域成为关键语言。
Fortran 是一种强类型语言,要求明确声明变量类型。例如:
INTEGER :: i
REAL :: x
CHARACTER(len=10) :: name
Fortran 在处理数组方面表现出色,允许对整个数组进行简单语法的操作。
REAL, DIMENSION(10) :: A
A = 2.0 * A ! 将数组 A 的每个元素乘以 2
Fortran 提供了常规控制结构,如循环和条件语句。
DO i = 1, 10
IF (A(i) > 0) THEN
PRINT *, '正数'
END IF
END DO
Fortran 允许定义函数和子程序以实现模块化编程。
FUNCTION square(x)
REAL :: square
REAL, INTENT(IN) :: x
square = x * x
END FUNCTION square
默认情况下,Fortran 有一条规则,变量名以 "I"、"J"、"K"、"L"、"M" 或 "N" 开头的变量会被隐式视为 INTEGER。这可以被覆盖以提高清晰度。
IMPLICIT NONE ! 禁用隐式类型
INTEGER :: I
REAL :: R
Fortran 支持 do-while 循环,根据条件进行重复执行。
i = 1
DO WHILE (i <= 10)
PRINT *, i
i = i + 1
END DO
Fortran 具有强大的用户定义类型,称为派生类型,允许类似结构的数据定义。
TYPE :: Person
CHARACTER(len=20) :: name
INTEGER :: age
END TYPE Person
TYPE(Person) :: p1
Fortran 支持模块,用于封装数据和过程,促进代码重用和组织。
MODULE myModule
CONTAINS
SUBROUTINE mySubroutine()
! 实现
END SUBROUTINE
END MODULE
Fortran 支持指针,便于动态内存管理,类似于 C 语言。
REAL, POINTER :: pA
ALLOCATE(pA(10)) ! 动态分配数组
Fortran 具有与 C 语言互操作的特性,允许混合语言编程。
INTERFACE
FUNCTION c_function(x) BIND(C, NAME="c_function")
INTEGER(C_INT) :: c_function(INTEGER)
END FUNCTION c_function
END INTERFACE
最流行的 Fortran 编译器包括:
虽然 Fortran 并不像其他一些语言那样常与现代 IDE 关联,但仍有几个 IDE 支持它:
构建 Fortran 项目通常涉及创建扩展名为 .f、.f90 或 .f95 的源文件,并使用 Fortran 编译器进行编译。一个典型的命令可能如下所示:
gfortran -o my_program my_source.f90
Fortran 广泛用于科学计算、数值天气预测、气候建模、计算物理、计算化学和生物信息学。它以在重数值计算和模拟中的性能而闻名。
Fortran 在科学和工程编程领域的主要竞争对手包括:
Fortran 有几种源到源翻译工具,可以帮助开发人员将遗留代码转换为更现代的语言或优化现有代码。一些工具包括:
这些工具简化了从旧版本 Fortran 或完全不同编程范式的过渡,同时帮助保持性能和功能。