是否可以将Python程序转换为C/C++?
我需要实现几个算法,我不知道,如果性能差距大到足以证明所有的痛苦在C/C++(这我不擅长)做的时候我会去.我考虑过编写一个简单的算法,并针对这样一个转换后的解决方案进 如果仅这一点明显快于Python版本,那么除了在C/C++中做这件事之外我别无选择.
我已经阅读了如何使用asm.js测试和开发的问题?,接受的答案提供了http://kripken.github.com/mloc_emscripten_talk/#/的链接.
该幻灯片的结论是" 静态类型语言,特别是C/C++可以有效地编译成JavaScript ",因此我们可以" 期望编译的C/C++的速度比本机代码慢2倍,或更好,今年晚些时候 ".
但是非静态类型的语言呢,比如常规的JavaScript本身呢?可以编译为asm.js吗?
我知道谷歌的v8编译javascript到本机(二进制,如果我理解正确)代码.
有没有办法获取输出并将其转换为exe?
Asm.js来自一类新的JavaScript应用程序:已编译成JavaScript的C/C++应用程序.它是Mozilla的Emscripten项目产生的JavaScript的一个子集.
但它是如何工作的,为什么我会使用它呢?
我目前正在用ANTLR + Java编写一个JavaScript编译器.
我已经在Stack Overflow上阅读了关于如何继续执行的问题 - 而且答案总是很难进行动态语言的静态编译(没有JIT信息) - 但为什么会这样?当然有明显的"类型解析"问题,并且在JavaScript中可能存在eval功能问题- 但还有其他原因吗?(因为它们似乎不太难以静态克服(没有JITS))
我不包括基于JIT的编译,因为我认为这对我来说实施起来太难了.
我在编写带有字节码执行的静态编译器方面有一些经验.
更新:
您的所有答案都非常有助于理解问题.澄清这是否意味着JavaScript比其他动态语言更难实现?
这也意味着我更好地使用基于树的解释器而不是例如字节码(如果我们忘记JS总是在原始源代码中提供的属性 - 因此增加了生成和IR的额外时间,然后执行它) ? - 或者它们应该同样容易/难以做到吗?
(我是新手SOF;不知道这是否是更新问题的首选方式?)
javascript compiler-construction static-analysis dynamic-languages