• 程序员
  • 软件

当年《电子游戏软件》的“电刑室手记”上有这么一篇小短文:
某日上政治课,老师讲量变,质变,全班人迟迟不能理解,某一玩友徐徐曰:“量变者,升段也,质变者,转职也”。全班顿悟。且欲撰一奇文,题曰《马克思主义与RPG》。

这个段子后来大概因为是涉及政治问题,没有收录到“电刑室手记”完整版本里,但是电子游戏里面的升段和转职的确符合哲学里面对量变与质变规律的描述。看来哲学规律的普遍性和对具体科学(电子游戏也算是科学吧,否则国家863项目怎么投钱开发网络游戏引擎呢?)的指导意义真是非同小可。

今天刚刚考完期末考试,最后一门是《自然辩证法》,起初以为这门课跟毛思邓论一样,属于考记忆力背书的的东西,后来在这半个月疯狂的背书过程中,发现还真是如课本所说的自然辩证法“有助于提高理论思维能力和科技实践能力,更好的参与现代化建设”。书中对自然观,科学技术方法论和科学技术观的一些描述,还真是与程序员日常接触的东西有密切的关系,(不知道算不算得上模式),摘录一些如下:

  • 自然辩证法的层次观:

层次表征了系统内部结构的不同等级和水平,揭示了系统之间的纵向和垂直的联系。

层次的特点:低层次系统对高层次系统有构成性关系,低层次系统之间存在相互作用。

层次结合能递减规律:随着层次的由低到高,层次结合的紧密程度有大到小递减。

解释:层次化的设计方法在软件体系结构中非常普遍。在层次化设计方法中,一个完整的系统被划分成彼此相关的多个层次。每一个层次都有自己的关注要点和要实现的功能。层次与层次之间构成单项依赖,原则上每一个层次都只与它的相邻层次打交道:利用它下一层提供的服务构件自身,同时向更高层提供一些服务。层次化设计有利于重用业务逻辑,并且使系统有良好的扩展性和可维护性。

实例:OS系统分层,下面这张图是我从MSDN里面直接Copy过来的Windows CE体系结构图,

test

按照哲学观点,Windows CE显示符合自然界对物质系统的层次关的普遍规律的描述。整个OS由n层构成,不同的层次有不同的结构和功能。从层次的特点来看,Windows CE中上层的实现依赖于下层提供的功能,例如OS层要使用OEM层的函数,应用层要使用OS的API……层次之间也有相互作用,最明显的就是OS的几个基本功能:内存管理,调度管理,文件系统等等,都是牵一发动全身的。从层次结合能递减来看,低层次OS本身的功能的耦合度是相当高的,内存管理,调度管理,文件系统环环相扣,形成网状依赖,但是到了应用层,每个进程就都有了自己的32MB虚拟地址空间,耦合度大大降低,再到.NET Compact Framework,“高内聚,低耦合”都成了我们耳朵听出老茧的话了。正好符合层次结合能递减规律。

  • 自然辩证法关于方法的论述:

方法的定义:方法是实现目标的途径,是完成任务的手段,是解决问题的方式。

列宁语录:“方法本身就是对象的内在原则和灵魂”

方法四要素:目的性,一系列操作活动,工具要素,对象要素。

解释:在OO中,方法的重要性不言而喻。最简单的类和方法如下(C#语言描述):

class Foo

{

public void PrintMe()

{

int a;

a = 1 + 1;

System.Console.WriteLine(a.ToString());
}

}

呵呵,我们可以看看,PrintMe是否符合方法的定义和要素。目的性:PrintMe要打印1+1。一系列操作活动:当然就是那三行程序了。工具要素:用到了BCL中的WriteLine方法,当然还得用csc编译;对象要素:“方法要作用于某个对象,对象的特点制约着方法的发生设计和应用”。对阿,public class Foo跟private class Foo当然制约着方法PrintMe了。

再看列宁的那段言论,简直是对OOP中方法含义的绝妙论述。列宁同志不愧为伟大的革命导师阿……

  • 其它:

自然辩证法提出“企业是创新的主体,研究所和独立发明人不是”,这条理论是对我们的择业观高屋建瓴地指导:它指导我们要去微软亚洲研究院,要去IBM,Oracle,HP的研发中心工作,不要当soho,不要到国有研究所和高校呆着,因为研究所的“理论面临着与市场脱节的危险”,独立发明人“通常缺乏实验设备和资金”。进微软亚洲研究院工作,还是“科技成果转化为生产力的客观要求和市场经济条件下企业生存和发展的必然需要”。

关于模拟实验:“模拟试验是通过设计一种与被研究客体相似的替代物,并通过对模型的研究地带对客体本身的研究”——这就是在Windows CE下我们开发应用程序为什么大多数情况下使用模拟器Emulator的理论原因。但是“人类对模型的认识有未知的相似和不相似,从模拟实验中得到的知识外推到实物有或然性”——这就是为什么Release Windows CE的应用程序的时候还要在真实的设备上跑一跑的理论原因。

关于科学与技术的区别:“从任务,方法,研究过程,结果和评价,价值和意义五个方面”(原文太长了),这一段应该给当年计算机系鄙视软件学院的那帮学生看看,他们就不会再鄙视偏重于技术活而不是科学研究的软件学院了,也知道软件学院跟计算机系的关注点不同了……

要睡觉了,还有好多好多呢,有机会再补上吧。:-)