程序和数据的统一、编程和应用的统一,简单介绍XWorker的编程理念

zhangyuxiang 发布于 2014/03/12 10:12
阅读 254
收藏 2

首先简单说一下XWorker是什么,我们知道作为一个程序员通常也会给自己制作一些工具,XWorker本身就是一个这样的给我自己开发的工具,但是后来发现可以一边使用它一边编程,因此花了一些时间研究其理论,并且也把它开源了。

XWorker的编程方法是基于模型的编程方法,现在开始介绍其编程理念,希望大家能够感兴趣并参与讨论。

1. 世界、事物、动作、类和对象

    从抽象的角度说我们编程的目的是在创建一个个虚拟的世界,比如给定一个需求我们用程序实现,实际上就是用程序实现了一个可运行的系统,这个系统包含了各种实体和功能,如果把系统当做一个虚拟的世界,那么这个系统就包含了各种事物。

    如果把一个系统当做一个虚拟的世界,那么现实世界中的规律也应该可以应用于虚拟的系统,因此模仿现实世界的概念:

    事物:是指各种东西,实体和程序都是事物。
    世界:各种事物的集合是世界,所以世界是事物的容器,在系统里可以通过世界这个接口访问任何一个事物。
    动作:动作代表的是运动,动作是可以执行的程序。
    事物和动作的关系:如同客观世界物质和能量的关系,它们是可以相互转化的,因此在模型编程里也认为它们可以相互转化。
    事物和对象:当我们称一个东西为事物时通常是不考虑它的语义的,而如果说一个东西是鸟、是动物时这时候它就是对象,因此事物和对象的差异就是我们看待一个东西的方式的差异。
    解释和类:把一个事物当做对象的过程是解释的过程,方法是使用其他事物来解释,当使用事物A解释事物B时,事物A就是事物B的描述者,其中事物A也相当于类。

    我们用一个实际的例子来解释,比如远处我们看到一块石头,走的稍微近一点看它具有人形,因此是石头人,走到跟前一看这个石头人的眼睛还会动,原来这是艺术家的行为表演。

    在这个示例里以事物本身是没有改变的,变的是我们看待它的方式和结果,所以艺术家本身是事物,而我们看待它的不同结果:石头、石头人、艺术家则是对象。

    希望你能理解我说的这些概念啊,不明白有疑问的请可以讨论下。

2. 程序和数据的统一

    有了世界、事物、动作、类和对象的概念后,其实就统一了程序和数据,因为我们可以把数据当做事物,根据事物和对象的概念,你认为这个数据是程序那它就是程序,你认为它是对象,ok,它就是对象。

    由于程序的运行可以修改数据,因此程序和数据就统一了,原理就这么简单。

3. 编程和应用的统一

    程序和数据统一了,那么自然编程和应用就统一了,因为程序的运行可以修改数据,修改数据就是编程的过程,而数据又可以当做程序,因此又可以随时运行,这样编程和应用也统一了。

4. 程序和数据、编程和应用的统一的意义

    首先我已经照着以上理念实现了这样的系统,它就是XWorker,而这样的系统的好处就是可以一边使用一边编程,理论上可以无限的编写下去,因此作为一个程序员自己的工具再适合不过了。

    当然这样的系统还有其他意义,但是我已经不想再讨论这些了,有兴趣的可以自己看看XWorker的理论和哲学。

最后XWorker的网址是:www.xworker.org

加载中
0
猎户座
猎户座
最后,在标签上看到,哦。这是java的类库,一些实现的封装,好吧。。。
z
zhangyuxiang
是一个系统,我做了多年java啊,除了java相关的甲苯语言其他语言相当于0。 要知道我很想用c实现的,最想的是写个基于模型的操作系统。
0
梅开源
梅开源

同道啊!近几年我时常思考类似问题。

直觉和经验告诉我,传统的将程序和数据(库)分开的方式导致对于各种需求,需要程序员根据各层面情况做太多事。如B/S架构,要从关系数据库到后端到css,js,html,每层都是不同的思维和语法,导致了不能产生需求->结果的飞跃,也不能让程序具有智能。

但经验告诉我,用面向对象和过多的人工参与,各种程序写法去定义“世界”,也是会丧失程序的活力的。要实现程序与数据的无形融合,可能得用一些比较“软”的语言,比如递归和函数思想比较浓的。


z
zhangyuxiang
说的太对了,之所以引入事物的概念,就是因为事物本身是无意义的,这样系统在初始时是无明确意义的系统,避免任何人为的侵入。 不过系统一旦启动后,我们就可以向其输入各种数据以实现各种功能,但这些其实是在使用系统。
0
苏大泉
苏大泉
好神奇的共享链接  域名竟然是localhost 
z
zhangyuxiang
貌似是码农的世界那个链接,已修改。 顺便说一下码农的世界适用于分享知识和应用的平台。
z
zhangyuxiang
哪一个连接,我的马上改掉。
返回顶部
顶部