计算的哲学(philosophy in coding)

来源:互联网 发布:aws ubuntu 编辑:程序博客网 时间:2024/06/01 13:35

引言

因为曾经学过编译原理,总是想学以致用,可惜国内编译器不发达,年岁也大了,只好找个与软件相关的管理工作混一混。近来觉得CSDN这个博客不错,总是有个吐槽的地方,虽然不能将所有的胡思乱想变成文字(可能像飞机大炮古建等类不能在这个博客上发布),应该可以把计算机相关的想法摆出来。
所谓的“哲学”,可以认为是实际的提炼,或一些处于较高层次上的、经过提炼的规则。笔者想在文中提出出一些关于软件设计的想法,因为是截取日常生活中突发其来的一些灵感或感悟,所以肯定是杂乱的。
写本文的目的,一方面想将自己的一些灵感或感悟尽快的记下来,以免忘却,另一方面可通过写作,将一些更深的感悟阐发出来,挖掘更深层次的思索。本文的章节之间没有连续性,随意的让思维飞起来。

代码与潜规则

360百科中是这样解释的,“潜规则”,是相对于“元规则”、“明规则”而言的。是指看不见的、明文没有规定的、约定成俗的、但是却又是广泛认同、实际起作用的、人们必须“遵循”的一种规则。一般认为这个词为贬义词,因为大家都将目光放在媒体集中爆料的“潜规则”上,实际上在任何领域中都存在潜规则,为中义词,软件设计及各种程序语言也不例外。
每一种编程语言都有大量的书籍进行深浅不一的说明,读者可以注意一下,如关于加法的格式说明即为明规则,此外对于加法的解释中可以察觉到中间有许多注意事项,如不同类型数据相加时的转换规则,数据过大而产生的溢出等。这些由于硬件或软件形成的各种限制,造成了编程过程中需要特别注意的问题,在编程中这些公认的“注意事项”就成为避开陷阱的“潜规则”。像陷阱一样,杂乱无规律分布在“明规则”的四周,构成看不见的陷阱。
编程高手与一般人的区别从这个角度看,就是掌握的潜规则多,能够成功的避开陷阱。
发散一下,可以推而广之,任何领域都存在潜规则,从某个角度说,高手就是掌握了大量的潜规则,并可以游刃有余的驾驭它们,进而迅速找到最近的路。而菜鸟的感觉是戴上了污浊的墨镜,只隐约看到部分的明规则,勇敢的向着陷阱走去,碰个头破血流。

传导的损失和陷阱的叠加

热力学第二定律是描述热量的传递方向的(360问答): 
分子有规则运动的机械能可以完全转化为分子无规则运动的热能;热能却不能完全转化为机械能。此定律的一种常用的表达方式是,每一个自发的物理或化学过程总是向著熵(entropy)增高的方向发展。熵是一种不能转化为功的热能。熵的改变量等于热量的改变量除以绝对温度。高、低温度各自集中时,熵值很低;温度均匀扩散时,熵值增高。物体有秩序时,熵值低;物体无序时,熵值便增高。现在整个宇宙正在由有序趋于无序,由有规则趋于无规则,宇宙间熵的总量在增加。
如果将软件设计和这个定律进行类比,就可以推断出下述规则:
1.系统的复杂度逾高,层级逾深,则潜规则(陷阱)逾多,如果将每一步数据处理看做一个层级,将其中的潜规则看做层级中的缝隙(陷阱),则层级越多,层级缝隙构成的迷宫就越加复杂。
2.数据的每一次处理,都会受到本层级的约束,约束的叠加会对最前端的潜规则产生影响,形成不规则的约束
3.越高级的语言为满足使用者的需求,其层级逾多,其优化的复杂度取决于从总体的层面考虑最优的路径、方法及处理陷阱(参见“关于迷宫”)。
 

关于迷宫



信息化架构

信息化架构是一个热门的概念,对它的理解和解释各个不同。
笔者认为,从字面上看,他是一个企业甚至系统的总体上的、信息化角度上的框架。同时又是一个企业信息化建设的实施方法论。
从方法论角度上看,它应该也必须是一个从多种维度上分析,体系化的思考、分析、实现方法的综合。
体系化的方法论,需要体系化的实施才能落地,由于管理、技术管理的各种缺陷造成的任何维度上的阉割都有可能造成架构落地的问题。


(未完待续)
0 0