理论与生产没有矛盾?

如果再往下抽象一个层次,Person对象的Gender、Name、Birthday属性、Person对象的Type类型(typeof Person得到的值)等等都变成了维度。一个变化方向是一个维度,而且是正交的维度,仅通过Name值或Birthday值无法知道一个对象是不是人,同样,只知道一个对象的在Type维度的值是Person无法据此计算出他的Name和Birthday。这些正交的维度在一个空间单元中组合在一起,这个“空间单元”是在“空间维度”方向上的取值,空间维度和Type和Name和Birthday是完全一样的东西,都是普通的维度。只知道一个person对象占了200字节空间是无法知道这个对象的Name属性值是什么的,如果说这200字节中的第20到24字节是Name属性的话这是因为有其它维度的参与进来我们才知道它在第20到第24字节空间位置的,并且那个位置的值可能只是另一个空间单元的地址。仅仅通过一个维度的值无法知道其它维度的值。

解放思想
国家标准文档是用z语言书写的,一下子读不懂没关系,不要灰心,把丢掉的知识拾起来就可以了。大家都是在同样的教育体系下接受的教育,咱们的知识结构是被众多金字塔尖的人精心设计和建造的,只要你静下心来没有你阅读不懂的人类知识人类文明。
各种标准文档上书写着的是无数人的智慧与聪明才智。那是他们的价值、荣誉与生命,希望你撇开相互的偏见去获取你想要的知识。理论与生产没有矛盾。
继承前人的知识
形式化语言这套东西很难懂,直到现在我也没完全弄懂。读国标文档之前没接触过形式化语言,读的时候借助权限领域知识去猜测才回忆起来一点。感觉如果高中的时候读的话会比现在容易懂,长大后那些集合知识忘光了。于是找了个讲形式化语言的书补一补,太难读了,反正我读起来很伤我自尊。如果大家能看懂这种基于集合论的Z语言的话不用去看那书,如果读不懂稍微看一下书就行,还是主要靠回忆高中的知识吧。看不懂就算了,只要不影响读懂前人的文档就行。绝大部分软件的设计与建造都不需要用形式化语言。

我们看不懂上面这两个式子,但是我们可以猜测。猜测上面可能是两个函数,因为它们的形状和编程语言中的方法、函数是那么的相似。看不懂不影响进步,看懂最好了,因为别人用这样的Z语言记录下了东西,我们能看懂才能得到前人留下的知识的帮助。集合论和形式化语言那套东西确实有用,如果不是看了它们我到现在也不可能靠那些OO编程语言能知道Type到底是什么,Object到底是什么,Function到底是什么。原来它们都是集合论上的东西。集合论这个层次对于人类的认知来说可能是最底层了,因为数学上证明问题的时候好像是把集合论作为最终公理去看待的。类型在计算机中的本质是什么?是集合。

仔细观察这个形式化语言,他跟我们平时写的代码完全一样,函数名(如果函数绑定在对象上改叫方法名)、入参和参数类型、返回值类型。可以发现计算机语言简直就是从数学语言对应过来的,尤其函数式语言更是如此。看得出前人在极力维护着知识的某种一致性,这种一致性支持我们联想、加工、处理、臆测、望文生义。图2 参数类型是PRMS,PRMS中的S的意思是Set,Privilege Management Set。

在集合论的层次没有了OO和函数式之分。如果我们把集合想象为空间,把函数想象为时间整个世界都是一致的了。如果几年前我读这样的国标文档,我读不出信息,现在却能读出很多信息,之前我读不出是因为我的准备不够,之前不处在接收这些信息的状态。读出的信息越多越后悔越恐惧。后悔什么?恐惧什么?后悔自己为什么没能早点读出来,恐惧那些写这些文档的人,他们一定比我知道的多比我知道的早。直到悟到一个道理:把前人和比自己知道的多的人看作“善意的”,把他人看作善意的才能摆脱恐惧,进而追随前人的脚步。
图3
丢掉前人的包袱
[该贴被luda于2015-05-08 12:07修改过]