在某些科学环境中,通常离不开 FORTRAN,因为大多数开发人员只知道这个习语,并且有很多遗留代码和相关经验。
坦率地说,高性能编程的其他跨平台选项并不多(C++ 可以完成这项任务,但语法、零开始数组和指针与某些人不兼容)。
所以,让我们假设一个新项目必须使用 Fortran 90,但我想用它构建最现代的软件架构,同时与最新的编译器兼容(英特尔 ifort,但也包括 Sun/HP/IBM 编译器)
所以我想强加一些众所周知的常识,但在我的环境中还不是标准:
implicit none
等#ifdef DEBUG
)具有更多检查和所有可能的英特尔编译器检查(数组边界、子例程接口(interface)等)所有这些的目标是拥有值得信赖、可维护和模块化的代码。然而,在许多遗留代码中,可重用性并不是一个重要的目标。
我搜索了有关面向对象的 Fortran、按契约(Contract)编程(断言/前提条件/等)的引用资料,发现只有丑陋和过时的文档、没有大型项目参与的人完成的语法和论文,以及死项目.
关于这个主题的任何好的 URL、建议、引用文件/书籍?
最佳答案
我的5美分。
Fortran Wiki是一个很好的起点。它有关于使用现代 Fortran 编程的不同方面的文章。单元测试、调试、泛型编程等等。也很有趣table关于 Fortran 2003 标准的编译器支持可用。 (正如 Blklight 已经提到的,某些 2003 功能在编译器中不可用。这是比较不同编译器的好地方。)
I'm a C++ guy but I'm stuck with some F90 projects.
我推荐阅读这门类(class):Introduction to Modern Fortran . M. S. B. 提到了著名的“Fortran 95/2003 Explained”,但这本书足够大而且细节丰富。相反,上面提到的类(class)是一个很好的起点。也看看An Interactive Fortran 90 Programming Course来自利物浦大学。
Mistakes in Fortran 90 Programs That Might Surprise You .这个页面标题不言自明。 =)
嗯...我的书签中还有一些指向 PSTI RESEARCH LECTURE SERIES "SCIENTIFIC COMPUTING WITH FORTRAN 95" 的链接.试一试。
J.F. Sebastian 提到了 F2Py 并给出了教授 Python 的建议。我同意他的意见。 Python 不是我最喜欢的语言。但它足以教它有用。除了已经提到的预处理器(其中许多是用 Python 编写的)和 F2Py 之外 SCons - 现代软件构建工具。
附言上周我在 lulu.com 买了一本电子书。 Scientific Software Development in Fortran德鲁·麦考马克。我希望它是好的阅读,但突然没有时间。作者是 Forpedo(Fortran Wiki 中提到的 Fortran 特定预处理器之一)的开发者,也是许多关于 Objective-C 和 Python 编程的书籍和教程的作者。
关于oop - 编写健壮的 "modern"Fortran 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2758635/