Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 如何从一种语言翻译成另一种语言?_Language Agnostic - Fatal编程技术网

Language agnostic 如何从一种语言翻译成另一种语言?

Language agnostic 如何从一种语言翻译成另一种语言?,language-agnostic,Language Agnostic,我不想要一个自动化的解决方案。 当你不得不将一个程序从一种语言翻译成另一种语言时,你会怎么做?您喜欢从头重写它,还是复制粘贴它,只更改需要更改的内容? 最好的选择是什么?通常情况下,使用原作进行重写以获得灵感和方向是最好的选择 用一种语言做某事的方式很可能不是用另一种语言做某事的正确方式 当涉及到复制粘贴时,很少能做到这一点——语言不同,遵循不同的语法规则 当然,这一切都取决于源语言和目标语言 根据您的评论——javascript和python,我认为重写是最好的选择。这可能主要取决于两种语言之

我不想要一个自动化的解决方案。 当你不得不将一个程序从一种语言翻译成另一种语言时,你会怎么做?您喜欢从头重写它,还是复制粘贴它,只更改需要更改的内容?
最好的选择是什么?

通常情况下,使用原作进行重写以获得灵感和方向是最好的选择

用一种语言做某事的方式很可能不是用另一种语言做某事的正确方式

当涉及到复制粘贴时,很少能做到这一点——语言不同,遵循不同的语法规则

当然,这一切都取决于源语言和目标语言


根据您的评论——javascript和python,我认为重写是最好的选择。

这可能主要取决于两种语言之间的相似性和翻译的意义

例如,将C89代码转换成C++可能不会太难,因为当你复制粘贴C++时,它应该被编译出来,它是一个兼容的超级集合到C89。不过,我几乎不认为这是一个翻译。 另一方面,将Java翻译成Haskell肯定需要完全重写,因为语言的paradygms(甚至比语法更糟糕)是完全不同的。

这取决于

目标快速破解一次性使用?工作的长期生产项目

我的资源有多少工时?旧代码的测试套装和/或功能规范?熟悉两种语言吗

最重要的是,语言之间的差异。两者都是概念OO?功能的反射控制结构?以及可用的库

请注意,这颗子弹并不像看上去那么微不足道,这在很大程度上取决于原始程序的惯用性。例如,有些人编写非常类似C的Perl代码,例如使用C控制流和非常类似C++的面向对象设计,可以简单地复制到C或C++,有些人使用函数式编程、闭包和反射功能编写极其复杂的惯用Perl;这显然不能翻译成C/C++

还有,原始代码的质量。例如,好的程序将具有独立的业务逻辑,通常以标准配置和控制流表示,更易于直接克隆

例如,从PHP到Perl的转换对于黑客工作来说,您通常可以从复制开始,因为许多PHP结构可以1:1映射到等效的Perl结构,只需选择Perl模板web库即可。结果代码不是很好的Perl,但对于某些目的来说已经足够好了

另一方面,在将LISP代码翻译成Java时,最好将原始代码翻译成功能规范,然后从头开始重新编写。您的Python和JavaScript示例可能在同一个框中

通常,您有两种语言,它们至少共享一些概念,例如,它们都有OO和一些命令式控制结构,因此您最终会使用这两种方法的某种组合—代码的一部分可能会被不经意地翻译,而另一部分则需要从头开始重新编写

第二种完全重写方法越多,最终得到的代码质量越高、惯用且功能越强大

考虑一下。我懒得数一数这个列表上有多少人,但假设有100人

如果要将其中一个转换为另一个,这意味着至少有100*99=9900个可能的转换组合

这真是太多了。由于大多数语言都是独特的,翻译非常非常依赖于源语言和目的语言

考虑一下。作者说他花了一年半的时间才为这些特定的语言做了一名好的译者。显然,这不是一项微不足道的任务

根据你的雄心壮志,你可能会花一天或几年的时间将一个程序从a语言翻译成B语言

这需要多长时间取决于您的技能、源代码的大小、语言A和B的复杂性以及它们的相似性


正如您所看到的,这不是一项琐碎的任务,它高度依赖于您的情况。

这可能取决于发送/发送的语言,但重写可能是一个好主意,因为每种语言都有其惯用的技术和技巧,有时是不可翻译的。比如说python到javascript。