自猎码AMix编程语言发布,已过去一年。在这一年的时间里,我们废寝忘食地做了很多的工作,AMix也逐渐变得越来越强大。 不过,随着开发者们提出了越来越多的需求,1.0版本的AMix渐渐开始无法满足更高的要求。我们最初 ...
自猎码AMix编程语言发布,已过去一年。在这一年的时间里,我们废寝忘食地做了很多的工作,AMix也逐渐变得越来越强大。 不过,随着开发者们提出了越来越多的需求,1.0版本的AMix渐渐开始无法满足更高的要求。我们最初的工作方向是尽快地横向发展,研发多平台应用的开发能力。但鉴于目前AMix编程语言存在的局限性,我们需要先纵向深挖,在AMix1.0版本基础之上,设计研发AMix2.0。我们的目的是在兼容多平台的前提下,优化设计AMix,尽可能地支持所有的面向对象特性,尽可能地简化语法,尽可能地轻便、智能。 AMix2.0主要的新特性或改动: 1)增加类的声明。1.0版本是将am文件默认为一个公开的类,不需要书写类的声明结构。添加类声明可以支持对类的控制,如final类,不允许其他类继承; 2)增加协议类。类似swift中的protocol,java中的interface。当一个类实现某个协议,那么该类的内部需要实现协议类中的所有接口方法; 3)interface可以独立写到一个am文件,interface类似java中的抽象类; 4)增加private、inherited、abstract修饰词,配合之前已有的修饰词public、static、final,可以支持更丰富的类成员的访问权限设置和状态设置; 5)支持数据类型的智能推断,在声明变量、函数时可以省略数据类型; 6)支持设置函数参数的默认值; 7)支持定义可拓展的函数参数; 8)支持枚举类 9)支持快捷的正则表达式对象:/正则表达式/mig,类似JavaScript中的正则表达式; 10)支持泛型; 11)支持JSON和JSONArray的快捷创建和字段存取,就像在JavaScript中那样使用JSON; 12)支持Map(哈希表)的快捷创建和字段存取; 13)支持List(集合)快捷创建和存取,像数组一样使用List; 14)Object(对象型)、Class、String(文本型)、Array(数组)、Number(数值)转为核心内置类,可以直接在常量上调用它们的类成员,而不再是通过其他工具类来处理; 15)支持模板字符串,类似JavaScript中的模板字符串; 16)Array(数组)、List(集合)、Map(哈希表)等数据,可以使用for循环语句遍历; 17)去除"evt/事件"、"dfevt/定义事件"关键字。"dfevt/定义事件"关键字的作用是在父类中标记需要在子类中重写的方法,"evt/事件"的作用是在子类中标记重写父类的方法。这两个关键字的作用是明示方法的用途,但在实际开发中存在局限性。在AMix2.0中可以通过@Override注解来标记重写的方法。 18)一些关键字去除#字符,直接写单词。如import、constructor; 19)去除#innerClass关键字,类和内部类都使用class关键字来定义,在class结构内嵌套class结构; AMix2.0几乎支持了所有的面向对象特性,带来的第一个好处就是,市面上已存在的组件库几乎都可以直接在AMix项目中使用。这样一来,就直接解决了AMix的组件生态问题。另外,对于原生组件开发者来说,可以节省很多工作。可以直接按原生的逻辑开发,不需要做AMix语法和原生语法的对接;不再需要做原生类和AMix支持类的转换。AMixStudio会随着AMix2.0发布新版,采用新的项目加载方案,加载项目中依赖库的所有类,对这些类做词法解析和代码提示。 AMix2.0仍然提供中文关键词,可以使用中文编写代码。我们会设计一套新的语言本地化方案,对编程语言以及组件库的代码进行本地化。它不仅可以支持中文编程,甚至可以支持任何语言的编程,比如:俄语、日语、汉语。这其中其实没有什么高超的技术,但却是非常有意义的事情。编程中使用的语言文字本质上只是一种编码,对于电子设备性能过剩的现代来说,编码转换导致的性能问题已是微乎其微,可完全忽略不计。而代码逻辑导致的性能问题才是我们需要关注的。编程语言的本地化一方面可以降低学习门槛,另一方面使得代码易读,容易组织逻辑,我认为这是很有意义的。 |
2021-12-20
2022-06-20
回答
回答
回答
3