一种新的面向对象语言――Other语言(暂定名)

05-08-23 keystonexu1
一种新的面向对象语言――Other语言(暂定名)

我对现有计算机语言不太满足,正构思一种新的语言――Other语言。请大家看看这语言怎样:

Other语言是一种绝对面向对象的语言,一切都是对象。这种语言的一些特性,是别的语言没有的,现阐述如下:

一,面向对象的特点

1,对象和类的关系

在Other语言里,可以以类定义对象,也可以以对象来定义类。

为什么是这样呢,是因为在Other语言里,类中的属性和方法,只是在该类的对象中暂时寄居,而不是永久性的是该类的对象的成员。

当对象从初始类生成完毕后,在对象与其他类的对象相互作用中,该对象的属性和方法,可以被“赠予”或“拷贝”给其他类的对象,或

者干脆可以被自身对象所取消。

如此一来,经过一段时间运行后,对象里的属性和方法也许就不是原来的那些属性和方法了,可能被赠予或拷贝了新的属性和方法,那么

,该对象也就代表了一个新的类的诞生。想要固定下这个对象的改变,就用该对象定义一个新的类就行了。这个新的类又可以初始化新的对象

类中的属性也是某一类的对象,也可以做以上改变。

2,一切都是对象

在Other语言里,一切都是对象,甚至包括你在面板上的涂鸦,也是对象。这就可以有一种很好的相互作用方式,作用于任何对象上,令它

们变化。

在Other语言里,几个对象可以组合成一个新的对象,新的对象也可以拆解成几个不同的对象,任你快乐地做出想做的改变。

Other语言中,类里的方法也是一种特殊的对象,只不过是没有属性的对象而已。

3,面向对象三大特性在Other语言中的表现:

(1)继承的特点

继承可以从一个类继承,也可以从一个对象继承,因为对象已经表征了一个新的类了。当然,继承的特点没有变,继承了该类(或对象)

的属性和方法。

(2)封装的特点

对封装的改变是Other语言的一大特色,该类对象对类的属性和方法可以有处置权,可以动态设置其私有和公有属性,甚至可以将该属性和

方法增予其他对象,或者干脆就去掉。也可以接受别的对象对其的属性和方法的增予。

这其实在生活中是很常见的,比如一辆汽车,它的各种零件都可以拆卸掉,而且可以被改装。在程序运行中,就可以实现一个面板上的按

钮可以被原封不动地自己挪到另一个面板上,功能不发生变化等。

(3)多态的特点

多态有三种含义,函数重载,基类和派生类虚函数。Other语言中的多态,允许函数重载,不允许操作符重载,并可以定义虚函数。但还有

以下特色:

在传统的面向对象的程序里,基类指针可以调用派生类方法的构造,是用基类管理派生类的对象的一种方式。

在Other语言里,多态是基于对象的,一个对象可以被赋予调用另一个对象方法的权限,也可以有赠予另一个对象方法的权限,当然这种权

限需要有授权才行。

在多个同类对象中,可以指定某对象是管理者,这样该对象就可以调用其他对象的方法了。

二,对象之间用“语言”交流

在Other语言里,Other语言只是一个“元语言”,每一个对象(类)都可以有自己的语言集。这就是说,某一个对象内部的方法里用java

语言,另一个对象内部的方法里用asp语言,也是可以的。两个对象间如果想交流信息,它们必须有共同语言。

为什么要这样做,我解释一下。

首先,如今的系统已经非常复杂,一个软件系统里,采用不同语言做事情,本身就是很平常的事情。如一个网页里可能同时采用java语言

,html语言,javascript语言等等。这要看每个对象作的事情是什么而采取不同语言.

元语言也是采用不同语言的不同对象交流的纽带.

又例如在一个大型游戏中,有一个机器人在行走,一架飞机在飞,那么它们两个所涉及的方面不同,采用的语言以及关键字等也不一定一样.总

之要更好地描述对象的性状和行为,需要在语言上有不同.

对象之间交流信息是通过语言.就象人与人之间,通过相互说话共同完成事情一样.

这样做的好处有:

1,对象之间可以做非常复杂的交互,因为是用语言进行沟通的,所以代码可以很灵活.所以,对象间交换信息越复杂,用这种方案就越显示出优

越性.

2,语言的检查是很严格的,这里是编译系统级别的检查错误.必须检查词是否是关键字,词法是否正确,语法树是否正确等等,这样,就把很多

输入输出上出错的几率大大降低.从语法结构上就避免出错.我们就不用那么多if else等来判断错误了.输入输出,是出错最多的地方,这就使我

们的系统具有先天的健康性.

3,对象的方法其实也是语言,这就有了对象之间互相传递方法的可能性,为灵活的组装对象功能打下基础.

4,你甚至可以为某一特殊功能创造一个新语言,比如,为你的某一特殊应用度身订做一种语言.

5,可以通过这种方法,吸收各种其他语言的精华代码.

先写到这,以后慢慢再写.请各位多指教!

keystonexu1@163.com

自由虫子
2005-08-24 09:21
真是混乱,很多需求都是可以通过OOP方法实现,在思想上并没有突破,而且违背了现有的OOP原则,扔到垃圾堆吧。

keystonexu1
2005-08-24 14:25
规则是用来被破坏的。不破不立。关键是,怎样将对象和类的关系,灵活地组合和拆卸。

用现有面向对象技术当然可以实现很多我这里的功能,如果用面向过程技术其实也可以实现呢,

虽然现有面向对象中,多语言应用已经是很多了,但是我这个Other语言,是要以多语言为特色的,一方面,对象间一定用语言交流,另一方面,每个对象根据用途可以自由采取不同的语法,并可以根据词汇表和语法表动态创建自己的语法。

Other语言由于采用多语言机制,所以内部会包含编译器的词法分析和语法分析,对有格式文本的处理将会达到一个崭新的水平,比如做一个有复杂运算的计算器,做HTML文本向普通文本的转换,XML文本的操作等,将是几行代码就可以实现的,只要设定了所操作文本的词法正则表达式和语法规则,就可以在内部动态产生该文本的解读器,获得预期结果,为相应代码所使用。这就为做搜索引擎,数据挖掘等深度工作提供了强大武器和支持。这些要用别的语言做,就需要手工完成词法检查和语法的解析,需要几十几百行代码才能实现。

banq
2005-08-24 15:42
我认为现在语言的一个方向反而是消灭类和对象的区别,类就是对象;对象就是类,尽量减少他们之间区别和转换,特别是类到对象的转换,在Java中,通过pico/jdon这样的ioc容器和垃圾回收机制,对象创建以及之间关系和对象销毁都无需关注,这些都是优点,新的语言至少应该在这些好的基础上发展,而且语言不是很重要,关键是被用作表达思想的便利程度。

就象英文和中文都能写出历史名著一样,现在软件竞争已经从过去语言竞争发展到设计思想的竞争,也就是框架的竞争。我们无需再象做操作系统、数据库那样从底层做语言了!

keystonexu1
2005-08-25 08:45
语言的变化会带来很多不一样的东西啊,比如Ruby语言,python语言,就是给编程带来很多新鲜血液。

banq
2005-08-29 21:56
是这样,我们需要了解现行语言如Java的缺点,比如对Annotation反感和质疑声不断,你就要站在前人基础上,提出一个XML配置和代码如何实现方便衔接方案啊。因为现在是配置化开发和代码开发混合的时代,如何对XML无缝支持,是语言的重要技术点。

猜你喜欢