编程杂想

2010-5-26

面向对象用得久了,不自觉的想把自然世界抽象成类。比如这几天想到的,把人生写成一个类,会是怎样的呢?

切入点很多,自己首先想到的是调试bug。大概因为这几天这种事情做得太多了吧。调bug实在是一件很伤脑筋的事情,常常是一个错误引发五页八页十几条上百条的错误报告。耐着性子一页一页的看、一条一条的查,找到最根源的那个错误,改过来再一跑,嘿,“身体倍儿棒,吃嘛嘛香”!

人生也是这样——这是多么老掉牙的话啊。一件事情、一个问题的发生,就可能影响到你对整个事件、整个人生的看法。这种情况下,人怎么自怨自艾怨天尤人,抱怨鸡毛蒜皮,抱怨人生不如意,都很正常:这些不过是那一个bug引发的五页八页十几条上百条的错误报告。解决了这一个bug,随它而来一切的问题都会烟消云散。我们常说做人要保持积极的心态,要时刻看到希望,也许这就是原因。

随后又想到构造方法。这是尝试续写《假如我是一名父亲》的并发症。人的构造方法,除了生物学官能之外,社会学功能——我认为——是指人的童年。在这个时期,我们的生活环境会向我们的大脑里注入许多的基础方法、变量,就像IOC向程序中注入实例一样。而且,按照《理解人性》的说法,这些基础方法、变量实际是常量,是不会随时间流逝而改变的。发生变化的,是基于这些常量进行计算的具体方法。

用代码描述是这样。

private final String good="I am good";

public void goodMan(){
    System.out.println(good+" man");
}

public void goodStudent(){
    System.out.println(good+" student");
}

字符串good是构造函数注入的常量;成员方法goodMan()和goodStudent()是面对不同事务的处理方法。Good是始终不变的;但是成员方法的输出又是变化的。

还有什么呢?

当我梳理思路,想要继续就这个话题想点什么、写点什么的时候,我却沉默了。回头看看上面两段,再想想自己打算继续写的几段,事实上都是老调重弹。自读研以来基本就是这个状态,每天被埋在代码堆里,脑子里回绕的都是技术细节,再想把眼光、思维提高到人类、宇宙的水平中来,就举步维艰了。或许这就是老子所谓“为学日益,为道日损”,这就是为学和为道的矛盾。

但是,并非所有人都有我这样的困扰。许多专精于技术的大师都有自己的哲学思维。比如霍金,我至今没弄清楚《时间简史》是一本物理书还是一本哲学书。最精细的技术和最宽宏的哲学很好的统一起来了,恰似某一版《时间简史》序言中所比喻的,巨蟒咬住了自己的尾巴。

面向对象思想本身就是用来模拟自然世界的。这是一条天然的“咬尾蛇”。虽然我不太习惯这样的思维,不过,这是一个不错的方向。