首先给答案:历史原因。
因为原生版市场定位不准确,用户量一直不佳,说简单点就是上手太难,没人用,没Java基础玩不转,有Java基础有更好的工具选择。
因此经过试错后,轻舟版本在早期设计时的核心定位便是主打“简单,易懂,轻量级,易上手”的开发工具,目标用户人群为普通用户,非专业程序员,因此并没有考虑完全支持面向对象开发等特性,尤其像继承,实现,接口,重写等等。
但是发现更新到后期,很多程序中的需求,如果没有面向对象的支持 ,写起来比较麻烦,所以又开始引入面向对象,在原有设计上修修改改,加入拉姆达,加入匿名类,加入继承,加入简化的回调事件等等。
但是越到后面,发现前面设计已不足以支持高度扩展增加其面向对象了,而原计划面向对象这些特性是在 VcnStudio 5.0 才准备增加的,但是由于某些原因,需要提前支持,因此只能小刀阔斧的对整体语法,改革了一下。
原有的旧版项目中的模块.sm(simple module)功能有些局限,本质其实早期设计也是当作一个类,但是为了方便自动化注册可视组件的事件,模块类无法继承自定义父类,也不支持实现接口,所以新版直接改为纯 class 类,可以自由继承父类,也可以实现接口。
原有的结构体声明.st(struct)文件中只能自定义结构体,而新版新增的 .ass 文件表示 assembly 程序集,在程序集文件中即可以定义结构体,还可以定义类,接口等等,比原有的 st 文件支持的功能更多。
改动的同时也最大程度的保留了旧版源代码兼容性。
经过本次改动后,轻语言除了泛型之外,已经支持大部分面向对象开发的特性和功能了,同时加入程序集功能,编写程序也将变得更简单,高效。
因此为了后期语言的更新维护,也同时为了轻语言本身的更新,修改其后缀名是必要的。
至于后缀名冲突,在命令的时候我就已经发现了,但最后选择保持不变,因为这个问题属于特定问题,需特定讨论,毕竟 VB6 的项目工程源码文件后缀类型接近 20 多种,也不乏存在同名冲突情况,世界那么大,有相同的两个名字也在所难免,但若是为了避免同名而故意修改成不符合语义的名字,这样可能会适得其反,显得更奇怪。