赵文银:编写一个软件系统和编写一本书有区别吗

赵文银 原创 | 2016-06-13 10:59 | 收藏 | 投票

人类所创建的知识金字塔并不是一开始就存在 的,而是从一个点开始,在纵向和横向上不断延伸扩展。这个知识起点并不是固定的,拓展的方向路径也不是固定的,所以出现了不同区域人群的文化差异。差异来 自这些知识在金字塔里的位置,都是人类知识的组成元素,具有相同的重要性。金字塔的稳定是由所有不同层次的构成物质决定的,是一个命运共同体。


知识金字塔结构示意图

书的结构设计和编写方式与软件系统的编写方式是相似的。字词、语句、段落、节、章构成了一本书的逻辑结构,语句是按照语法规则组织连接起来的字词,描述事物的属性或者行为模式。

或许人们很难理解这种观点,因为现在的人习惯了把程序员归类为理科专业,善于逻辑思维,而写小说的作者属于文科专业的人,善于形象思维。产生这种想法的原因在于人们并没有真正弄清楚软件系统的本质,因为知识的局限,把软件当成了一种特殊的逻辑存在形式。

似乎国际一流的软件专家大多数都认为软件危机 是无法解决的,原因是无法解决软件结构的复杂度。但是对于哲学家来说,任何客观存在的复杂结构的事物,都是由不同层次的事物组织连接起来的,而最小的组成 对象是不能再分解的事实。也就是说,按照哲学的思维,软件危机是很容易解决的。

小说作者采用自然语言写作,比如汉语、英语、法语等,而程序员采用计算机语言写作,比如javacjspaspphp等,他们在本质上是一样的,就是通过人脑的思维功能,把来自现实的物理图象转变成大脑的逻辑图象,采用语言的方式记录下来,形成一本书或者一个软件系统。

这并不是说小说作者就可以成为优秀的程序员,对于程序员来说,逻辑的连续性是非常严格的,在小说里可以允许出现逻辑断层,因为读者可以通过想象忽略断层而直接进入新的场景,但是这种行为在软件系统里是不可能发生的,系统在遇到断层后将停止前进或者自己改变方向,这就是软件bug。这也是科学和文学在标准上的差别,文学上的逻辑图象不一定需要在现实中找到对应的物理图象,但是科学上的逻辑图象一定需要在现实里找到对应的物理图象,这样的逻辑图象属于“真”,否则就是“假”。

软件程序里的一行是一个句子,很多行构成一个段落,用来描述一个事物或者场景。当一个场景里存在很多条分叉路径的时候,就有可能出现错误,因为程序员在采用“如果...那么”的模式进行逻辑处理的时候,会遗漏一些可能出现的状态,这种遗漏就变成了bug隐藏在程序里。


 

软件体系结构框架图

对于有经验的一流的程序员来说,简单的明显的错误是很少发生的,即便出现了,也很容易处理,不会导致软件危机的发生。Bug出 现在一个非常复杂的软件系统里,因为某个节点的路径选择具有时间和空间上的不确定性的选择,而且有些选择具有相似性。所以真正的软件系统是立体的,而目前 的程序系统是平面的。比如《圣经》是一本具有立体特征的书,在很多地方出现相同或者相似的内容,它是通过章节段落等标号展现,而目前的大多数书是采用平面 方式展示的。

软件危机的根源在于软件系统的结构复杂度,也就是说,解决了软件系统的结构难题,就解决了软件危机问题。而结构的复杂度是可以通过增加空间的维数来解决的,比如在二维空间里很复杂的结构,在三维空间里就简单很多。


 

二维空间结构与三维空间的区别

这是一个哲学逻辑命题,把二维空间的结构转换到三维或者更高维空间,当然图灵、冯·诺依曼本身就是哲学家,所以计算机遵循逻辑规则。

       网络空间里的维的表征方式和物理空间里的维是不一样的,因为它们是不同类型的空间。

个人简介
赵文银,中国电子学会高级会员,中国电子学会云计算专家委员会委员。1986年毕业后分配到石油地球物理勘探局研究院工作。
每日关注 更多
赵文银 的日志归档
[查看更多]
赞助商广告