软件过程是从现实世界到代码空间的一种映射过程.
software process
World space --------------------> Code space
World 是Entity的集合
比如马有很多实体. 但马的概念只有一个, 是根据空间(马的基本特征) 的抽象出来的. 看起来这种说法有些形而上学..
概念是世界在空间的抽象(求导). 过程是世界在时间上的抽象(求导).
concept = d(Entity)/d(space); process = d(Entity)/d(time);
World 是Entity的集合, Code 是Data的集合.
Entity--> Data
比如多个实例 Entity1', Entity1'', Entity1''', Entity1''''
他们都属于Entity1这个概念.
concept = d(Entity)/d(space);
又比如 t时刻Entity1 为Entity1(t), t' 时刻Entity1 为Entity1(t')
那么描述Entity1的改变过程.
delta(Entity1) = Entity1(t') - Entity1(t);
process = d(Entity)/d(time);
总结是这样
--------------------------software process(mapping)
-----------------------------------|-------------------------------------------
World space(Reality) --------------+-----------> code space(virtual)
Entity(in the world)---------------+-----------> Data (in the code)
process = d(Entity)/d(time)--------+-----------> algorithm = d(Data)/d(time)
process(make the entity change)----+-----------> algorithm (make the data change)
-----------------------------------|-------------------------------------------
concept = d(Entity)/d(space)-------+-----------> Data Type = d(data)/d(space);
concept( the type of Entity)-------+-----------> Data Type( the type of data)
World 由 Entities构成 , code space由data构成.
Entities在时间上的抽象(求导)即为process, data在时间上的抽象即为algorithm.
Entities在空间上的抽象(求导)即为concept, data在空间上的抽象即为data type.
一些想法, 不知是否成熟..
------解决方案--------------------------------------------------------
Relationship
------解决方案--------------------------------------------------------
看到你写的第一句话就别扭,你写得不对。
“映射”这个词用得不妥,映射是有一套规则的,比如y=sin(x),给定一个输入,总是得到相同的输出,软件编写不是如此,随便两个不同的程序员做同一个项目,软件结果肯定不同,这是很显而易见的。因此,软件编写不是一种映射。
第二,“World 是Entity的集合”
这句话是错误的,世界最根本的不是实体,而是关系,上面一位朋友指出了这一点,关系的重要性大于实体,关系是永恒不变的,实体是随时随地在改变的。把实体看成僵硬的,固定的是一种偏见。举一个例子,上级和下级,某一个人在他的上级面前和下级面前所表现出来的可以是完全不同的系统(之所以说系统,是把该实体作为一个外界可以感知其状态变化的)。但关系只有一个。
第三,“
概念是世界在空间的抽象(求导). 过程是世界在时间上的抽象(求导).
concept = d(Entity)/d(space); process = d(Entity)/d(time);”
这两句实在是不知所云,主要是不知道这样一个结论可以有什么作用。你给个可以用你这个结论的例子出来,也许我才能看懂。
第四,“Code 是Data的集合”
这句话我很赞赏,因为我历来认为数据如果是自说明的,就可以减少很多代码量。只是我不知道你说这句话和我的理解是否一致。我看八成不一致。
看到这里就写道这里,看到下面我发现你也许是想对软件的自动开发进行研究,作出一套可以直接由最终用户使用的工具,这个时候就不需要程序员了。说实在话,我没有太看出你的东西是否有可行性,也许你多加解释,会更清楚一点。比如举个例子来应用你的理论。