Fortran是Formula Translation的缩写,是一种主要用于数值计算的编译型语言,也是世界上第一个被正式推广使用的高级语言。它1954年被提出来,1956年开始正式使用,比常见的编程语言C,C#,C++和python等都早。
由于过于古老,因此很多人甚至认为Fortran根本没有存在的必要,C++等语言完全可以取代Fortran的地位并且具有更好的效果,例如知乎上题为“Fortran还有存在的必要吗?”的问题被浏览了296035次,关注者数量为732。
然而,作为民间数值计算工作者,笔者认为,在兼顾开发效率与运行效率的条件下,Fortran在科学计算领域依然具备着几乎不可替代的优势,一方面是很多理工科行业具有大量的用Fortran编写的遗留代码,将这些代码采用其他语言重写不太现实也没必要,另一方面,对于科学计算工作者来说,如果不是商业软件的开发,算法可能比语言本身更为重要,而Fortran的优势就在于能够让编写者精力集中于算法本身而非程序语言的模式设计上。
从语法格式上看,Fortran分为固定格式和自由格式;从语法标准上看,Fortran分为F77,F90,F03等语法标准。早期的Fortran程序,通常采用固定格式和F77语法标准编写,因此部分Fortran学习者会误认为F77=固定格式。然而实际上并不是这样,语法格式和语法标准并没有必然的联系,Fortran程序员可以采用固定格式用F77标准编写程序,也可以采用自由格式用F77标准编写程序,也可以采用固定格式用F90标准编写程序,还可以采用自由格式用F03标准编写程序…,总之语法格式和语法标准没有对应绑定关系。
(一)固定格式通常以.for或者.f为后缀,以VS+IVF的平台为例,当需要使用固定格式编写程序时,应当在项目中添加Fortran Fixed-form file(.for)
固定格式的主要要求:
(1)程序语句只能写在第7-72列中,第1-6列只能写部分特殊字符用于续行或者语句标号或者注释,第73列以后的语句则会被忽略。具体的规则如下:
因此某些书上的代码为了便于阅读会以以下这种方式表示:
在上图中,SUBROUTINE中的S就位于第7列,同样,末尾的SSP00001中的第一个S则表明其右边的字符已经超过了第72列,会被忽略。
同样,编写程序用的IDE/编辑器针对固定格式也会给出相应的提示:
例如VS会将第72列以后的字符显示为白底:
Sublime text会在第73列的位置显示一条竖线:
以上即为固定格式的规则,与固定格式相对的,叫自由格式,自由格式相对于固定格式来说具有十分大的自由度,在编写时会十分灵活。
自由格式的主要要求:(1)每行可以编写132个字符(实际上某些编译器可支持更长);
(2)多行语句可以写在一行,并使用“;”分隔;
(3)注释可以写在任意列,以“!”开头;
(4)一行的代码最后是“&”,则表明该行和下一行连接,如果一行的开头是“&”,则该行和上一行连接。
因此一个自由格式的程序可以如下编写:
以上就是Fortran固定格式与自由格式的具体规则,从中可以看出自由格式相对于固定格式有较多优势,灵活性大为提高。在早期的代码中,以固定格式居多,但作为2021年的Fortran程序员,一般情况下,我们应当尽量使用自由格式编写Fortran程序。某些软件例如通用有限元软件Abaqus的子程序在默认情况下会限定必须采用固定格式。但是事实上我们可以通过修改安装目录下的.env文件使得其可以采用自由格式编写。
本文为原创文章,转载请注明出处!