lua是什么语言
Lua[1]是一个小巧的脚本语言。它是巴西里约热内卢天主教大学里的一个由RobertoIerusalimschy、WaldemarCeles和LuizHenriquedeFigueiredo三人所组成的研究小组于1993年开发的。
其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
Lua 是怎样一门语言?
Lua是一个简洁、轻量、可扩展的脚本语言。Lua有着相对简单的CAPI而很容易嵌入应用中。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。
Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。
它用ANSIC语言编写,并以源代码形式开放,编译后的完整参考解释器只有大约247kB,到5.4.3版本,该体积变成283kB(Linux,amd64),依然非常小巧,可以很方便的嵌入别的程序里。和许多“大而全”的语言不一样,网络通信、图形界面等都没有默认提供。
但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。
Lua是一个动态类型语言,支持增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程支持。Lua原生支持的数据类型很少,只提供了数值(默认是双精度浮点数,可配置)、布尔量、字符串、表格、函数、线程以及用户自定义数据这几种。
但是其处理表和字符串的效率非常之高,加上元表的支持,开发者可以高效的模拟出需要的复杂数据类型(比如集合、数组等)。
Lua是一种多重编程范型的程序设计语言:它只提供了很小的一个特性集合来满足不同编程范型的需要,而不是为某种特定的编程范型提供繁杂的特性支持。
例如,Lua并不提供继承这个特性,但是你可以用元表格来模拟它。诸如名字空间、类这些概念都没有在语言基本特性中实现,但是我们可以用表格结构(Lua唯一提供的复杂数据结构)轻易模拟。正是提供了这些基本的元特性,我们可以任意的对语言进行自需的改造。
Lua实现了少量的高级特征比如头等函数、垃圾回收、闭包、正当尾调用、强制(于运行时间在字符串和数值之间自动转换)、协程(协作多任务)和动态模块装载。
Lua程序不是从文本式的Lua文件直接解释的,而是编译成字节码,接着把它运行在Lua虚拟机上。编译过程典型的对于用户是不可见并且是在运行时间进行的,但是它可以离线完成用来增加装载性能或通过排除编译器来减少对宿主环境的内存占用。
Lua字节码还可以在Lua之内产生和执行,使用来自字符串库的dump函数和load/loadstring/loadfile函数。Lua版本5.3.4是用大约24,000行C代码实现的。
像大多数CPU,而不像多数虚拟机(它们是基于堆栈的),LuaVM是基于寄存器的,因此更加类似真实的硬件设计。寄存器架构既避免了过多的值复制又减少了每函数的指令的总数。Lua5的虚拟机是第一个广泛使用的基于寄存器的纯VM。
Parrot和Android的Dalvik是另外两个周知的基于寄存器的VM。PCScheme的VM也是基于寄存器的。
请问下面的lua语言是什么意思?非常简单,就是例子
就是一个简单的socket连接通信过程 没什么别的功能了
Lua 是怎样一门语言
目前我见到的对 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 实现也未必能及。