Bruce Dodson |
|
虽然多年来我对 SciTE 做了很多改进,但我迄今为止最大、也许也是最受赞赏的贡献是将 Lua 5 集成到 SciTE 中。
这个项目建立在之前工作的基础上。特别是,几年前,一个早期的 Lua 3.2 嵌入原型被编写为 SciTE 扩展接口的示例。我相信 PhilippeLhoste 参与了其中,尽管它也可能是 NeilHodgson? 的工作。在 2003 年 11 月,我恢复了这段代码,使其与当前的 SciTE 代码库一起工作。在 12 月,我根据 PhilippeLhoste 和 JeremyCowgar 等人的建议,为 Lua 5 进行了改造。在 1 月,我使它基本稳定,从那时起,我一直致力于改进它的可用性,并结合了 SciTE 社区的想法。这工作量很大,但也非常有趣。
在脚本语言方面,Python 一直是我过去的首选,尽管在更务实的场合我也会使用 Perl。对于嵌入,Python 一直是我的首选,因为它易于嵌入,并为宿主应用程序提供了强大的表达能力(例如 http://avpython.sf.net/)。然而,正如你们中的一些人所知,Python 用户认为扩展而不是嵌入是最佳实践,尽管 Python 拥有丰富的、友好的嵌入 API。(我在 AVPython 中遵循了我的反教条立场,因为我嵌入 Python 的应用程序已经编写完成,并且没有附带源代码。)
我第一次了解 Lua 大概是在 1995/1996 年,当时我还在读《Dr. Dobbs》杂志。(自从杂志价格上涨而内容缩减后,我就没再读了。)多年来我一直断断续续地接触 Lua,但直到 SciTE Lua 嵌入项目之前,我都没有把它用于任何严肃的项目。
在 SciTE 邮件列表中,有人问过:“很多 SciTE 用户来自 Python,为什么 Python 不是 SciTE 的扩展语言?” 这个问题有很多答案。最初的主要原因是 Lua 足够小,可以包含在 SciTE 中而不会使其臃肿,但从用户的角度来看,它是一种很好的动态语言,Python 用户会很快上手。Lua 3.x 确实有一个与 Python API 一样友好的嵌入 API,因此很容易上手。在重写 Lua 5 时,我发现新的 API 刚开始感觉很独特,因为它暴露了底层的堆栈。虽然这导致了一些错误,因为我还在不断适应它,但我开始欣赏这种方法的优点。