本着Lua简单易用的想法来学Lua,没想到这Lua是一点都不简单啊!
众人流传的Lua脚本简单,也只是停留在使用Lua脚本的层面上而已。事实上设计Lua脚本却并非易事,Lua语言设计的原则是小巧,所以甚至很多东西都没有语言层次上的实现,例如数组、类、迭代器这些在大多数语言中很常见的东西,在Lua中都需要通过表和函数的灵活变化组成。当然也提供了很多其它有趣的特性,例如闭包、协程、First-Class函数、元表等。因此Lua脚本设计者需要时刻注意使用语言自身的特性,给Lua脚本使用者封装好一些数据结构及高级用法,避免脚本使用者去学习过多的语言高级特性。
但是总体来说,对于C++游戏开发者而言,学习Lua也是很重要的。其一,是解决了C++编译时间过长的问题,Lua支持热更新,无需编译,提高开发效率。其二,是将游戏逻辑与渲染层分离,利于结构解耦合,也利于团队分工合作。其三,避免C++层的内存管理繁琐,Lua提供了自动垃圾回收机制,使得Lua脚本使用者在编写游戏逻辑时尽量少考虑与游戏功能无关的细节。
以前学习C、C++、Java、VB这些语言,感觉编程语言大体都类似,但是原来只是因为它们的语言血缘关系亲近而已,实际上习惯了C系编程语言的人,去学习一下血缘关系远一点的编程语言,对于拓展自己的思路和眼界,也是不错的。你会发现原来思维逻辑可以用如此多的、相差甚远的表示方法来表达同一种事物,只要是清晰可行的逻辑,它都是好的逻辑,无论你用的是计算机语言,还是人类语言。