经过探索,
我大概知道了, 编译器是 把代码 翻译成 汇编,
那么理论上 任何语言都行,
因为生成的汇编代码, 是独立于语言的, 最后,执行程序,是直接执行 汇编代码的
所以,用 c 和 python 同时开发一个编译器, 在编译程序的时候,python 会比 c 慢, 但编译完成 后, 执行 2 个目标程序, 性能应该是一样的,因为 2 个目标程序都是二进制的,和 原本的 c 、python 是无关的
类比就是 请了 2 个翻译,把一篇英语文章,翻译成中文, 翻译员 c 翻译的快,翻译员 python 翻译的慢,但如果我是等他们翻译完毕才看, 那么,他们的翻译速度对我来说,并没有什么影响
以上就是我对编译器的理解
而解释器,就不一样了, 用 c 和 python 同时开发一门语言的解释器, 那么, 用 c 开发的解释器,速度应该更快,
因为, 假设一段新语言的源代码, 同时传给 2 个 解释器(用 python 和 c 分别开发的解释器), 其工作原理如下:
解释器用自身的代码,做词法分析,语法分析,生成 ast,然后用自身的代码调用自身的函数,就达到了解释的目的
就好比用 python 写了一个解释器, 把一段代码传递给解释器后,解释器自身的逻辑是 python 写的,由于 python 自身有动态类型等特性,导致运行效率不如 c 这样的编译型语言效率高
而,c 写的解释器,当收到传入的代码后,解释器自身用 c 语言分析传入的文本代码,那么速度自然比 python 所写的解释器快很多
用 python 和 c 写解释器,本质和翻译也一样,不过这次是同声传译,即把英文文章实时翻译成中文,念给我听,c 翻译的快,我听得顺畅, python 翻译的慢,让我听的着急
假设我以上的理解正确
那么,如果我要实现一门解释性的脚本语言,类似 python 这种语言, 是否选择 c 这样的静态语言会比选 python,在性能上有更大的优势?
谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.