为什么不可能创建一个实用的Perl到Python源代码转换器?
如果存在一个自动将Perl代码转换为Python代码的程序,那么这将是很好的,使得生成的Python程序可以像原始代码一样可读和可维护,更不用说以相同的方式工作了.
最明显的解决方案是通过Python utils调用perl: #!/usr/bin/python os.exec("tail -n -2 "+__file__+" | perl -") ...the rest of file is the original perl program... 但是,结果代码几乎不是Python代码,它本质上是一个Perl代码.潜在的转换器应该将Perl构造和习语转换为易于阅读的Python代码,它应该保留变量和子例程名称(即结果不应该看起来模糊)并且不应该过多地破坏wrokflow. 这样的转换显然非常困难.转换的硬度取决于Perl特性和语法结构的数量,这些特征和语法结构没有易于阅读,未经过混淆的Python等价物.我相信大量的这样的特征使得这种自动转换实际上是不可能的(理论上存在可能性). 那么,您能否将Perl惯用语和语法功能命名为Python中不能像原始Perl代码那样简洁? 编辑:有些人将Python-to-Perl召集人联系起来,并在此基础上推断出,编写Perl-to-Python也应该很容易.但是,我确信转换为Python的需求更大;仍然没有写这个转换器 – 而反过来已经!这让我对不可能为Python编写好的转换器更加坚定. 解决方法
为了扩展这里的一些其他列表,这些是一些在python中可能非常笨拙的Perl构造(如果可能的话).
>动态范围(通过local关键字) 列表继续进行,有人可以尝试在所有类似的构造之间创建映射,但最终由于一个简单的原因将失败. Perl无法进行静态解析. Perl代码中的定义(特别是BEGIN块中的定义)改变了编译器解释剩余代码的方式.因此,对于非平凡的程序,从Perl转换=> Python受制于暂停问题. 在程序运行完成之前,没有办法确切知道所有程序的编译方式,理论上可以创建一个Perl程序,每次运行时都会编译不同的程序.这意味着一个Perl程序可以映射到无限数量的Python程序,只有在perl解释器中运行原始程序后才能知道它的正确性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |