用简单的语言,Python、Perl和Ruby在翻译成其他语言时有什么区别?
更新: 收到了很多很棒的信息,谢谢大家——我回去重新看了我的问题,基于一些回答提到可以做XYZ,这并不是我想问的。我的问题核心是:“我想用简单的语言了解为什么在移植到其他语言时,Python、Perl和Ruby各自的表现会是这样的。”
我一直在比较Perl、Python和Ruby之间的差异——对我来说,这些差异中最有趣的一点是,似乎可以将Python转写成C语言,但却无法将Perl转写成任何语言。关于Ruby我没有找到相关的信息,但我猜它几乎所有东西都是以对象为基础,这可能让它转写成其他语言变得困难,甚至不可能。
我主要想用简单的语言了解为什么在移植到其他语言时,Python、Perl和Ruby各自的表现会是这样的。
4 个回答
你的问题几乎没有什么意义,尤其是考虑到你链接的那些问题。
阅读一下为什么不把Perl翻译成C? 可能会帮助你理解生活、宇宙和一切。
其实把它们翻译成其他语言并不是不可能,因为任何一种图灵完备的语言都可以模拟其他的图灵完备语言。问题在于如何生成一个高效的翻译,因为有些语言支持的功能在另一种语言中模拟起来要么非常困难,要么非常复杂。
我明白你想问什么,但这个问题问得不太对(我稍后会解释)。
答案是因为Perl没有一个正式的语言定义。Perl有点特别,因为它的语言参考就是解释器的实现。其他语言,比如Python和C,都是有语言定义的。这些定义是参考标准,编译器或解释器是根据这些定义来实现的。
这个参考标准让人可以把一种语言的词法分析和语法分析步骤反向应用到另一种语言的语法树上。
也就是说,Python的词法分析器 -> Python的语法分析器 -> 抽象语法树 -> C的语法分析器 -> C的词法分析器
这样就能比较容易地写一个程序,把Python代码转成C代码。当然,实际操作起来并没有那么简单,但你明白这个意思。
对于Perl来说,除了Perl解释器,没有其他的参考标准。因为没有参考标准,虽然可以创建一个程序来翻译代码,但这会比有参考标准的语言(比如用BNF定义的语言)要困难得多。
你真正想问的问题是:
为什么自动把Perl翻译成C,以及反过来,比把Python翻译成C要困难得多?