软件就像一段时空的剧本,程序员是编剧,也是导演。
时,空间的"转换"。
空,时间的"切片"。
有人说软件=结构+行为,也有人说软件=数据+算法。
中国人的思维中,万物皆一气,轻清喜动者,强说为阳。重浊喜静者,视其为阴。
阴,结构,数据。
阳,行为,算法。
在时空的剧本中,孤阴不生,孤阳不长。
光有数据,那是静态的库表。
光有算法,算法也就失去了依靠。
阴中有阳,阳中有阴。结构(数据)的变化,就是行为(算法);行为(算法)的切片投影,就是结构(数据)。
面向过程,着眼于行为(算法)。
面向数据,着眼于结构(数据)。
面向对象,一个对象中有结构(数据),也有行为(算法)。
面向过程、面向数据、面向对象,根本区别在于着眼点的不同,着眼的层次不同。
就像导演一出戏,
主线可以有多个,
你可以从事件的角度,也可以从人物的角度。也可以事件、行为综合起来叫"对象"的角度。
横看成岭侧成峰,远近高低各不同。
客观世界中峰即是岭,岭即是峰。在主观的世界里,峰是峰,岭是岭。视角不同。
计算机世界中的010101,可以是结构(数据),也可以是行为(算法),也可以把结构行为,捏合到一起,叫"对象"。
单独把结构(数据)捏合起来,叫数据库。单独把行为(算法)凑到一起,叫事件库。
方便你学习,方便你应用,适合你的。就很好了。只是角度不同,没有优劣之分。
时、空、位,当位则正,非位则邪。
宇宙之初有道,
道产生了空间和时间。
空间和时间便是编程设计之阴阳。
不能领悟此道的编程者总是耗尽他们所要编写的程序的时间和空间 ;
而领悟了此道的编程者却总有足够的时间和空间来达到他们的目标。
除此之外,难道还有其他的情形吗?
一个小故事:
在去硅谷的路上,硬件碰上了软件,
软件说:"你是阴,我是阳。如果我们携手同路,我们将闻名于世,并能赚大笔的钱。"
于是,这一对阴和阳便一同往前走,想着如何征服世界。
不一会儿,他们遇到了固件,他衣衫褴褛,手里拄着根带刺的拐杖,蹒跚地走着。
固件对他们说:"道存于阴、阳之外。它默默无闻,静如止水。它不追求名誉,所以没人知道它的存在 ;
它不追求财富,因其自身完整圆满。它存在于空间和时间之外。"
软件和硬件,自觉惭愧,便各自回家去了。
书不尽言,言不尽意。
希冀有缘,增其上缘。
若能做引玉之砖,足矣。