脚本语言早已不是什么新潮的玩意,在shareware中应用脚本语言的例子也不少,例如Resolver Systems的Resolver One软件。脚本语言在构建shareware的过程中究竟有何优劣,应该如何利用好脚本语言的特性呢?
快速原型
轻量的动态脚本语言在构造快速原型方面有着先天的优势。语言的表达能力强过一般的编译语言,开发周期中省却了编译部署的步骤,代码变更后的效果即改即现。灵活的类型系统不仅仅在写程序时比较便捷,写unit test的过程中,构造mock object也更容易。
扩展功能
希望在程序中嵌入插件的功能用脚本语言来实现是最简单不过的了。比起用C/C++写dll,或者用reflection来调入.NET的Assembly,脚本语言使用起来方便得多。
扩展模块可以由有编程能力的用户来实现,也可以由软件作者自己开发。极端点的情况是,软件开发者只要利用编译语言和开发环境搭建一个程序的GUI框架,整个程序的功能可以完全使用脚本语言来实现。
防破解
在程序中嵌入脚本引擎或者虚拟机,并且让程序本身和脚本/虚拟机代码有比较复杂的交互是一种减少程序被破解的途径。脚本语言和虚拟机引入了有别于主程序代码的额外复杂性,这种复杂性对于试图进行破解或逆向工程的人有一定的阻碍作用。
不利之处
这里简单列出了在程序中使用脚本语言可能带来的问题:
- 额外的学习曲线
- 多种语言并用使程序的复杂程度变高
- 应用程序部署问题