在 Fortran 中是否应该避免使用名单?如果是的话,推荐的替代方案是什么?

问题描述 投票:0回答:2

我经常使用名单功能来灵活地将参数列表输入到 FORTRAN 程序中,但是有一天,当我搜索以提醒自己它们的用途时,我遇到了这样的说法

它(f77 的名单语言扩展)现已包含在 Fortran 90 语言中。然而,NAMELIST 是一个设计不佳的功能,应尽可能避免。

我只是想知道

  1. 这是普遍持有的观点吗?
  2. 如果是,为什么会这样?
  3. 建议的参数输入替代方案是什么? (我当然使用netcdf进行网格数据文件输入,我在这里考虑运行时参数设置)。
fortran fortran90 fortran95
2个回答
3
投票

Metcalf 等人的经典著作《现代 Fortran 解释》中没有提及名单效率低下和糟糕的设计。 https://books.google.com/books?id=V7UVDAAAQBAJ&lpg=PP1&pg=PA197#v=onepage&q=namelist%20I/O&f=false 相反,我相信名单 - 特别是在 Fortran 2003 和 2008 中添加的增强功能 - 是非常有用且灵活的数据 I/O 方法。


0
投票

我不认为名单本身有什么不好,但它们确实有一些局限性。在我正在从事的一个项目中,事实证明,名单的结构必须在声明名单时已知,这一点相当大。我发现段落可能比我解释得更好。就我而言,必须从对参数的嵌套子列表的了解为零的地方(应用程序驱动程序)读取参数;它实际上对有多少子列表一无所知(每个应用程序组件有一个子列表,组件的数量/类型是运行时选项)。我高度重视代码的划分,因此我希望应用程序的驱动程序与每个组件的内部结构(例如参数的数量/名称/类型)无关。这使得使用名单几乎不可能。

© www.soinside.com 2019 - 2024. All rights reserved.