gpt4 book ai didi

python - 我怎样才能轻松地将 FORTRAN 代码转换为 Python 代码(真正的代码,而不是包装器)

转载 作者:太空狗 更新时间:2023-10-29 17:32:51 37 4
gpt4 key购买 nike

我有一个 FORTRAN 数字库(我相信 FORTRAN IV),我想将它转换为 Python 代码。我想要可以在任何 Python 虚拟机——Windows、MacOS-X、Linux、Android 上导入的真实源代码。我开始手动执行此操作,但库中大约有 1,000 个例程,因此这不是一个合理的解决方案。

最佳答案

Fortran to Lisp 存在这样的工具, 或 Fortran to C ,甚至 Fortran to Java .但是您永远不会拥有 Fortran 到 Python 的工具,原因很简单:与 Fortran、Lisp 或 C 不同,Python 没有 GOTO [1]。而且Fortran(尤其是Fortran IV)代码中有很多GOTO。即使有Jacopini的定理声明您可以使用结构化编程模拟 GOTO,但实现真正(且高效)的语言转换工具太麻烦了。

因此,您不仅需要翻译 1000 个例程的代码,还需要理解每个算法及其所有的叠层 goto,并在编写之前将算法翻译成结构化程序它在 Python 中。祝你好运!

嘿,你为什么认为包装不好? Windows、OSX 和 Linux 都有 Fortran 和 C [2] 编译器和良好的包装器!

对于 C(这里不是您的语言,但 f2c 可能是一个选项),有 SWIG , Fortran 有 f2py , 现在与 numpy 集成. SWIG 有一些 support for Android .

顺便说一句,您可以使用 NumPy 而不是转换为“纯”Python:NumPy 的功能类似于 Fortran 90(参见比较 here),因此您可以考虑先将您的程序转换为 F90 以获得更流畅的体验过渡。似乎还有一个Numpy on Adnroid .如果您需要在 64 位 Windows 上使用 NumPy,可以使用二进制文件 here .

如果您决定使用包装器,gfortran 可在 Linux(只需从分发包安装)、Windows ( MinGW ) 和 Android 上运行.如果你沿着那条线走,不要忘记你编译 FIV 代码,所以通常会有“单程循环”问题(通常编译器选项很好)。您可能还必须手动转换一些在现代编译器中找不到的旧的、非标准的语句。

显然,您还可以选择将项目语言切换为 Lisp 或 Java...

[1] 您可能会问:但如果 GOTO 是问题所在,怎么会有 Fortran 到 Java 的工具呢?嗯,它使用 JVM 的技巧,它内部有 GOTO instruction . Python 字节码中也有一个 GOTO(查找 JUMP here ),因此这里可能需要调查一些内容。所以我之前的说法是错误的:可能有一个 Fortran 到 Python 的工具,使用像 Java 中一样的字节码技巧。但它仍有待开发,并且至少可以说,优秀库(如 NumPy、matplotlib、pandas...)的可用性使其变得没有必要。

关于python - 我怎样才能轻松地将 FORTRAN 代码转换为 Python 代码(真正的代码,而不是包装器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18222561/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com