Fortran 使用不熟悉的语言开始使用新代码

Fortran 使用不熟悉的语言开始使用新代码,fortran,code-discovery,Fortran,Code Discovery,我正在用一种我不太熟悉的语言(FORTRAN)开始一个新的项目,目前正处于“发现”阶段。通常,通读和理解代码是一项相当简单的任务,然而,这段代码相当大,结构也不太合理。是否有任何方法/技巧/技巧/工具来映射出50k行相当密集的代码?我总是找到执行的起点,或者其他代码(我没有处理)调用我正在检查的代码的地方。然后我就从那里开始阅读,根据需要进行方法调用,以了解发生了什么。我总是找到执行的起点,或者其他代码(我没有处理)在哪里调用我正在检查的代码。然后我从那里开始阅读它,根据需要执行方法调用以了解发

我正在用一种我不太熟悉的语言(FORTRAN)开始一个新的项目,目前正处于“发现”阶段。通常,通读和理解代码是一项相当简单的任务,然而,这段代码相当大,结构也不太合理。是否有任何方法/技巧/技巧/工具来映射出50k行相当密集的代码?

我总是找到执行的起点,或者其他代码(我没有处理)调用我正在检查的代码的地方。然后我就从那里开始阅读,根据需要进行方法调用,以了解发生了什么。

我总是找到执行的起点,或者其他代码(我没有处理)在哪里调用我正在检查的代码。然后我从那里开始阅读它,根据需要执行方法调用以了解发生了什么。

调试器是您的朋友—如果您有一个用于Fortran的调试器

在你进一步深入之前,我会先熟悉语言的基本语法,以及一些缺点,比如根据变量类型的名称和声明的位置对变量类型进行假设等。如果你没有得到这些东西,那么即使有一个有用的调试器,你也很可能会迷失方向

还要记住,结构有时依赖于语言。您正在查看的代码对于您所使用的语言来说可能结构不好,但是对于Fortran来说可能结构非常好,因为Fortran有自己的一套特性。我想我只是说,首先要有一个开放的心态,否则你会带着不必要的倾向,你正在看的代码是不好的。这可能是,但可能只是你不习惯的东西


祝你好运。大约20年前,当我在Fortran中编程时,我相当喜欢Fortran。由于某些平台上的计算速度,Fortran仍然是某些应用程序的首选语言。在学术界仍然有相当多的调试器。

调试器是您的朋友—如果您有一个用于Fortran的调试器的话

在你进一步深入之前,我会先熟悉语言的基本语法,以及一些缺点,比如根据变量类型的名称和声明的位置对变量类型进行假设等。如果你没有得到这些东西,那么即使有一个有用的调试器,你也很可能会迷失方向

还要记住,结构有时依赖于语言。您正在查看的代码对于您所使用的语言来说可能结构不好,但是对于Fortran来说可能结构非常好,因为Fortran有自己的一套特性。我想我只是说,首先要有一个开放的心态,否则你会带着不必要的倾向,你正在看的代码是不好的。这可能是,但可能只是你不习惯的东西

祝你好运。大约20年前,当我在Fortran中编程时,我相当喜欢Fortran。由于某些平台上的计算速度,Fortran仍然是某些应用程序的首选语言。在学术界仍然有相当多的应用。

三十年前,当我编写Fortran(F77)时,我们的设备有限,无法自动绘制未知代码库的流程图。它很难看,而且仅限于绘图仪床所能提供的房地产。正如@Simon提到的,您还可以(并且可以在当时的一些版本中)使用调试器

现在,交互式探索更容易了。此外,您还可以尝试使用IDE。我个人没有尝试过,因为Fortran不再是我的主要开发语言,而是Fortran的Eclipse插件,而且似乎正在积极开发中(上一个版本是在这个月)。

三十年前我编写Fortran(F77)代码时,自动绘制未知代码库的功能有限。它很难看,而且仅限于绘图仪床所能提供的房地产。正如@Simon提到的,您还可以(并且可以在当时的一些版本中)使用调试器


现在,交互式探索更容易了。此外,您还可以尝试使用IDE。我个人没有尝试过,因为Fortran不再是我的主要开发语言,而是Fortran的Eclipse插件,而且似乎正在积极开发中(上一个版本是本月)。

振作起来。Fortran的优点之一是它非常简单。除非你找到一个被编程用来利用“聪明”技巧的代码。我建议你做的第一件事是通过一个编译器来运行你的程序,该编译器的语法检查和标准符合性达到了最高。旧的(Fortran 90之前)Fortran以人们用来绕过语言局限性的巧妙技巧而臭名昭著。对于更熟悉现代语言的程序员来说,有一些窍门:

--公共区块;和其他全球国家机制;尤其糟糕的是用于重命名和重新定义变量的公共块

--等价(可怕,但你可能会被它们绊倒)

--固定格式源格式

--使用CONTINUE语句,以及在同一CONTINUE语句中有多个循环结束的做法

--隐式变量声明(要对这些变量进行分类,请在程序、模块、子例程或函数语句出现的地方立即插入行implicit NONE)

--进入子项目的多个入口点

--还有一些我非常熟悉的人,我想不起来了

如果这些对你来说毫无意义,它们很快就会。最后,您可能希望了解了解Fortran。它很贵,但很有用

问候


马克

振作起来。Fortran的优点之一是它非常简单。除非你找到一个被编程用来利用“聪明”技巧的代码。我建议你做的第一件事是通过一个编译器来运行你的程序,该编译器的语法检查和标准符合性都达到了极限。旧版(Fortran 90之前)Fortran以人们使用的巧妙技巧而臭名昭著