简单易学

  更具现代性: 
    完全面向对象,跨平台,支持Unicode、多线程,垃圾自动回收,类型反射,静态编译,动态类型装载等等。

  更简单易学:
    繁琐、晦涩、不常用的语言特性被尽量精简,且补充了很多便于使用的语言特性。支持中英文双语关键字,在关键字和语法格式方面,尽量与现有类似编程语言相同,减少了学习量。

  对系统环境的适应和控制能力更强:
    定义有语言无关的“EF对象模型”,允许使用其它各种编程语言直接书写“易语言.飞扬”本地类,和用“易语言.飞扬”本身书写的类完全融合互补,可用作快速建立强大高效的本地应用环境,同时可充分利用现有代码资源。

完全面向对象

 封装: 
    使用私有成员存储内部数据,使用私有方法对内部数据进行处理,通过公开或扩展的成员和方法对外界提供操作接口。 
  继承: 
    子类自动拥有基类中定义的所有公开、扩展的成员和方法。 
  多态: 
    根据对象的真实类型(运行时才能确定)而非变量类型(编译时即可确定)来决定实际被调用的方法(虚方法)。 
       

 

跨平台: 
    同一份源代码,不经过任何修改(或少量修改)即可在不同的操作系统下编译运行。
       
  支持Unicode、多线程:
    Unicode,支持全球各个国家的语言文字,便于开发国际化软件。 多线程,充分发挥多核CPU性能,提高程序执行效率。
       

 

垃圾自动回收: 
    自动判断并回收无效对象(不再被使用的对象)。
    降低项目开发难度。
    增强程序稳定性。 

       

 

 类型反射: 
    编译后的类型具有“自省”性。
    可以在运行时获取类型(或类库)的定义信息。
    可以根据类名称动态创建类对象,并调用对象指定方法。
    提供“反射”类库供程序员使用。 

       

 

 静态编译: 
    源代码将被直接编译为可执行代码。
    没有中间字节码,没有解释执行环节。
    编译时执行严格的语法和数据类型检查。
    绝大多数非逻辑性错误都能在编译时发现。 

       

 

  动态类型装载: 
    类型总是以类库的形式存在。
    类库总是在第一次用到时被加载。
    类型总是在第一次用到时被装载。
    类型可以随时被卸载。
    动态类型装载有助于提升程序的模块化、灵活性和可扩展性。 

       

 

属性表: 
    属性表采用易读易写的类XML格式,用于辅助定义“类库、类、接口、枚举、常量、变量、参数、友好名称……”等几乎所有程序实体。 
    属性表的位置通常紧跟在实体名称的后面,且用户可以根据情况灵活设置扩展属性,并可通过反射机制读取。

       

 类自然语言编程: 
    属性表采用易读易写的类XML格式,通过引入“友好名称”,易语言实现了“类自然语言编程”。 
    友好名称也有“参数”的概念,但它的参数可以出现在友好名称中间的任意位置,参数的顺序也不重要——而不象类方法那样:参数只能顺次放在方法名称的后面(还要用小括号括起来)。

       

多层嵌套注释: 
    “/*”表示多行注释的开始,“*/”表示多行注释的结束。 
    和其它语言不同的是,“易语言.飞扬”多行注释内部允许嵌套使用单行注释和多行注释。

       

 多返回值: 
    方法可以有多个返回值。 
    多个返回值可以有不同的数据类型。
    多返回值给编写程序提供了更大的灵活性。 

       

 嵌入类型和匿名类: 
    允许在类型内部嵌套定义其它类型。 
    嵌入类可以被允许访问其外层类的所有成员。
    可以创建匿名类对象。 

       

嵌入方法: 
    允许在方法内部嵌套定义其它方法。 
    嵌入方法可以使用其外层方法中的参数和局部变量。
    通过嵌入方法可以实现更小范围内的代码重用。 

       

  属性: 
    支持“对象.属性”语法,如“按钮1.标题”。 
    当属性被读取或赋值时,对象将会得到通知。
    本特性用作更好地支持快速应用程序开发。 

       
  事件: 
    当对象收到某个事件时,其对应的事件处理方法将被调用。 本特性用作更好地支持快速应用程序开发。 
       

中英文双语关键字: 
    为了兼顾已有程序员的思维习惯,“易语言.飞扬”中所有关键字和系统属性,都同时具有中英文两种名称,可以同时混用。 
    在语法格式和关键字方面,尽量与现有类似编程语言相同,减少了学习量 。 

       

 参数默认值: 
    方法的参数可以有默认值。 
    与其它语言不同的是,“易语言.飞扬”任何一个参数都可以有默认值,不限于最后面的参数 。 

       

参数扩展: 
    方法的参数可以被扩展。 
    不仅允许扩展最后一个参数,还允许以“组”为单位扩展最后N个参数。 

       

数据类型自动转换: 
    可实现基本数据类型数据和对象之间的自动相互转换。 
       

“动态类型”和“弱类型”: 
    通过在系统库中引入“通用型”、“数值型”、“数组型”等类,“易语言.飞扬”在一定程度上做到了“动态类型”和“弱类型”。
    以通用型为例,可以将其它类型数据赋值给通用型变量,也可以将通用型变量赋值给其它数据类型变量。
            如果某方法的参数为“通用型”,则该参数可以接收各种类型的参数值。

       

三联判断表达式: 
    “0 < x < 10”等效于“x > 0 && x < 10”。
    前者更符合人的思维习惯,代码可读性好。
    与数学表达式相一致,便于初学者理解。

       

交换操作符: 
    交换操作符用于交换两个变量的值。
    “a <=> b;”等效于“int c = a; a = b; b = c;”。
    前者更直观,更简捷,代码可读性好。

       



“易语言.飞扬”与 JAVA、C#、C++ 的异同: 


易语言.飞扬JAVAC#C++
编译编译为机器码编译为字节码编译为字节码编译为机器码
执行由CPU直接执行在虚拟机中执行在虚拟机中执行由CPU直接执行
面向对象完全面向对象完全面向对象完全面向对象支持面向对象
垃圾回收支持支持支持(目前)不支持
标准类库有,有待丰富非常丰富非常丰富标准类库较小,但第三方类库非常丰富
单根继承是 所有类都是“系统.对象”的子类是 所有类都是“java.lang.Object”的子类是 所有类都是“System.Object”的子类否 任何类都可以有多个基类,没有固定基类
跨平台支持 同一个源代码未经修改或经少量修改可在其它平台下编译运行支持 同一个程序或类库未经修改或经少量修改可在其它平台下运行不支持 仅限于Windows平台支持(但在多线程、网络、文本编码转换等领域需第三方类库支持)
多线程支持支持支持第三方类库支持
Unicode支持支持支持部分支持
网络支持支持支持第三方类库支持





语言复杂度简单较简单较简单较复杂
学习难度容易较容易较容易较难
IDE支持自行开发,会支持很好支持很好支持很好支持较好

易语言.飞扬JAVAC#C++
启动方法公开 静态 整数 启动(文本[] 参数)public static void main(String[] args)public static void Main(string[] args)int main(int argc, char** argv)
启动类编译时指定在 MANIFEST.MF 文件中指定Main方法所属类
基本类型整数,小数,逻辑,文本,字节集byte, short, int, float, double, boolean, long ,char
char, unsigned char,short, unsigned short, int, unsigned int, long, float, double, bool
定义类时所用关键字类 或 classclassclassclass
公开/保护/私有 所对应的关键字公开/扩展/私有public/protected/privatepublic/protected/privatepublic/protected/private
定义变量整数 i = 123; 或 int i = 123;int i = 123;int i = 123;int i = 123;
定义数组变量整数[] a = { 1, 2, 3 };int[] a = { 1, 2, 3 };int[] a = { 1, 2, 3 };int[] a = { 1, 2, 3 };
定义类公开 类 我的类 <基类型 = XXX> { }public class MyClass extends XXX { }public class MyClass : XXX { };class MyClass :public XXX { };

易语言.飞扬JAVAC#C++
定义接口公开 接口 我的接口 { }public interface MyInterface { }public interface MyInterface { };没有明确的接口概念,但可用纯虚类加多重继承达到接口的效果
定义枚举公开 枚举 我的枚举 { u, v, w }public enum MyEnum { u, v, w }public enum MyEnum { u, v, w };enum MyEnum { u, v, w };
创建对象对象 obj = 创建 对象();Object obj = new Object();Object obj = new Object();MyClass obj; 或 MyClass* pObj = new MyClass();
创建数组对象整数[] a = 创建 整数[x];int[] a = new int[x];int[] a = new int[x];int* a = new int[x];
条件判断(if)如果( 1 + 1 == 2) { } 否则  { }if( 1 + 1 == 2) { } else { }if( 1 + 1 == 2) { } else { }if( 1 + 1 == 2) { } else { }
多条件判断(switch)假如(x) { 为 1: 为 2: 为其他: }switch(x) { case 1: break; case 2: break; default: }switch(x) { case 1: break; case 2: break; default: }switch(x) { case 1: break; case 2: break; default: }
循环(while)循环(x < 0) { x++; }while(x < 0) { x++; }while(x < 0) { x++; }while(x < 0) { x++; }
循环(for)C循环(整数 i = 0; i < 10; i++) { }for(int i = 0; i < 10; i++) { }for(int i = 0; i < 10; i++) { }for(int i = 0; i < 10; i++) { }



相关推荐