首页
图书
新闻
社区
购物车
|
缺货登记
|
我要发布新闻
|
留言
新书上架
业内要闻
出版社区
博客首页
圈子首页
在线试读
业内名家
最新书评
新书上架
热点图书
图书分类
排行榜
期书预定
在线试读
专题图书
特价图书
全品种代购
最新新闻
业内新闻
热点新闻
专题新闻
编辑推荐
最新博文
博文精读
博文名家
最新圈子
圈子精读
申请圈主
图书
新闻
文字显示结果
组合搜索
分类浏览
提示(本窗口
5
秒后消失)
加入图书收藏夹成功
关闭对话框
进入收藏夹
提示(本窗口
5
秒后消失)
加入购物车成功
关闭对话框
进入购物车
提示(本窗口
3
秒后消失)
链接已经成功复制,您可以直接粘贴
关闭对话框
Lua程序设计:第2版
[
华储网推荐
]
评论
(
条)
读过
(
人)
在读
(
人)
想读
(
人)
加入收藏夹
Lua领域最权威的书籍之一 全面展示Lua 5.1的新特性 详细阐释Lua程序设计的高级话题 注重实战,使你迅速掌握Lua程序的精髓 内容精要,将Lua程序设计思想发挥到极致
出版社:
电子工业出版社
飞思公司
书 号:
9787121061875
作 者:
R.)
(巴西)莱鲁萨利姆斯奇(Ierusalimschy
定 价:¥39
普 通:
¥
31.2
5 星:
¥
29.25
分享到:
看这这本书的人同时也看过
相关图书推荐
最近热书
所属类别:
软件与程序设计
->
网络编程
出版日期:
2008年5月
版别版次:
2008年5月第1次印刷
本书勘误:
有(
)条勘误
字数 :
450千字
印张:
18.750
印数 :
页数:
0
附带物 :
无附带物
前言
内容简介
序
作者序
译者序
目录
前言
1993年Waldemar、Luiz和我刚开始开发Lua,那时我们还很难想象Lua会发展成今天这个样子。刚开始时,Lua只是作为一种内部语言服务于两个特定项目,而如今Lua被广泛地应用于各种领域,只要在需要一种简单、可扩展、可移植及高效的脚本语言的领域,都可以看到Lua的身影,例如嵌入式系统、移动设备、Web服务器,当然还有游戏。从一开始我们就将Lua设计成能与C语言或其他常用语言编写的软件相互集成。这种可集成的特点带来了许多好处。Lua还是一门简单小巧的语言,之所以这么设计,一部分原因是因为它不准备去做那些C语言已经做得很好的方面。例...
1993年Waldemar、Luiz和我刚开始开发Lua,那时我们还很难想象Lua会发展成今天这个样子。刚开始时,Lua只是作为一种内部语言服务于两个特定项目,而如今Lua被广泛地应用于各种领域,只要在需要一种简单、可扩展、可移植及高效的脚本语言的领域,都可以看到Lua的身影,例如嵌入式系统、移动设备、Web服务器,当然还有游戏。
从一开始我们就将Lua设计成能与C语言或其他常用语言编写的软件相互集成。这种可集成的特点带来了许多好处。Lua还是一门简单小巧的语言,之所以这么设计,一部分原因是因为它不准备去做那些C语言已经做得很好的方面。例如,C语言高超的性能、对底层操作的能力及与第三方软件间的接口。Lua依靠C语言来完成这些任务。而Lua提供的特性则是C语言所不太擅长的。例如,相对于硬件的高层抽象、动态结构、无冗余(No Redundancy)、简易的测试和调试。为此,Lua还实现了一个安全的运行环境、一套自动内存管理机制、优秀的字符串处理能力和动态大小数据的处理功能。
Lua的大部分功能来源于它的标准库,这也符合Lua的设计原则。因为Lua的主要特性就是它的可扩展性。语言中的许多特性都体现出了这点。动态类型为多态提供了支持。自动内存管理简化了接口,从而无须决定谁分配内存、谁释放内存及如何处理溢出等。高阶(Higher-order)函数和匿名函数允许实现更高层的参数化,能使函数变得更加通用。
Lua除了是一门可扩展的语言外,还是一门“胶水语言”。Lua支持一种基于组件的软件开发方法,这种方法可以通过黏合现有的高层组件来创建新的应用程序。这些组件可以是已编译好的,也可以是静态类型语言(如C或C++)编写的。Lua则可以成为组织和连接各种组件的胶水。通常,组件(或对象)表示了一个更具体、更底层的概念(例如窗口部件、数据结构),在程序开发过程中很少会修改它们,并且它们会占用最终程序的大部分CPU时间。Lua则可以给出一个应用程序最终的样子,而这部分内容可能会在一个产品的开发周期中被反复修改。与其他胶水技术不同的是,Lua是一门功能齐全的语言。从而使Lua不仅可用于黏合组件,还可用于适配组件或改造组件,甚至借此创建出一个全新的组件。
显然Lua不是唯一的脚本语言,还有许多其他语言都可以或多或少地解决同样的问题。但是Lua提供了一组特性,使它变得与众不同,成为解决许多问题的首选语言。
可扩展性:Lua的可扩展性非常卓越,以至于许多人以为Lua不是一种编程语言,而是一种用于构建特定领域语言的工具包。Lua从一开始就被设计为可扩展的,既可用Lua代码来扩展,又可以用外部的C代码来扩展。作为此概念的一个例证,Lua的大部分基础功能就是通过外部库实现的。要将Lua与C/C++相配接是非常容易的。此外,Lua还可以集成到一些其他语言中,例如Fortran、Java、Smalltalk、Ada、C#,甚至还可以集成到其他脚本语言中,如Perl和Ruby。
简易性:Lua是一种简单、小巧的语言。它具有的概念不多,但每个概念都很有用。这样的简易性使Lua非常易于学习,同时还有利于减小Lua自身的大小。一个完整的Lua发布版本 可以很轻松地存放在一张软盘中。
高效:Lua具有一个非常高效的实现。独立的评测结果显示Lua是脚本(解释型的)语言领域中最快的语言之一。
可移植性:当我们提及Lua的可移植性时,不仅是指Lua可以同时运行在Windows和UNIX平台上,而是指Lua可以运行在任何平台上,包括:PlayStation、XBox、Mac OS-9、OS X、BeOS、QUALCOMM Brew、MS-DOS、IBM主机、RISC操作系统、Symbian操作系统、PalmOS、ARM处理器、Rabbit处理器、类UNIX或类Windows的系统。针对所有这些平台的源代码实质上都是同一套代码。Lua并未使用条件编译来对不同平台进特殊处理,我们只依赖于ANSI(ISO)C标准来编写Lua的实现代码。这样就无须为了适应某个新平台而修改它。如果你有一个ANSI C编译器,那么只需编译Lua就可以了。
用户与读者
Lua的用户一般可分为三大类:使用嵌入在某个应用程序中的Lua的用户、使用Lua解释器程序的用户、同时使用Lua和C的用户。
许多人在使用嵌入在某个应用程序中的Lua,例如CGILua 或某款游戏。这些程序都用Lua的C API来注册某些新函数、创建新类型,以及改变语言中某些操作的行为,并根据它们特定的需求来配置Lua。通常这种程序的用户可能根本不知道这样一个事实,即Lua是一种独立的编程语言,只是被应用到了某个特定领域中。例如,CGILua的用户往往认为Lua是一种专门为Web而设计的语言,而某些游戏的玩家也常认为Lua是一种游戏自身特有的语言。
作为一种独立的编程语言,Lua也是非常有用的。它不仅可用于文本处理或编写一次性的小程序,还可用于大中规模的项目。对于后者,Lua的主要功能都来自于它的扩展库。Lua的标准库就提供了模式匹配和一些其他的字符串处理函数 。另一方面,Lua的扩展库数量也在不断地增加,当前存在着一大批可使用的外部库。例如,Kepler项目 就是一个用于Web开发的Lua库,它提供了页面生成、数据库访问,以及LDAP、XML和SOAP方面的包(Package)。LuaForge站点 罗列了许多Lua的外部库。
最后一类Lua用户是那些C程序员,他们在编写应用程序时,将Lua作为一个C程序库来使用。这类人更多地是在写C代码,而不是Lua代码。尽管如此,他们仍需要较好地掌握Lua,从而创建出简单易用且便于和语言相集成的接口。
这本书为这三类人都提供了充足的内容。第一部分介绍了语言本身,展示了语言所具有的所有能力。我们会集中地介绍语言中的各种功能,并使用大量示例来演示如何将它们运用到实际的任务中。其中,还会有一些章节会涉及到基础概念,例如控制结构。而另外一些章节会介绍一些高级主题,例如迭代器和协同程序。
第二部分深入地介绍了table,它是Lua中唯一的一种数据结构。其他章节还讨论了数据结构、持久化、包和面向对象编程。这一部分将揭示语言真正的功能。
第三部分展示了Lua的标准库。这部分对那些想将Lua作为一门独立语言来使用的人特别有用。这部分中每一章介绍一个库,包括:数学库、table库、字符串库、I/O库、操作系统库、调试库。
本书的最后一部分将介绍Lua与C之间的API,这是为那些想用C来访问Lua功能的人准备的。相对于本书的其他章,这部分内容显得非常与众不同。因为,我们将讨论C的编程,而非Lua编程。所以,那时我们需要换一种角度来思考问题。对于某些读者来说,C API的讨论或许并非兴趣所在,但对于另一些读者来说,这可能是他们在本书中最关心的部分。
关于本书的第2版
本书是第1版《Lua程序设计①》的更新和扩展。虽然两个版本的结构几乎一致,但新版本中具有一些全新的素材。
首先,将整本书更新到了Lua 5.1。特别是那些与模块和包相关的章节,其中的大部分内容都是重写的。另外,还重写了一些示例,用来演示如何利用Lua 5.1提供的新特征。不过也清楚地注明了某些Lua 5.0中没有的特征,因此本书也可用于Lua 5.0。
其次,多了一些新的示例。这些示例包括:图形表示、tab扩展与压缩、一个元组(tuple)的实现等。
最后,本书还具有两章全新的内容。一章介绍了如何在C中使用多个状态和多个线程,并包含了一个实用的示例,演示如何为Lua实现多进程的能力。另一章介绍了内存管理,并演示了如何与内存分配及垃圾收集器打交道。
在《Lua程序设计》的第1版出版后,一些出版社曾表示有意出版本书的第2版。但最终我们还是决定像第1版那样,由自己来出版这第2版。尽管这么做可能会影响收入效益,但这么做的优势也是很明显的,因为我们可以完全地控制本书的内容,可以自由地选择何时发布另一个版本,可以确保存有充足的货源,还可以保留以其他形式来发表本书的所有权利。
其他资源
参考手册是所有希望学习一门语言的人所必需的东西,本书无意取代《Lua参考手册》的地位。相反,它们之间是相互补充的。手册只描述了Lua,其中既没有代码实例,也没有解释语言中构件的原理。但从另一方面看,参考手册描述了整个语言,而本书则没有触及语言中某些很少用到的“阴暗角落”。此外,手册是Lua的权威文档。如果本书与手册有矛盾之处,请相信手册。若要获取手册,或要获取更多有关Lua的信息,请访问Lua的官方网站:http://www.lua.org。
还可以在Lua的用户网站找到一些有用的信息,这个网站是由用户团体维护的,网址是:http://lua-users.org。这个网站提供了一套教程、一张第三方程序包和文档的列表及Lua官方邮件列表的档案。另外,还可以看一下本书的网页:http://www.inf.puc-rio.br/~roberto/pil2/。
在这里可以查到最新的勘误表,书中某些示例的代码和一些额外的材料。
这本书讲述的是Lua 5.1,但书中绝大多数内容也适用于Lua 5.0。本书会清楚地标明Lua 5.1和Lua 5.0之间的区别。如果正在使用一个较新的版本,请查阅相应的手册,以了解不同版本间的细微区别。如果还在用5.0之前的版本,那么应该升级一下了。
版式约定
本书将字面常量用一对双引号("")括住,将单个字母(如'a')用一对单引号括住。用于模式(Pattern)的字符串也用双引号括住,如"[%w_]*"。本书对一些程序块代码和标识符使用Courier New字体。更大的程序块则按以下方式给出:
-- "Hello World" 程序
print("Hello World") --> Hello World
标记-->表示一条语句的输出结果,有时也表示一个表达式的结果:
print(10) --> 10
13 + 3 --> 16
由于两个连字符(--)在Lua中表示开始一条注释,因此在程序中包含这样的标记不会有什么问题。最后,本书使用标记<-->来表示某些等价的东西:
this <--> that
这表示对于Lua来说,无论是用this还是that,结果都一样。
致谢
本书若没有一些朋友和组织的帮助是不可能完成的。感谢Lua的共同开发者Luiz Henrique de Figueiredo和Waldemar Celes一直以来提供的各方面帮助。
感谢Gavin Wraith、André Carregal、Asko Kauppi、Brett Kapilik、John D. Ramsdell和Edwin Moragas对本书草稿的审读及提出的宝贵建议。
Lightning Source公司在本书的印刷和发行中表现得非常可靠和高效,没有他们的话,由自己出版本书几乎是不可能的。
Dimaquina的Antonio Pedro在耐心地听取了我对封面设计的意见后,最终提供了一个正确的封面设计。
Norman Ramsey热心地提供了一些对于本书出版有益的建议。
我还要感谢PUC-Rio和CNPq,感谢它们对我工作的一贯支持。
最后,我必须向Noemi Rodriguez表达我最深切的感谢,感谢你点亮了我的生活。
著 者
<<
显示前言详情
内容简介
本书是《Lua程序设计》(第1版)的更新和扩展,在第1版的基础上进行了较大的改进,并且加入了很多新的知识点。介绍了Lua语言所具有的功能,并使用大量示例来演示如何将它们运用到实际的任务中深入地介绍了Lua中唯一的数据结构——table,还讨论了数据结构、持久化、包和面向对象编程展示了Lua的标准库,对那些想将Lua作为一门独立语言来使用的开发者特别有用,每一章介绍一个库,包括数学库、table库、字符串库、I/O库、操作系统库、调试库介绍Lua与C语言之间的API,这是为那些想用C语言来访问Lua功能的人准备的作者简介:作者感言:最近几...
本书是《Lua程序设计》(第1版)的更新和扩展,在第1版的基础上进行了较大的改进,并且加入了很多新的知识点。
介绍了Lua语言所具有的功能,并使用大量示例来演示如何将它们运用到实际的任务中
深入地介绍了Lua中唯一的数据结构——table,还讨论了数据结构、持久化、包和面向对象编程
展示了Lua的标准库,对那些想将Lua作为一门独立语言来使用的开发者特别有用,每一章介绍一个库,包括数学库、table库、字符串库、I/O库、操作系统库、调试库
介绍Lua与C语言之间的API,这是为那些想用C语言来访问Lua功能的人准备的
作者简介:
作者感言:
最近几年Lua编程语言发展迅速,已从原来的强项——游戏领域,扩展到了其他的应用领域,例如Adobe Photoshop Lightroom,我很高兴本书能对这些发展作出贡献。本书不同语言的翻译版不仅会帮助到中国Lua社区的广大爱好者,更有助于Lua在世界范围内的发展。
我很遗憾无法读懂本书的中文版,但对于幸运的中国读者来说,我希望你们能拥有一次美妙的阅读体验。
关于译者:
周惟迪 (www.zhouweidi.name),在少年时由于喜好计算机游戏而喜爱上计算机编程,对各类开发技术皆有涉猎。曾从事过2年游戏程序设计专业的教育工作,之后在上海Ubisoft工作,参与Splinter Cell 4(Xbox 360)、Rayman 4(Xbox 360)等项目开发。现就职于Epic Games China,从事MMO引擎,以及基于Unreal 3的MMO游戏开发。常在业余时间参与各种软件的开发,同时翻译过《Direct3D游戏编程入门教程》一书。
<<
显示内容简介详情
目录
第1部分
第1章 开始 3
1.1 程序块(chunk) 3
1.2 词法规范 5
1.3 全局变量 6
1.4 解释器程序(the dtand-slone interpreter) 7
第2章 类型与值 9
2.1 nil(空) 10
2.2 boolean(布尔) 10
2.3 number(数字) 10
2.4 string(字符串) 11
2.5 table(表) 14
2.6 function(函数) 17
2.7 userdata(自定义类型)和thread(线程) 18
第3章 表达式 19
3.1 算术操作符 19
3.2 关系操作符 20
3.3 逻辑操作符 20
3.4 字符串连接 22
3.5 优先级 22
3.6 table构造式(table constructor) 23
· · · · · ·
第1部分
第1章 开始 3
1.1 程序块(chunk) 3
1.2 词法规范 5
1.3 全局变量 6
1.4 解释器程序(the dtand-slone interpreter) 7
第2章 类型与值 9
2.1 nil(空) 10
2.2 boolean(布尔) 10
2.3 number(数字) 10
2.4 string(字符串) 11
2.5 table(表) 14
2.6 function(函数) 17
2.7 userdata(自定义类型)和thread(线程) 18
第3章 表达式 19
3.1 算术操作符 19
3.2 关系操作符 20
3.3 逻辑操作符 20
3.4 字符串连接 22
3.5 优先级 22
3.6 table构造式(table constructor) 23
第4章 语句 27
4.1 赋值 27
4.2 局部变量与块(block) 28
4.3 控制结构 30
4.3.1 if then else 30
4.3.2 while 31
4.3.3 repeat 31
4.3.4 数字型for(numeric for) 31
4.3.5 泛型for(generic for) 32
4.4 break与return 34
第5章 函数 35
5.1 多重返回值(multiple results) 36
5.2 变长参数(variable number of arguments) 39
5.3 具名实参(named arguments) 42
第6章 深入函数 45
6.1 closure(闭合函数) 47
6.2 非全局的函数(non-global function) 50
6.3 正确的尾调用(proper tail call) 52
第7章 迭代器与泛型for 55
7.1 迭代器与closure 55
7.2 泛型for的语义 57
7.3 无状态的迭代器 58
7.4 具有复杂状态的迭代器 60
7.5 真正的迭代器 61
第8章 编译、执行与错误 63
8.1 编译 63
8.2 C代码 66
8.3 错误(error) 67
8.4 错误处理与异常 69
8.5 错误消息与追溯(traceback) 70
第9章 协同程序(coroutine) 73
9.1 协同程序基础 73
9.2 管道(pipe)与过滤器(filter) 76
9.3 以协同程序实现迭代器 78
9.4 非抢先式的(non-preemptive)多线程 81
第10章 完整的示例 87
10.1 数据描述 87
10.2 马尔可夫链(markov chain)算法 90
第2部分
第11章 数据结构 95
11.1 数组 95
11.2 矩阵与多维数组 96
11.3 链表 97
11.4 队列与双向队列 98
11.5 集合与无序组(bag) 99
11.6 字符串缓冲 100
11.7 图 102
第12章 数据文件与持久性 105
12.1 数据文件 105
12.2 串行化(Serialization) 107
12.2.1 保存无环的table 109
12.2.2 保存有环的table 110
第13章 元表(metatable)与元方法(meatmethod) 113
13.1 算术类的元方法 114
13.2 关系类的元方法 116
13.3 库定义的元方法 117
13.4 table访问的元方法 118
13.4.1 _ _index元方法 118
13.4.2 _ _newindex元方法 120
13.4.3 具有默认值的table 120
13.4.4 跟踪table的访问 121
13.4.5 只读的table 123
第14章 环境 125
14.1 具有动态名字的全局变量 125
14.2 全局变量声明 127
14.3 非全局的环境 129
第15章 模块与包 133
15.1 require函数 134
15.2 编写模块的基本方法 136
15.3 使用环境 138
15.4 module函数 140
15.5 子模块与包 141
第16章 面向对象编程 143
16.1 类 144
16.2 继承 146
16.3 多重继承 148
16.4 私密性 150
16.5 单一方法(single-method)做法 152
第17章 弱引用table 153
17.1 备忘录(memoize)函数 154
17.2 对象属性 156
17.3 回顾table的默认值 157
第3部分
第18章 数学库 161
第19章 table库 163
19.1 插入和删除 163
19.2 排序 163
19.3 连接 165
第20章 字符串库 167
20.1 基础字符串函数 167
20.2 模式匹配(pattern-matching)函数 169
20.2.1 string.find函数 169
20.2.2 string.match函数 170
20.2.3 string.gsub函数 170
20.2.4 string.gmatch函数 171
20.3 模式 172
20.4 捕获(capture) 175
20.5 替换 177
20.5.1 URL编码 178
20.5.2 tab扩展 180
20.6 技巧 181
第21章 I/O库 185
21.1 简单I/O模型 185
21.2 完整I/O模型 188
21.2.1 性能小诀窍 189
21.2.2 二进制文件 190
21.2.3 其他文件操作 192
第22章 操作系统库 193
22.1 日期和时间 193
22.2 其他系统调用 195
第23章 调试库 197
23.1 自省机制 197
23.1.1 访问局部变量 199
23.1.2 访问非局部的变量(non-local varible) 200
23.1.3 访问其他协同程序 201
23.2 钩子 202
23.3 性能剖析(profile) 202
第4部分
第24章 C API概述 207
24.1 第一个示例 208
24.2 栈 210
24.2.1 压入元素 211
24.2.2 查询元素 212
24.2.3 其他栈操作 214
24.3 C API中的错误处理 215
24.3.1 应用程序代码中的错误处理 216
24.3.2 库代码中的错误处理 216
第25章 扩展应用程序 219
25.1 基础 219
25.2 table操作 220
25.3 调用Lua函数 224
25.4 一个通用的调用函数 226
第26章 从Lua调用C 229
26.1 C函数 229
26.2 C模块 231
第27章 编写C函数的技术 233
27.1 数组操作 233
27.2 字符串操作 234
27.3 在C函数中保存状态 237
27.3.1 注册表(registry) 237
27.3.2 C函数的环境 239
27.3.3 upvalue 239
第28章 用户自定义类型 243
28.1 userdata 243
28.2 元表 246
28.3 面向对象的访问 248
28.4 数组访问 250
28.5 轻量级userdata(light userdata) 251
第29章 管理资源 253
29.1 目录迭代器 253
29.2 XML分析器 256
第30章 线程和状态 265
30.1 多个线程 265
30.2 Lua状态 269
第31章 内存管理 277
31.1 分配函数 277
31.2 垃圾收集器 279
31.2.1 原子操作 280
31.2.2 垃圾收集器的API 280
<<
显示目录详情
全部评论(
)
力荐(0)
力荐(
)
推荐(0)
推荐(
)
还行(0)
还行(
)
较差(0)
较差(
)
很差(0)
很差(
)
力荐
推荐
还行
较差
很差
前5位评价用户:
发表评价即可获得1个华储币,被评为精采书评后还可以再奖励多个华储币!
-
首页
-
华储网简介
-
友情链接
-
联系方式
-
Copyright ©1998~2010
华储网
. All rights reserved.
To comment on this site, E-mail :
辽ICP证020094