如果我想用不同的编程语言翻译程序的代码,我有以下选择:使用特殊软件或自己做(请告诉我是否有其他方法)。
就个人而言,我是C ++,C#和Java的初学者。我不熟悉其他语言。我想尝试将我的一个C ++程序翻译成C#和/或Java。但在此之前,我想学习一两种关于翻译的技巧。我想从熟悉这种事情的人那里学习它。
那么,您能告诉我将代码从一种编程语言转换为另一种编程语言的技巧吗?如果在我开始翻译之前有一些我应该知道的事情,请告诉我。
答案 0 :(得分:11)
学习这两种语言。理解每种语言的习语和哲学。熟悉常见的编码风格和设计模式。
阅读您的源程序,并了解它的作用。
考虑如何使用从(1)获得的知识和经验,用目标语言表达相同的总体目标。
用目标语言重写程序。
(反例:你的来源是Java,你看到String a = new String;
。你打开C ++然后说std::string * a = new std::string;
。错了,回到(1)。 )
答案 1 :(得分:4)
我见过的一些最糟糕的C#代码是由编写C#语法时用C或C ++思考的程序员编写的。
C#和Java从根本上与C ++不同。我不喜欢“翻译”一词,因为这是错误的态度。在学会了如何用新语言思考之后,你实际上需要重写程序。
答案 2 :(得分:2)
有工具,但我找不到一个完美的工具。至少如果它在语法上是可转换的,那么库将是一个问题。我更喜欢在语言之间有足够的知识(当然,正在转换的项目),并且手动转换所有内容。这样做的好处是你可以使用每种语言的最佳技术(在其他语言中可能不可能或不是最佳)创建项目的克隆。但是,缺点是您可能在执行转换时出错(导致不兼容的最终结果)并且速度较慢。
答案 3 :(得分:1)
如果您进入测试驱动开发,那么您将拥有原始实现的所有测试。只需继续使用新语言编码,直到再次通过所有测试。不要过分担心Kerrek SB's counterexample。如果遇到类似的问题,只需编写更多测试。
另一方面,如果你还没有一套测试,那么为什么你在测试时会浪费时间进行移植。
答案 4 :(得分:0)
如果有一个可以为你做的软件,那么自己“翻译”它不是一种流行吗?除非有特殊目的将翻译技巧从一种语言翻译成另一种语言.... 注意并非所有语言都具有相同的可计算能力,因此它有时可能无效.... 也许最好将注意力集中在一种主要语言上。