Programming in Lua
Copyright ® 2005, Translation Team, www.luachina.net
Programming in Lua
Programming in Lua
作者:Roberto Ierusalimschy
翻译:www.luachina.net
Simple is beautiful
Copyright ® 2005, Translation Team, www.luachina.net
Programming in Lua
i
Copyright ® 2005, Translation Team, www.luachina.net
版权声明
《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.
Programming in Lua
i
Copyright ® 2005, Translation Team, www.luachina.net
译序
“袁承志知道若再谦逊,那就是瞧人不起,展开五行拳,发拳当胸打去。荣彩和旁
观三人本来都以为他武功有独到之秘,哪知使出来的竟是武林中最寻常不过的五行拳。
敌对三人登时意存轻视,温青脸上不自禁露出失望的神色。
“荣彩心中暗喜,双拳如风,连抢三下攻势,满拟自己的大力魔爪手江南独步,三
四招之间就可破去对方五行拳,那知袁承志轻描淡写的一一化解。再拆数招,荣彩暗暗
吃惊,原来对方所使虽是极寻常的拳术,但每一招均是含劲不吐,意在拳先,举手抬足
之间隐含极浑厚的内力。”
——金庸《碧血剑》
编程语言之于程序员,若武功招式之于习武之人,招式虽重要,但在于使用之人。
胜者之道,武功只行于表,高手用剑,片草只叶亦威力无穷。
当今武林,派别林立,语言繁杂,林林总总不计其数。主流文化的C/C++、Java、
C#、VB;偏安一隅的Fortran;动态语言中的Perl、Tcl、Ruby、Forth、Python,以及本
书介绍的Lua;……,等等等等。再加上世界上那些不知道躲在哪的旮旯的奇奇怪怪的
hacker捣鼓出来的异想天开的语言,要想将各类语言囊入怀中,不异于痴人说梦。不信
可欣赏一下BrainFuck语言
1
的Hello World程序,语言本身依如其名。-☺-
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[
-]>++++++++[<++++>-]<.#>+++++++++++[<+++++>-]<.>++++++++[<+
++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]+++++
+++++.
虽说语言的威力依使用者本身的修为高低而定,但不同语言本身的设计又有不同。
若让用 Java 写写操作系统内核、Perl 写写驱动程序、C/C++写写 web 应用,都无异于舍
近求远,好刀只用上了刀背。
Lua 本身是以简单优雅为本,着眼于处理那些 C 不擅长的任务。借助 C/C++为其扩
展,Lua 可闪现无穷魅力。Lua 本身完全遵循 ANSI C 而写成,只要有 C 编译器的地方,
Lua 便可发挥她的力量。Lua 不需要追求 Python 那样的大而全的库,太多的累赘,反而
会破坏她的优美。
语言的优美,来自于使用者自己的感悟。Lua 的优雅,也只有使用后才会明白。
扬起帆,让我们一同踏上 Lua 的学习之旅……
1
有趣的Brain Fuck语言。http://www.muppetlabs.com/~breadbox/bf/
Programming in Lua
ii
Copyright ® 2005, Translation Team, www.luachina.net
本书的翻译,是
www.luachina.net中朋友们共同努力的结果。下面是参与翻译与校对
的朋友:
-- file: 'thanks.lua'
-- desc: to print the list of the contributing guys
function list_iter (t)
local i = 0
local n = table.getn(t)
return function ()
i = i + 1
if i <= n then return t[i] end
end
end
helpful_guys = {
"----参与翻译----",
"buxiu", "凤舞影天", "zhang3",
"morler", "lambda", "sunlight",
"\n",
"----参与校对----",
"凤舞影天", "doyle", "flicker",
"花生魔人", "zhang3", "Kasi",
"\n"
}
for e in list_iter(helpful_guys) do
print(e)
end
www.luachina.net翻译组
2005 年 7 月 26 日
注:本 pdf 为翻译稿,校对工作在进行。