脚本语言?
由于业务需要,手游开发逻辑由脚本语言lua实现,所以从此开始lua学习之路。接触lua之前对脚本语言的认识停留在下面的几个关键字:
bat批处理,html貌似是脚本语言?解释型语言?
认识太浅薄了,先来了解下脚本语言。
首先知之为知之,不知百度(维基)之。wiki的解说如下:
脚本语言(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。
好吧,也就是它是编写-运行的解释型语言。
简单就是它的特性:
- 语法和结构比较简单
- 学习和使用比较简单
- 修改完成后保存下,就可以重新运行,不需要bulabula的编译了,容易修改。
不过简单的情况下,性能当然不如C,C++等编译型语言。
那么为什么网游开发要用脚本语言?
百度下的资料只有一些边边的理由:WOW伟大的自定义界面系统的关系,脚本语言闻名一时,或者简单的说用lua开发比较适合网游经常要修改的节奏。
这些理由当然是不够的,幸好找到了网易大神赖勇浩的CSDN博客,解释very的好,所以摘录如下:
脚本在游戏业中找到自己的一席之地,是因为网游市场需要一个快速开发方案来避免C/C++开发带来的项目高成本和高风险。那么,具体而言脚本相对于C/C++这类编译型语言有什么优势呢?
- 易于学习、代码可维护性强。通常脚本的语法都非常简单,也没有太多高阶的特性,学习的门槛较C/C++低得多。如Python号称只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本编程经验的新手,通过低成本的培训,迅速走上工作岗位。除易于学习外,脚本代码也有更好的可维护性(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本不会有很多高阶特性(如C++里的模板元编程就是高阶特性),所以脚本程序员有更多精力关注架构、模式、重用和测试,从而提高了代码的质量;相应地,没有那么多让人困惑的高阶特性,也使得代码“简洁”不少。
- 降低开发成本。如第一点所言,脚本易于学习,使得游戏开发公司可以大量应用新手,是降低成本的有效手段。那么如何来保证新手写的代码的质量呢?这需要我们辩证地看问题。从经验上看新手写的程序无论用什么言语,bug肯定不少。但一个C新手编写的代码和Python新手编写的相同功能的代码相比,C版本应该会有更多的bug。由于C程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也有先天的优势,这使得脚本在低成本的同时能够更好地保证代码质量。
- 形成人才壁垒。软件开发行业是一个动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中过日子。使用脚本开发,形成人才壁垒是游戏业减少人才流动的有效手段。因为脚本现在除了在游戏业中大红大紫外,并没有在其它行业形成杀手级应用(虽然在web开发方面也有燎原之势,但终究不似在游戏业中的地位高尚)。这就让游戏程序员很少会考虑非游戏业的职位,而其它行业的程序员却可能会因为脚本的易学习性转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。因为现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言。程序员从公司A跳槽到公司B可能就要学习使用另一种脚本,这提高了跳槽的成本,从而使人才流动减少。
其实第3点我认为现在效果差了,毕竟程序员不可能只懂一门脚本语言,都不是笨蛋,脚踏N条语言才有跳槽的本钱。再说天朝的程序员都有一颗跳槽的心,和他是不是脚本程序员无关了。(个人吐槽)
他的博客中还提到了脚本发展趋势,网游的生产组装化将导致脚本语言的普及。博文写于2007年,现在看来已经是了,网游是脚本语言的时代。不然不会有此博客了。