手工翻译代码的技巧
Techniques for translating code by hand
如果我想用不同的编程语言翻译程序代码,我可以选择:使用特殊软件或自己翻译(如果有其他方法,请告诉我)。
就我个人而言,我是C++、C#和Java的初学者。我不熟悉其他语言。我想试着把我的一个C++程序翻译成C#和/或Java。但在此之前,我想学习一下翻译技巧。我想向熟悉这件事的人学习。
那么,你能告诉我把代码从一种编程语言翻译成另一种语言的技巧吗?如果在我开始翻译之前有什么我应该知道的,请告诉我。
-
学习两种语言。理解每种语言的习语和哲学。熟悉常见的编码风格和设计模式。
-
阅读你的源程序,了解它在做什么。
-
利用从(1)中获得的知识和经验,思考如何用目标语言表达相同的总体目标。
-
用目标语言重写程序。
(反例:您的源代码是Java,您看到String a = new String;
。您打开C++并说std::string * a = new std::string;
。错误,返回(1)。)
我见过的一些最糟糕的C#代码是由那些在编写C#语法时用C或C++思考的程序员编写的。
C#和Java与C++有着根本的不同。我不喜欢"翻译"这个词,因为这是错误的态度。实际上,在你学会了如何用新语言思考之后,你需要重写程序。
有一些工具,但我从来没有找到一个完美的。至少如果它在语法上是可转换的,那么库将是一个问题。我更喜欢在语言之间有足够深入的知识(当然还有正在转换的项目),并手动转换所有内容。这样做的好处是,您可以使用每种语言的最佳技术创建项目的克隆(在其他语言中,这可能是不可能的,也可能不是最佳的)。然而,缺点是,您可能在转换时做了一些错误的事情(导致不兼容的最终结果),而且转换速度较慢。
如果您从事测试驱动开发,那么您就拥有了原始实现的所有测试。只要继续用新语言编码,直到你再次通过所有测试。不要太担心Kerrek SB的反例。如果遇到这样的问题,就写更多的测试。
另一方面,如果您还没有一套测试,那么为什么要在应该进行测试的时候浪费时间进行移植呢。
如果有软件可以帮你翻译,你自己"翻译"它不是很困难吗?除非拥有从一种语言翻译到另一种语言的技能有特殊目的
请注意,并非所有语言都具有相同的可计算能力,因此有时可能不起作用
也许专注于一种主要语言会更好。
- 需要将一行代码从C++ Qt翻译成PyQt
- 如何翻译这个给定代码中的 ::* 运算符和member_fn?
- 是否可以动态翻译QT应用程序而无需复制代码
- C++如何用类和函数将我的代码翻译成OOP
- 将g++代码翻译到clion环境中
- 将C++代码翻译成Python的正确方法
- 注释会被翻译成机器代码吗?C++
- C 结构中的分段错误。使用 Matlab Coder 从 Matlab->C 翻译的代码
- 这段代码到OpenCV Java的翻译是什么?
- 有没有工具可以只翻译代码中的注释
- pyqt QTableView printing(4行C ++代码翻译成python)
- C++ 代码翻译成 Java
- 将Java代码翻译成C++
- C++习语,用于在任意翻译单元中的main之前执行任意代码
- QML是在编译时被翻译成本机代码,还是在运行时被解释为JavaScript在web浏览器中的运行方式
- 将带有矢量的 cpp 代码翻译成<string>安卓
- 伪代码翻译
- 将伪代码翻译成c++
- 将下面的c++代码翻译成Nim
- C++代码翻译和解释