和C++相比用Fortran编程是怎样的体验?
从编程的角度来看,使用FORTRAN 77的体验绝对不好,如果要用一个字形容,那就是“脏“。相比C++,FORTRAN显得非常木讷和笨拙,语言特性也很原始。但这样的特性也有它的内在逻辑。FORTRAN编程的逻辑是绝对的计算效率至上。用FORTRAN写的程序往往是运行在超级计算机上的科学计算项目,由于运算规模很大,它们对性能有着近乎偏执的极端追求。计算效率和程序的可读性往往无法兼容。极端的效率至上要求我们在循环中尽量用明确的代码代替条件语句,以减少跳转导致的CPU流水线的“气泡”(pipeline bubble);尽可能不调用函数,而是把计算程序全部写在一起,以减小调用函数导致的效率损失;不用OOP,特别要避免频繁创建、销毁和传递对象,这些操作可以让一个原本10分钟就能完成的计算拖满一整天。
都是各种水力模型中的偏微分方程的数值模拟和计算,不能说fortran在这一块上很有优势,而是历史遗留问题,fortran在水力计算数值上遗留了很多当时较为优秀的计算模块,而fortran能较为方便的直接调用这些模块。这么说吧,如果学这个专业不是为了研究,那么学会如何操作【注意是操作,而不是编译】各类fortran软件,就可以达到在未来工作中应用的程度了。所以,fortran在我们专业里面,只是一门应用语言。我们专业的研究生,在读研期间,如果需要研究数值模拟这块的类容,还是要学习继续学习C++【本科其实已经学了C语言作为基础了】以及MATLAB的。这也是为什么fortran只是一个在本科中作为部分工科专业用于应用的程序。