手动将代码从一种语言翻译成另一种语言

6 c matlab fortran programming-languages

我经常在MATLAB/Python中编写代码来测试我的算法是否可行(实际上是可行的).然后我需要将整个代码转换为C,有时在FORTRAN90中.

将中型代码从一种语言手动转换为另一种语言的好方法是什么?

我试过了 :

  • 将整个代码从一个转换为另一个,然后进行测试.(有时会出现错误和错误,这些错误和错误不会消失,并且发现错误的来源会成为问题)

  • 逐行,并检查每几行输出的一致性.(太耗时)

  • 使用像转换器f2c.(根据我的经验,它们非常可怕.我链接到许多库,它们具有不同的函数调用C和Fortran)

也,:

  • 我非常熟悉我所处理的编程语言,因此我不需要手册或参考指南(即我知道语法).

  • 我不是专门针对MATLAB和C提出这个问题,而是作为翻译范例.

  • 关于尺寸,代码长度小于100行.

  • 我不想把一种语言的代码叫做另一种语言.请不要这么做.

Ale*_* C. 7

不同的语言需要不同的范例.你绝对不会以相同的方式编写和设计代码.Matlab,Python,C#或C++.甚至对象层次结构也会根据语言而发生很大变化.

也就是说,如果您的代码包含几个相互关联的过程,那么您可以通过直接逐行转换(每种语言允许您编写两个或三个互连的函数,同时保持惯用).但这只适用于最简单的程序.

使用高级语言进行原型设计,然后以"生产"语言以健壮和干净的方式实现相同的想法是一种非常好的做法,但涉及两个非常不同的事情:

  1. 用你想要的任何语言的原型.测试,试验并说服自己这个想法是有效的.注重大局,不要注重表现,而要注重高层次的想法.还要注意在实施时遇到的困难,因为您将在第2步中再次面对它们.
  2. 从头开始实现X语言生产环境中的想法.它比你没有进行原型设计阶段更快,因为在第1阶段已经遇到了大部分困难.使用惯用X,并专注于正确性.注意角落情况,一般的健壮性,一旦它正常工作,性能.您会注意到大约一半的代码是由1中没有出现的新内容组成的(例如错误检查,角落案例处理,输入/输出,单元测试等).

你可以看到逐行翻译显然不是一个好主意,因为你没有翻译成同一个程序.

此外,当不进行原型设计时,我发现自己丢掉了第一个版本并制作了另一个我更喜欢的版本,即.我发现自己是原型!两次实施同样的事情并不是时间的浪费,这是正常的发展流程.