笔者研发了一款静态脚本语言CSM,希望大家批评指正,网址是csm.zg66.com
具体介绍:
CSM脚本语言是国人自主研发的,拥有自主知识产权(软件著作权证书号为2006SR16059)的,是世界上第一款也是迄今为止(2006年10月)唯一的一款嵌入型的,高性能的,工业强度级的,基于对象的,完全强类型的,基于寄存器虚拟机实现的静态编译型脚本语言.它是主流编译型宿主语言(C/C++/ C#/Java)在脚本领域的自然延伸.也代表着这一领域的顶尖设计水平.CSM是C Sharp Minus的简称,其语法形式大部分取自于微软的c#语言,但也有许多不同.而语义上基本与C/C++相同.CSM脚本语言及其相关软件共由约20万行C++代码和约5万行嵌入式汇编代码组成.CSM脚本语言有许多独特的特性使其成为最优秀的静态脚本语言之一.  CSM 脚本语言提供与主流编译型宿主语言(C/C++/C#/Java)相同或相似的语法形式和思维习惯.  
   CSM 脚本最终生成字节码,以二进制的方式嵌入到宿主环境中,这防止了脚本文本本身的直接暴露,保护了编写者的利益.而且编译器和脚本源程序无须随应用宿主程序一同分发.  
   CSM 编译器提供精确到某行某列的,详尽的,完全中文化的编译出错信息显示.  
 CSM 编译器内部大量使用了虚拟内存,内存映射文件和嵌入式汇编技术,使编译速度更加快速.  
   支持预编译处理中的条件编译功能.(由#def / #undef / #if / #ifdef /#endif等预处理指令提供的一组预处理功能). 
   天生就是Unicode,所以支持中文的类名,变量名,常量名,函数名,属性(property)名.  
   支持sbyte,byte,short,ushort,int,uint,long,ulong整型类型,以及float,double浮点类型,和bool,char等强类型数据.  
   从形式语法上彻底取消了指针的使用(但是语义上还是保留的),但又不失指针操作的灵活性,CSM脚本语言在这方面作出了不小的努力.  
   支持类和对象的概念,并同时支持全局常量,枚举成员,常量成员,静态成员,实例成员。以及静态构造方法,静态析构方法,实例构造方法,实例析构方法,普通静态成员方法,普通实例成员方法,静态和实例属性,以及==操作符重载方法. 可在方法中定义out类型的参数.并支持方法重载(method overload)功能.
 
   支持类中成员的1,2,4,8,16字节对齐属性,这为与C/C++宿主语言进行通讯,提供了相同的内存布局结构,能够以更加直接而快速的方式操控数据.  
   像Java或C#那样,支持静态和实例成员的初始化表达式.  
   支持各种算术,逻辑,布尔运算,复合运算及强制类型转换功能.  
   支持各种语句,包括声明语句,表达式语句,循环语句,跳转(goto)语句,以及switch语句,特别是switch语句,采用了和编译型宿主语言一样的技术.内部实现通过使用平衡树建立跳转表的方式,大大提高比较速度,使得在1000个分支的最坏情况下比较十次,加快了运行速度.  
   支持静态和实例方法的回调机制(这在c/c++中被称为函数指针,而C#中被称作代理delegate),能提供一定程度上的多态特性,并且通过这种方式可实现Event机制.  
   支持作用域和局部对象(或称栈对象)的概念,当局部对象退出其所在的作用域时,将自动调用其析构方法,且调用的次序正好与构造的次序相反,这是最典型的C++特征.  
   提供快速高效的算子功能.  
   提供局部堆和全局堆对象的分配功能.  
   对堆对象实行手工的new/delete分配和释放功能,做到与宿主语言C/C++一致.  
   有对系统调用的跟踪功能,一旦程序发生崩溃,能自动给出崩溃的语句点,以及此时的方法调用堆栈.这有点像我们在Windows系统中常见的崩溃对话框。      CSM脚本语言编译成字节码后由CSMachine虚拟机执行,CSMachine虚拟机上执行的汇编语言被称作是CSMasm汇编语言.而CSMachine虚拟机也是当今独一无二的强大的虚拟机实现之一:   CSMachine虚拟机是一种完全强类型的32位虚拟机,它支持约2500条虚拟机指令,每条虚拟机指令均以嵌入式汇编语言实现,以求达到最高的运行效率.
 
   由于CSMasm具有庞大的指令集,所以对脚本的逆向工程能起到很强的遏制作用.使得反编译CSM字节码的工作很困难,这在很大程度上保护了脚本编写者的经济利益.
 
   利用虚拟内存和内存映射技术对CSM执行映像进行分段,如数据段,代码段,堆栈段,局部堆,全局堆,对代码段实施只读保护,这起到了沙箱保护的功能.
 
   是基于寄存器的实现方式,这种方式比嵌入型栈式虚拟机速度较快.
 
   是开放式虚拟机设计,只须通过Wrap/Unwrap操作对指针进行坐标系调整,不像封闭式虚拟机那样必须使用Marshal/Unmarshal进行数据块复制.
 
   提供载入多个脚本以及一个脚本的多个副本的功能,为脚本程序的团队化开发和多线程应用提供了强而有力的技术保障.  

解决方案 »

  1.   

    hello, 我是楼主
        感谢楼上网友的热情支持,我会努力的,CSM已成为我生命中不可分割的部分,我以后会不断完善,不战胜嵌入型的Lua和Python以及天使脚本(angelscript)誓不罢休.
      

  2.   

    Hello,我是楼主:
       网友 pankun(剑神一笑 Console下面干革命) 您好:
    我觉得我所开发的CSM脚本语言应该不是大而全的语言吧,首先,它是基于对象的而不是面向对象的,而完全强类型的设计,也是看到网上有人提出希望有这个特性才决定开发的.要说大而全,嵌入式的Python比我还要大而全.而天使脚本(AngelScript,网址www.angelcode.com/angelscript)也做得比我的大而全.唯一小巧的是Lua.但Lua也是有不少缺点的,这一点我在自己的网站上有关CSM教程中也有所阐述.动态语言虽然灵活,但与静态宿主语言之间的通讯却不那么方便,而且动态语言不利于大规模脚本程序的开发,后期的维护工作也很烦,还有bug不容易被发现,要到运行时才能发现.
       感谢您对CSM的关注,您对CSM的支持是我不断前进的动力和源泉.
      

  3.   

    看来楼主精力充沛,我也自己设计脚本语言,惺惺相惜,不过我认为面向特定领域是脚本语言的市场所在。我们的Koodoo语言是在IVR、CTI领域的脚本语言:
    http://www.bluespace.com.cn/koodoo/
    以后可以多交流。
      

  4.   

    hello,我是楼主
      楼上的bluesen网友,我看过您的koodoo语言,我也做过CTI方面的应用,我觉得在CTI方向,使用静态脚本语言更适合,我的CSM没有图形界面,这一点是koodoo超过我的地方.我会坚定自己的方向,继续做嵌入式静态脚本语言,要超过国际级的脚本,这是此生追求的目标,不管前途多么坎坷,矢志不渝.
      

  5.   

    csm脚本语言的CSMachine静态库已经发布,请大家多提意见.