所有编程语言都是同构的吗?

时间:2015-02-15 22:16:46

标签: compiler-construction language-agnostic isomorphism

对于用某种编程语言编写的任何程序,是否总能编译成具有其他任何语言的同等功能的程序?

2 个答案:

答案 0 :(得分:2)

就原始逻辑而言,是的;只要这两种语言都是图灵完备的。

但是,如果您的代码使用目标语言中不可用的API(例如,网络,文件系统,3D加速或线程),那么不。 (除非您使用目标语言编写完整的虚拟机并在此基础上构建)

例如,没有理智的方法将共享内存,多线程代码移植到Javascript。

答案 1 :(得分:1)

您正在寻找Turing-completeness

虽然所有图灵完备语言在技术上都具有相同的权力,但在一个语言中表达一个想法可能需要比另一个更多的工作量。

此外,他们可能以API等形式提供对底层平台的不同访问量。

这整齐地导致turing-tarpit,这意味着在其中一个中做某事可能是太多的工作,以至于首先为另一种语言编写解释器是一种胜利。