您的位置:首页 > 编程语言 > Lua

Programming in Lua (目录)

2008-03-15 15:41 253 查看
Programming in Lua

作者:Roberto Ierusalimschy
翻译:www.luachina.net

Simple is beautiful

版权声明

《Programming in Lua》的翻译由www.luachina.net完成。本站已经征得作者Mr. Roberto Ierusalimschy的同意,可以翻译他的著作并在本站发布,本书的版权归Mr. Roberto Ierusalimschy 所有,有关版权请参考下面引自官方网站的声明,未经许可不得擅自转贴或者以任何形式发布本书,否则后果自负。

Copyright © 2003-2004 Roberto Ierusalimschy. All rights reserved.
This online book is for personal use only. It cannot be copied to other web sites or further distributed in any form.

译序

“袁承志知道若再谦逊,那就是瞧人不起,展开五行拳,发拳当胸打去。荣彩和旁观三人本来都以为他武功有独到之秘,哪知使出来的竟是武林中最寻常不过的五行拳。敌对三人登时意存轻视,温青脸上不自禁露出失望的神色。
“荣彩心中暗喜,双拳如风,连抢三下攻势,满拟自己的大力魔爪手江南独步,三四招之间就可破去对方五行拳,那知袁承志轻描淡写的一一化解。再拆数招,荣彩暗暗吃惊,原来对方所使虽是极寻常的拳术,但每一招均是含劲不吐,意在拳先,举手抬足之间隐含极浑厚的内力。”
——金庸《碧血剑》

编程语言之于程序员,若武功招式之于习武之人,招式虽重要,却更在于使用之人。胜者之道,武功只行于表,高手用剑,片草只叶亦威力无穷。
当今武林,派别林立,语言繁杂,林林总总不计其数。主流文化的C/C++、Java、C#、VB[1];偏安一隅的Fortran;动态语言中的Perl、Tcl、Ruby、Forth、Python,以及本书介绍的Lua;……,等等等等。再加上世界上那些不知道躲在哪的旮旯的奇奇怪怪的hacker捣鼓出来的异想天开的语言,要想各类语言样样精通,不异于痴人说梦。不信可欣赏一下BrainFuck语言[2]的Hello World程序,语言本身依如其名。-J-

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.

虽说语言的威力依使用者本身的修为高低而定,但不同语言本身的设计又有不同。若让用Java写写操作系统内核、Perl写写驱动程序、C/C++写写web应用,都无异于舍近求远,好刀只用上了刀背。
Lua本身是以简单优雅为本,着眼于处理那些C不擅长的任务。借助C/C++为其扩展,Lua可闪现无穷魅力。Lua本身完全遵循ANSI C而写成,只要有C编译器的地方,Lua便可发挥她的力量。Lua不需要追求Python那样的大而全的库,太多累赘,反而破坏了她的优美。
语言的优美,来自于使用者自己的感悟。Lua的优雅,也只有使用后才会明白。
扬起帆,让我们一同踏上Lua的学习之旅……

本书的翻译,是www.luachina.net中朋友们共同努力的结果。下面是参与翻译与校对的朋友:

-- file: 'thanks.lua'
-- desc: to print the list of the contributing guys

helpful_guys = {
"----参与翻译----",
"buxiu", "凤舞影天", "zhang3",
"morler", "lambda", "sunlight",
"/n",

"----参与校对----",
"凤舞影天", "doyle", "flicker",
"花生魔人", "zhang3", "kasicass",
"/n"
}

for _,e in ipairs(helpful_guys) do
print(e)
end

www.luachina.net翻译组
2005年7月26日
注:本pdf为翻译稿,校对工作正在进行。

目录

版权声明... i
译序... i
目录... iii
第一篇 语言... 1
第0章 序言... 1
0.1 序言... 1
0.2 Lua的使用者... 2
0.3 Lua的相关资源... 3
0.4 本书的体例... 3
0.5 关于本书... 3
0.6 感谢... 4
第1章 起点... 5
1.1 Chunks. 5
1.2 全局变量... 7
1.3 词法约定... 7
1.4 命令行方式... 7
第2章 类型和值... 9
2.1 Nil 9
2.2 Booleans. 9
2.3 Numbers. 10
2.4 Strings. 10
2.5 Functions. 12
2.6 Userdata and Threads. 12
第3章 表达式... 13
3.1 算术运算符... 13
3.2 关系运算符... 13
3.3 逻辑运算符... 13
3.4 连接运算符... 14
3.5 优先级... 15
3.6表的构造... 15
第4章 基本语法... 18
4.1 赋值语句... 18
4.2 局部变量与代码块(block)... 19
4.3 控制结构语句... 20
4.4 break和return语句... 23
第5章 函数... 24
5.1 多返回值... 25
5.2 可变参数... 27
5.3 命名参数... 28
第6章 再论函数... 30
6.1 闭包... 32
6.2 非全局函数... 34
6.3 正确的尾调用(Proper Tail Calls)... 36
第7章 迭代器与泛型for 39
7.1 迭代器与闭包... 39
7.2 范性for的语义... 41
7.3 无状态的迭代器... 42
7.4 多状态的迭代器... 43
7.5 真正的迭代器... 44
第8章 编译·运行·错误信息... 46
8.1 require函数... 48
8.2 C Packages. 49
8.3 错误... 50
8.4 异常和错误处理... 51
8.5 错误信息和回跟踪(Tracebacks)... 52
第9章 协同程序... 55
9.1 协同的基础... 55
9.2 管道和过滤器... 57
9.3 用作迭代器的协同... 60
9.4 非抢占式多线程... 62
第10章 完整示例... 67
10.1 Lua作为数据描述语言使用... 67
10.2 马尔可夫链算法... 70
第二篇 tables与objects. 74
第11章 数据结构... 75
11.1 数组... 75
11.2 矩阵和多维数组... 76
11.3 链表... 77
11.4 队列和双端队列... 77
11.5 集合和包... 79
11.6 字符串缓冲... 79
第12章 数据文件与持久化... 83
12.1 序列化... 85
第13章 Metatables and Metamethods. 91
13.1 算术运算的Metamethods. 91
13.2 关系运算的Metamethods. 94
13.3 库定义的Metamethods. 95
13.4 表相关的Metamethods. 96
第14章 环境... 102
14.1 使用动态名字访问全局变量... 102
14.2声明全局变量... 103
14.3 非全局的环境... 105
第15章 Packages. 108
15.1 基本方法... 108
15.2 私有成员(Privacy)... 110
15.3 包与文件... 111
15.4 使用全局表... 112
15.5 其他一些技巧(Other Facilities)... 114
第16章 面向对象程序设计... 117
16.1 类... 118
16.2 继承... 120
16.3 多重继承... 121
16.4 私有性(privacy)... 124
16.5 Single-Method的对象实现方法... 126
第17章 Weak表... 127
17.1 记忆函数... 129
17.2 关联对象属性... 130
17.3 重述带有默认值的表... 131
第三篇 标准库... 133
第18章 数学库... 134
第19章 Table库... 135
19.1数组大小... 135
19.2 插入/删除... 136
19.3 排序... 136
第20章 String库... 139
20.1 模式匹配函数... 140
20.2 模式... 142
20.3 捕获(Captures)... 145
20.4 转换的技巧(Tricks of the Trade)... 150
第21章 IO库... 156
21.1 简单I/O模式... 156
21.2 完全I/O 模式... 159
第22章 操作系统库... 164
22.1 Date和Time. 164
22.2 其它的系统调用... 166
第23章 Debug库... 168
23.1 自省(Introspective)... 168
23.2 Hooks. 172
23.3 Profiles. 173
第四篇 C API 176
第24章 C API纵览... 177
24.1 第一个示例程序... 178
24.2 堆栈... 180
24.3 C API的错误处理... 185
第25章 扩展你的程序... 187
25.1 表操作... 188
25.2 调用Lua函数... 192
25.3 通用的函数调用... 194
第26章 调用C函数... 197
26.1 C 函数... 197
26.2 C 函数库... 199
第27章 撰写C函数的技巧... 202
27.1 数组操作... 202
27.2 字符串处理... 203
27.3 在C函数中保存状态... 206
第28章 User-Defined Types in C. 211
28.1 Userdata. 211
28.2 Metatables. 214
28.3 访问面向对象的数据... 216
28.4 访问数组... 218
28.5 Light Userdata. 219
第29章 资源管理... 221
29.1 目录迭代器... 221
29.2 XML解析... 224
第四篇 附录... 233
A. 终端机控制符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: