Hasty Briefsbeta

双语

Fortran for C Programmers

a year ago
  • #C/C++
  • #Programming
  • #Fortran
  • Fortran专为C/C++程序员快速适应而设计,聚焦核心特性并规避常见陷阱。
  • Fortran标准历经'66、'77、'90、'95、2003、2008及2018版本迭代,始终强调向前兼容性。
  • 支持两种源码格式:固定格式(.f)和自由格式(.f90),无保留字且不区分大小写。
  • 变量命名规则:I-N开头默认为INTEGER类型,其余为REAL类型(可手动修改此规则)。
  • 数组必须显式声明,圆括号同时用于数组索引和函数调用。
  • 内置函数无需声明即可调用,其命名遵循隐式类型规则。
  • 现代Fortran采用模块化机制管理类型/数据/子程序接口,同时保留传统语法。
  • 关键术语:'关联'、'派生类型'(类似C++类)、'泛型'(函数重载)。
  • 内置数据类型:INTEGER/REAL/COMPLEX/LOGICAL/CHARACTER,通过'kind'参数指定非标准字节长度。
  • 支持创建用户自定义类型(类似C结构体),可包含继承/析构函数/默认初始值。
  • 数组支持多维存储,秩(rank)表示维度,内存按列优先排列(末维步长最大)。
  • ALLOCATABLE类型支持动态内存分配,离开作用域时自动释放(类似C++的std::vector)。
  • I/O操作内置于语法,支持格式/无格式读写,使用类似UNIX文件描述符的单元号。
  • 子程序分为FUNCTION和SUBROUTINE,支持一级嵌套且内部过程可访问宿主变量。
  • 模块机制实现分离编译和命名空间管理,通过USE语句引用模块内容。
  • 参数默认引用传递,INTENT(IN)声明只读参数,VALUE关键字实现传值调用。
  • 通过命名接口实现重载,允许基于参数类型使用泛型函数名。
  • CLASS关键字支持运行时多态(类似C++虚函数)。
  • 指针是对象而非类型,自动解引用,不可指向其他指针或分配内存的元数据。
  • 预处理依赖具体实现(常用C预处理器),不同编译器支持程度不一。
  • 类型绑定过程模拟C++成员函数,对象作为隐式参数传递。
  • 常见陷阱:静态初始化变量、语句函数、与C语言不同的表达式求值规则。