系统架构:使用空间结构、运动定律、运动实例三个概念描述



图1
我们试试看图说话:
所有的系统都可以被看待成上图那样,系统中有一类模型可以按照进出分类为两类:Input类和Output类。代码里可以通过为这类对象的模板(类型、class)名称后缀In或Out来区分,或者也可以建立IAmInObject和IAmOutObject标记接口让这两类对象去实现,在代码上进行这样的区分主要是为了帮助作者和读者建立和识别In和Out概念,时刻想着IO。

IO模型大多是要么是In,要么是Out,极个别可能刚好既是In又是Out。即使刚好有一对In和Out模型的造型(空间结构树造型)是完全一样的,也弄成两个完全一样的仅仅命名后缀不同的模型。

有了后缀为In和Out的对象,还有几个类别的对象的类型应该从对象模板(类型、class)的命名上体现出来。还有哪些种类的对象呢?应该还有:1, 表示In和Out对象行走的轨道路径的对象(这是方法和函数对象);2,表示整个系统的造型的那种一层套一层的圆环套圆环对象(系统资源树对象,除了纯粹只有方法的对象外的所有对象都是树形空间造型对象,只有方法的对象是轨道列表对象而不是树形空间对象。上面说的IO对象也是这种造型对象,只是IO对象是处在系统造型树的靠近叶子一端的对象而这里分类出的造型对象主要是指靠近系统树根那一端的对象)。

后两种对象如何命名是好?
总结:
一共三类大对象:1, 骨骼、形体、组织等对象;2, 管道、神经、系统等对象;3, 血液、食物、粪便等对象。
其中,管道、神经对象又分为In管道/轨道/神经/线路类和Out管道/轨道/神经/线路类两类;血液、食物、粪便类对象也分为In、Out两类。
骨骼、形体、组织对象是一层套一层的资源树对象,资源树对象也可以区分In和Out,但这里的In和Out是表示空间位置的方位词,主要关注“内外(空间)”的意思次要关注“进出(运动)”的意思,是指的父子节点关系,父节点是Out,子节点是In。然后我们就知道如何区分管道、神经、血液、食物、粪便等对象的InOut属性了,区分某段管道到底是In类管道还是Out类管道的唯一标准是从资源树的哪个方向观察,从父节点往子节点观察就是In管道,从子节点往父节点观察就是Out管道。任何一个对象都能明确的区分出是In还是Out。

区分In和Out可能是在对系统中的运动进行建模,而组织结构资源树对象是在对系统空间进行建模。空间和运动全都有了,应该就是完备的了,应该不会漏下东西。上面的描述太抽象,上面那样描述的应该就是下面这个图这样描述的这样的:



图2
在这个计算机当地空间,还是得沿着人类知识树在计算机节点本地命名空间中的命名方法去命名这些东西,不能随意的去命名成管道、骨骼、神经、空气、血液等,向计算机节点的父节点和兄弟节点们解释的时候可以考虑对应到类似管道、骨骼、神经、血液这样的东西。准备学习计算机硬件命名体系。

函数的入参和出参是不可变的,cpu驱动的主体行走到函数体内的时候会从虚空中构建出一个Context,而这个Context在函数体内是可变的,但是这个Context在函数体外面访问不到。怎么可能能够在“虚空中”构建出和Context?不可能。

f x -> 2x;
送进入一个x出来两个x;凭空多出来一个x;这个凭空多出来的那个x等于凭空构建然后又凭空消失的那个Context,那个Context化作了一个x。时间和空间没有凭空的出现也没有凭空的消失,它俩是互相转化了化作了另一种形式。

f x -> 2x;
送进去一个x,f在函数体内构建了一个Context,构建这个Context所需要的空间和时间资源不是凭空出现的而是从另一个高层的维度从函数体外部世界中取到的。之所以给f一个x它能返回两个x是因为它从另个高层维度变换了世界,进入f体中一个x出来了两个x中的多出来的那个x本来就是f从外面世界取到的。应该有一种东西在守恒。



感觉像是像上图这样的,如果外面的父对象能够变换里面的子对象的形状的话,里面的子对象就是可变对象。如果外面的父对象不能变换里面的子对象,而只能将它送入某个管道,然后从管道的另一头取出一个新对象,这样的子对象是不可变对象。那个管道是个椭圆形的,因为那个椭圆管道就是那个栈,那个管道就是那个f函数轨道路径。整个系统可能始终都是在做椭圆圆周运动,圆是周期,圆是震荡,圆是波(函数),圆是粒子(对象)。