ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 设计一种新语言,“OO编程语言”的探索-1四元组

设计一种新语言,“OO编程语言”的探索-1四元组

原创 Linux操作系统 作者:HaFoLuoKe 时间:2014-12-11 11:27:10 0 删除 编辑
曾经一个偶然的机会,我接触了一种利用三元组表达知识的语言OWL,这种语言中,最基本的单位是三元组组合,[本体,属性,值]。

比如 本体:花 拥有一个 属性:颜色 值:红色 [花,颜色,红],就构成了一个三元组。

我相信这也是很多人的第一印象吧。在面向对象(OO)编程里面,我们也有三元组,对象,属性,和值,类似于这样:
flower.color == red

小贴士:
------------------------------------------------------------------------
    但是跟一般OO语言有一点不同的是,我们看到在这个最简单的模型系统中,只有“对象object”的概念,而没有"类class"的概念。
    其实仔细想一下,在我们的日常生活中,真真切切的存在的只有object, 而class是一个抽象的概念。
   在javascript里面,利用prototype去实现类的的功能,我先创建一个"原型",然后根据这个“原型”,去创造更多的“特例”,这个做法避免了增加一个
    抽象的"class"概念。

   例如,现在我有3辆车,红色的车,黄色的车,绿色的车,我如何表示这3个实例?
   如果用类的思路去实现,我先抽象出:所有的车都颜色,然后创建一个 class 车, 并且拥有一个颜色属性,然后实例化这个class,做出3个实例,并且
   在构造函数中,将3个实例的颜色属性分别初始化为 红,黄,绿。
   如果按照原型的思路去实现,我们可以先定义一辆红色的车,然后以红色的车为原型去创造两辆车,并且将这两辆车的颜色初始化为黄色和绿色。

    你们更喜欢哪种?我更喜欢后者,因为后者少一个概念,更简单,直观。
-------------------------------------------------------------------------

按照这个思路,我们很快会遇到一个问题,例如:我们希望设计一个人工智能机器人tommy,tommy判断事物,做出决定都要根据他自己的好恶,对自己的好,坏。
也就是一个相对好,坏,那么这个相对的概念,要怎么表达?
好了,汽车A相对汽车B快,这个概念,用3元组怎么实现?

实际上当牛顿说出 “只有相对运动,没有绝对运动”的时候,我们就可以同样说出 “只有相对属性,没有绝对属性”。
而要表达这个相对的概念,需要一个4元组,[主体,属性,相对域,值],是不是有点像函数的定义域和值域?
3元组的绝对属性可以看作是4元组这种相对属性的一种特例。
我们可以创造出一个绝对域“absolute”,
比如花是红的,是相对这个"absolute"是红的。这个"absolute"代表全部,也代表无,在编程语言中,可以看作是 void。

花是红的    红 == 花.颜色(void)     [花, 颜色, void, 红]
汽车A比汽车B快   快 == 汽车A.速度比较(汽车B)    [汽车A, 速度比较, 汽车B,快] 


这样我们看到,其实常量属性(颜色),可以看作是一个方法,接受一个void,返回一个固定的值。我想这就是为什么在interface中可以定义常量的一个原因吧。
甚至我们可以得出,属性就是方法,想一想 property [ get, set ] 这种实现。

汽车A是红色的  

汽车A.get颜色(void) == 红色

void 给汽车A喷漆() {
    汽车A.set颜色(黄色);
}

本期我们简单介绍了4元组的概念,接下来我们将更深入一步,探讨继承的概念。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26899445/viewspace-1364205/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 2013-12-02
请登录后发表评论 登录
全部评论

注册时间:2013-03-12

  • 博文量
    31
  • 访问量
    51171