Pet*_*sen 14 python fortran code-translation
我在FORTRAN中有一个数值库(我相信FORTRAN IV),我想将它转换为Python代码.我想要真正的源代码,我可以在任何Python虚拟机上导入--- Windows,MacOS-X,Linux,Android.我手动开始这样做,但是库中有大约1000个例程,所以这不是一个合理的解决方案.
小智 10
编辑:添加关于numpy的信息
这样的工具适用于Fortran到Lisp,Fortran到C,甚至Fortran到Java.但是你永远不会有Fortran to Python工具,原因很简单:与Fortran,Lisp或C不同,Python没有GOTO [1].Fortran(尤其是Fortran IV)代码中有许多GOTO.即使Jacopini有一个定理表明你可以用结构化编程模拟GOTO,但实现一个真正的(高效的)语言转换工具实在太麻烦了.
因此,您不仅需要翻译1000个例程的代码,而且还需要了解每个算法及其所有重叠的getos,并在将其编写为Python之前将其转换为结构化程序.祝好运!
嘿,为什么你认为包装好?Windows,OSX和Linux都有Fortran和C [2]编译器以及好的包装器!
对于C(这里不是你的语言,但f2c可能是一个选项),有SWIG,Fortran有f2py,现在与numpy集成.SWIG 对Android有一些支持.
顺便说一下,你可以使用numpy来代替转换为"纯粹的"Python:numpy功能类似于Fortran 90(请参见此处的比较),因此您可以考虑首先将程序翻译为F90以实现更平滑的过渡.Adnroid上似乎也有一个Numpy.如果您在64位Windows上需要numpy,那么这里有二进制文件.
如果您决定使用包装器,gfortran将在Linux上运行(只需从分发包安装),Windows(MinGW)和Android.如果你继续这一行,不要忘记编译FIV代码,因此通常存在"一次性循环"问题(通常编译器选项很好).您可能还需要手动转换一些旧的非标准语句,这些语句在现代编译器中找不到.
显然,您还可以选择将项目语言切换为Lisp或Java ...
[1]您可能会问:但如果GOTO出现问题,那么Fortran to Java工具怎么样呢?好吧,它使用JVM的技巧,它内部有GOTO指令.Python字节码中还有一个GOTO(在这里查找JUMP ),所以这里可能会有一些东西需要调查.所以我之前的陈述是错误的:可能有一个Fortran to Python工具,使用Java中的字节码技巧.但它仍然需要开发,好的库(如numpy,matplotlib,pandas ......)的可用性使得它至少可以说是不必要的.
| 归档时间: |
|
| 查看次数: |
17698 次 |
| 最近记录: |