元编程

应用软件是现实世界的抽象。

元编程是现实世界的抽象的利器。

具有元编程的特性的语言如Java,python。

举例而言,java提供了Class对象,Method对象,Field对象,已经足够应付面向对象了。

比如,Class Route{

              Field IPPrefix;

              Method Distribute();

              Method Revoke();

          }

          但由于要运行在运行环境(machine)上,有一个指令系统要面向,即面向机器,因此定义了非对象的类型。

          这些类型(type)是不可扩展的,面向指令系统,如整型,浮点型,字符型,字符串等。为了与对象统一,java有对应的包裹类。

          而在java中,type也抽象为现实世界中的一种对象,能够应用面向对象的方法,比如运算符重载,虚函数,序列化等。

         

python中,同样,一切皆为对象。type也是对象。


         有一些语言世界的理论需要说明的是,语法和语义的规则,在形式语言自动化和人工智能方面必不能少。

         拿python而言,字符,列表,字典,内建类型和自定义的类是对象,而内建类型本身type(称为内建元类)和自定义的类的基类object是对象。可以继承type自定义元类。

         而type既然是对象,那么应该有个元类,但是不能无限嵌套,该元类就不能再称为对象而再有元类了。

         然后就是实例化了,变为内存中的代码和数据。不像java,上述内容应该是通过函数调用来实现的。

        

         java有所不同,java的类定义是可以动态加载的,按需根据classpath去搜索。因此class对象会在虚拟机内存中有唯一一个,用来校验加载的类定义,主要是确认版本问题。因为type是不可扩展,没有类定义文件的,所以不涉及检验版本的问题,可能在机器移植方面能够起作用,比如虚拟机内关于32位和64位的type定义有所不同,但目前看来oracle似乎也未确认有此特性。

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值