Lua 是怎样一门语言?
2个回答
展开全部
目前我见到的对 Lua 的最简洁准确的描述来自一段转述 [1] [2]:
Lua is an elegant, easy-to-learn language with a mostly procedural syntax, featuring automatic memory management, full lexical scoping, closures, iterators, coroutines, proper tail calls, and extremely practical data-handling using associative arrays.但这段描述「忽略」了 Lua 最重要的两个因素:Extensible 和 Embed-able。不过这里的忽略是加引号的。因为:第一、这两个因素如此明显,以至于 Hirschi 为了简洁的介绍语言本身的特性而认为根本不必提。第二、如果你是给像 Adobe Lightroom 那样选择架构,那么 Lua 的这两个特性当然是要铭记于心。如果你是给 WOW 或者 Nginx+Lua 做开发,那么 Lua 语言本身的特性更适合上面这句描述。
所以,暂且不谈 Lua 著名的 Extensibility/Embed-ability,只说语言本身。我认为 Lua 达到了高级动态语言的最佳平衡。
在另一篇答案中 [3] 我回答了高级动态语言的度量。目前来看,Lisp 可以被认为是高级动态语言功能的「全集」,其它语言都或多或少有所裁减。Lua 只裁减了两个功能:宏和 Full-continuation。另一方面,Lua 提供了非常强也非常快的 load,也不能说没有 code-as-data。Lua 没有 full-continuation,不过实现了 coroutine 可以认为是 one-shot semi-continuation。注意不是所有的号称 coroutine 的机制都能叫做 one-shot semi-continuation。Lua 实现的是 full asymmetric coroutine。其能力参见 [6]。最近分析了 Lua 的 coroutine 实现 [4] [5],我认为对 extensible/embedded 语言的 continuation 的把握,即使是提供号称 full-continuation 的各种 Lisp 实现也未必能及。
Lua is an elegant, easy-to-learn language with a mostly procedural syntax, featuring automatic memory management, full lexical scoping, closures, iterators, coroutines, proper tail calls, and extremely practical data-handling using associative arrays.但这段描述「忽略」了 Lua 最重要的两个因素:Extensible 和 Embed-able。不过这里的忽略是加引号的。因为:第一、这两个因素如此明显,以至于 Hirschi 为了简洁的介绍语言本身的特性而认为根本不必提。第二、如果你是给像 Adobe Lightroom 那样选择架构,那么 Lua 的这两个特性当然是要铭记于心。如果你是给 WOW 或者 Nginx+Lua 做开发,那么 Lua 语言本身的特性更适合上面这句描述。
所以,暂且不谈 Lua 著名的 Extensibility/Embed-ability,只说语言本身。我认为 Lua 达到了高级动态语言的最佳平衡。
在另一篇答案中 [3] 我回答了高级动态语言的度量。目前来看,Lisp 可以被认为是高级动态语言功能的「全集」,其它语言都或多或少有所裁减。Lua 只裁减了两个功能:宏和 Full-continuation。另一方面,Lua 提供了非常强也非常快的 load,也不能说没有 code-as-data。Lua 没有 full-continuation,不过实现了 coroutine 可以认为是 one-shot semi-continuation。注意不是所有的号称 coroutine 的机制都能叫做 one-shot semi-continuation。Lua 实现的是 full asymmetric coroutine。其能力参见 [6]。最近分析了 Lua 的 coroutine 实现 [4] [5],我认为对 extensible/embedded 语言的 continuation 的把握,即使是提供号称 full-continuation 的各种 Lisp 实现也未必能及。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询