http://www.ngnc.net/ngnc_how_to_make_app.htm
《“NGNc”在兼容性、性能、系统复杂度间权衡》
袁德俊(2004年6月24日)
(本文阅读前,如果您阅读了以下文章,将更容易理解本文)
前言:
“NGNc”是一个“c”语法规则的脚本语言,配备自己的虚拟机和调试环境。它不追求语法的精妙如:C++、C#。而更推崇c语法的干练和无所不能,就如同很多程序高手讨论如何用c语言实现如COM接口和虚函数一样。
“语言”为何物?
“语言”(计算机语言)是满足人同机器交流的工具,不同版本,不同层次的语言又各具特点,满足着人们各样的需要。“NGNc”的诞生就是为了满足:降低系统复杂度、提高兼容性、同时可以兼具性能的需求。
目前公认的对语言的分层为:(从低到高)
汇编语言:(机器语言),完全以机器可以理解的指令,完成程序员期望的功能;性能最高,但兼容性很差,复杂的系统是不会使用它来作为主要开发语言的。
C语言:是性能和兼容性最好的语言,尤其Ansi C的标准化为很多系统级的应用的首选择Java和目前很多的脚本语言都试图以标准c为桥梁在兼容性上找到最好的解决,“NGNc”也一样。而且c语言的灵活性,更是程序高手愿意追逐的。
C++、C#:在面向对象盛行的时代,因为追随者众多,它们当然就站在了高峰。更因为它承载者先进的编程思想,可以让系统复杂度大大提升,很多杰作都无不出自它们。我本人也是个C++的支持者,未进入C#完全是自己“守旧”的思想在作祟。
其他高级语言:Pascal,Delphi,Basic,等等大同小异;
脚本语言:SQL等语言,是基于特定应用专门开发的,它可以快速地扩充应用系统规模,将特定的应用系统引擎封装其中,降低了系统复杂度,同时兼具兼容性等优点。但脚本语言多为解释型,为了提高系统性能SQL可以在服务端保存编译后的中间代码。
Java特例:它同基于应用的脚本语言的初衷不同,目前成为了一种寻求兼容性最佳的解决方案。
如何使用NGNc构建您的应用?
“NGNc”是脚本语言,它就具备“兼容性”,就如同Java承诺所有Java开发者保证每个开发者的应用,可以在支持Java的设备上顺畅运行一样。
“NGNc”通过函数与项目的其他部分交流协作。只所以用c语言规范,和函数,是为了减少沟通的复杂性。因为我坚信,所有学习过编程的人都知道c为何物,而且计算机语言的重要概念“函数”无处不在。NGNc的函数接口,可以让任何语言编译的模块自如地调用NGNc脚本函数(NGNc叫scall,Script Call),也可以通过脚本自如地调用任何语言编译的模块中的函数(NGNc叫ccall,C Call)。
1、“NGNc”构建应用的起点和其他应用无异,利用NGNc提供的函数库,编辑您的代码,是从main开始,还是winmain开始都由您定,同Java语言一样,可以在NGNc提供的标准库基础上,使用NGNc脚本开发完整的应用。
2、“引擎”封装。如果NGNc只能单独使用无法扩充,它只能是个c语言教学工具。NGNc的开发初衷是将高性能的开发成果(传统语言开发,如C++)以函数库插件的形式提供给NGNc,由NGNc扮演“脚本”角色,同时,可以无限扩充应用领域。
3、“兼容性”与“性能”的权衡:如同汇编和高级语言在“兼容”和“性能”间权衡一样。NGNc同样需要,因为传统语言的编译目标是机器语言,而NGNc的编译目标是虚拟机代码,为“兼容性”付出的代价就是“性能”损失。NGNc的函数机制可以让开发者在scall和ccall之间自如选择,仅仅通过配置不同的函数库即可。而无需调整任何脚本源码甚至编译后的虚拟机代码。
4、汇编、高级语言、NGNc相互权衡的应用开发模式:汇编、高级语言同NGNc的关系是一致的。只所以引入,是因为NGNc的内核也是高级语言和汇编的作品,汇编能优化其他高级语言开发的应用,同样可以优化NGNc。NGNc是开放性的脚本语言平台,它将自身的几乎所有可以优化的部分都开放出来,可以替换高级语言编译的模块,也可以用汇编编译。甚至NGNc将整个脚本语言的实现过程中的每个模块都开放,如果用户有兴趣可以编制一个全新语法规则的脚本语言,或对NGNc本身扩充。
这就是:“NGNc”为您提供的另一个选择,在兼容性、性能、系统复杂度间权衡。