Fortran是一个应该得到恰当的荣誉并下葬安息的亡灵。只是,今日之学界中,这个亡灵喜欢跳出来诈诈尸,口中念叨着些咒语,大致是些“祖螳疾学撺宗之法不可破”、“前人智慧的结晶”、“语法严谨、简单易学、运行如风”之类,听着让人心里发毛。就不多说这僵尸还诞下了一个名叫IDL的怪胎的事儿了,省得过分地得罪同行。
1.更换平台编译时、编译旧代码时,动辄出错,且难以排查——很多时候是因为gfortran的F77兼容模式不能完全兼容某些写法,剩下则多是ifort和gfortran(以及它们各自的用户)间的恩♂恩♂怨♂怨,少数时候是代码中调用的某些库的API做了个不痛不痒的改名;
2.代码中有goto;
3.你会看到一个上千行甚至几千行的subroutine/function;
4.你会看到一个有一百多个参数的subroutine/function;
5.各种不知所云的变量名,以及完全无用的注释;
6.“if a > 0”恭喜,编译错误,因为,“你那个0是个短整形,而a是个长整/浮点”;
7,你得经常跑到一个函数的开头去看一个变量的定义;
8.write的某个数字超宽了?恭喜你,你得到了一堆星号,谁关心你辛辛苦苦跑出来的数字去哪儿了啊——我当然知道这么做有它固有的原因,不过,这真是“时代的局限”五个字的最好样本之一;
9.各种没有料到的惊喜,酸爽无比,把least surprise原则破坏殆尽。