手工翻译代码的技巧

本文关键字:代码 翻译 | 更新日期: 2023-09-27 18:20:14

如果我想用不同的编程语言翻译程序代码,我可以选择:使用特殊软件或自己翻译(如果有其他方法,请告诉我)。

就我个人而言,我是C++、C#和Java的初学者。我不熟悉其他语言。我想试着把我的一个C++程序翻译成C#和/或Java。但在此之前,我想学习一下翻译技巧。我想向熟悉这件事的人学习。

那么,你能告诉我把代码从一种编程语言翻译成另一种语言的技巧吗?如果在我开始翻译之前有什么我应该知道的,请告诉我。

手工翻译代码的技巧

  1. 学习两种语言。理解每种语言的习语和哲学。熟悉常见的编码风格和设计模式。

  2. 阅读你的源程序,了解它在做什么。

  3. 利用从(1)中获得的知识和经验,思考如何用目标语言表达相同的总体目标。

  4. 用目标语言重写程序。

(反例:您的源代码是Java,您看到String a = new String;。您打开C++并说std::string * a = new std::string;错误,返回(1)。)

我见过的一些最糟糕的C#代码是由那些在编写C#语法时用C或C++思考的程序员编写的。

C#和Java与C++有着根本的不同。我不喜欢"翻译"这个词,因为这是错误的态度。实际上,在你学会了如何用新语言思考之后,你需要重写程序。

有一些工具,但我从来没有找到一个完美的。至少如果它在语法上是可转换的,那么库将是一个问题。我更喜欢在语言之间有足够深入的知识(当然还有正在转换的项目),并手动转换所有内容。这样做的好处是,您可以使用每种语言的最佳技术创建项目的克隆(在其他语言中,这可能是不可能的,也可能不是最佳的)。然而,缺点是,您可能在转换时做了一些错误的事情(导致不兼容的最终结果),而且转换速度较慢。

如果您从事测试驱动开发,那么您就拥有了原始实现的所有测试。只要继续用新语言编码,直到你再次通过所有测试。不要太担心Kerrek SB的反例。如果遇到这样的问题,就写更多的测试。

另一方面,如果您还没有一套测试,那么为什么要在应该进行测试的时候浪费时间进行移植呢。

如果有软件可以帮你翻译,你自己"翻译"它不是很困难吗?除非拥有从一种语言翻译到另一种语言的技能有特殊目的
请注意,并非所有语言都具有相同的可计算能力,因此有时可能不起作用
也许专注于一种主要语言会更好。