Cocos2d-x 绑定脚本究竟选择 Lua 还是 JS ?

Cocos2d-x 绑定脚本究竟选择 Lua 还是 JS ?

这个问题感觉是有点可笑的存在,很大的程度上和 web 的大规模使用有关,当然直接关联的还是 HTML5 风暴。当你身边不从事 IT 的人都开始说 HTML5 的时候,你知道这个技术概念的副作用要来了。

好吧,闲话不说,我们说正题。

当下,在 Cocos2d-x 中,绑定脚本究竟选择 Lua 还是 JS ?

首先我们要明白,对比绑定脚本与对比语言本身是有巨大的差别的。简单的说作为绑定脚本的语言只是作为计算机语言本身的一小部分。

当我们通常在说起一种编程语言时,我们往往会隐含着很多有关那种语言的相关的东西。比如语言的演变历史,语言产生所要直面的问题,语言的生态环境,等等。

具体的说在 cc2dx 中,绑定脚本的作用就是调用框架本身的 cpp 的接口,这些接口以 cc2dx 框架本身的风格展现,所以,绑定脚本语言本身的特性被抹去了大半,而且因为 cc2dx 使用环境所限,绑定脚本也很难,依靠自己语言的各种生态环境中的资源,比如 Lua 没法直接用 luarock ,Lua 的 C 语言库也很难整合到项目中, JS 在这方面的处境就更尴尬了,因为 JS 设计之初就是为了让它运行在浏览器之中处理各种 web 问题, JS 的代码资源虽多,但是能直接向 cc2dx 提供帮助的却很少。

当然,还有一个问题我们需要明确,就是作为计算机语言本身, Lua 要比 JS 优秀,当然,我们对比两个事物的好坏的时候,需要有一个参照系,在这个语境下就是从作为计算机语言对于程序员的心智负担来讲的。

Lua 的设计从简,但是并不粗糙。 JS 设计确有很多让人用普通思维模式难以接受的地方。对于 JS 的语言设计问题的吐槽太多了,这里不赘述。单单是 this 作用域问题就让人如鲠在喉。

所以总结一下:

1. 对于绑定脚本而言,脚本语言本身的特性事实上已经被宿主框架限制,这个角度看,两种脚本语言没什么差别。

2. 在语言最基本的语法和一些实现特性上, Lua 比 JS 更加规范和更小的对于程序员的心智负担。

综上所述,当前, Lua 更适合作为 cc2dx 的绑定脚本语言。