可爱的 Python:Python实现内幕
2007-03-29 12:04:17 来源:WEB开发网第二个原因是性能。我有一个称之为 interscript 的主要 Python 程序,一个有读写能力的编程 (LP) 工具,它不仅受到 Python 中缺乏良好结构(如上所述),而且还受性能问题的困扰。
Mertz:既然文字编程是创建 Vyper 的一个动机,您是否能简单介绍一下什么是有读写能力的编程,我想这样对读者会有所帮助。
Skaller:它的构思是不需要为程序记录文档(在编程后),而是编写 包含程序的文档。[它]由 Donald Knuth 发明。
interscript 独立于排字和编程语言,可以通过以 Python 编写的任意可执行代码 在文档中扩展。即,尽管有大量预构建的构造可以满足“日常”需要,但一个人可以随意 生成代码和文档。
但除非 LP 很快,否则它永远不能作为主流技术接纳。我花费了许多工作使它变得快一些,但结果,Python 还是无法快到执行所需要的操作:解释语言中逐个字符地处理字符串就是无法快起来。
所以想要构建一个 Python 编译器,至少它能生成可以优化这种代码的机器二进制文件。这是某些 Vyper 扩展的一个原因,从而使优化成为可能。
我从来没有编写过编译器;构思是编写一个解释器,可以在编译时装入所有程序模块,然后将产生的字典 冻结 到可执行二进制文件中。现在的 Vyper 就是这样的解释器,我在扩展语言的过程中找到了很多乐趣,但我找到了一份编写编译器的带薪工作,现在就没有时间继续这一工作了。
Mertz:Vyper 的一个特别新颖的特性是其以 Ocaml 的实现。许多读者可能认为编译器/解释器是以 C 实现的(与本质接近);或者对于已定义的机器,编译器可以以 Python 自身实现。为什么使用 Ocaml?
Skaller:Ocaml 直接生成机器代码。相对于 C 来说,它运行得相当不错,对于某些工作甚至会更快。它还带有一个无用信息收集器。Ocaml 是一种高级语言,与 C、C++、Python 或大多数其它所谓的“高级”语言不一样。
Ocaml 和 Python 一样,是混合的函数性/命令语言。Vyper 比 Python 更多地强调 Python 的函数性方面。它纠正了一些明显的设计缺陷,特别是缺少词法范围确定的问题。
在实际中,函数性编程后面有强大的理论支持,而对于命令编程则没有任何理论支持。这意味着从开发角度来说,函数性编程语言比任何命令编程语言通常要好得多,但往往缺乏与基本硬件规则体系结构相近的系统性能。
有意思的是,下一种实现,尽管来自不同角度,在某些方面要胜过 Vyper:
更多精彩
赞助商链接