这就像梅特卡夫定律(编者注:一种网络技术发展规律,由3COM公司创始人、计算机网络先驱罗伯特·梅特卡提出。):网络的价值与用户数量的平方成正比。这对于编程语言也适用。所有使用这种语言的用户构成社群,然后突然间出现了Eclipse,出现了FindBugs,出现了Guice。即使Java对你来说不是最好的语言,但是使用它有这么多附加的好处,所以你还是会创建社群,解决如何在Java中进行数学编程,或者你需要的其他类型的编程方法。
Seibel:你有没有过这样的感觉:你越来越清楚那程序就是搞不定,到处都是这样那样的问题,几乎令人绝望?
Bloch:当然有过。写书也是这样的。每次开始一件事情的时候,我总想逃避。开始是最艰难的,有时候我会鼓励自己:“加油Josh!这行你都干了三十多年了,你知道怎么能做到跟别人一样好,不必瞻前顾后,动手吧。”或者对自己说:“你瞧,以前的一切你都做的挺好的,这次也错不了。”
Seibel:你刚才提到你的生活体验变宽广了,这可能会影响编程,但是有没有什么东西,是编程以外的体验,但是帮助你成为了一个更好的程序员呢?
Bloch:当然有。我认为你能做好的每件事情都有这个作用。思想是没有学科限制的。我想到了一个例子。我写论文的时候,要对一种分布数据结构,RSM(Replicated Sparse Memory,复制型稀疏内存)做一个分析。而做这个分析的基础思想来自于我所上的化学课。那是一个动态平衡公式:如果系统里有一个动态的平衡关系,就可以写出一个等式,“事物进入一个特定状态的速度,和他们离开这个状态的速度相等。”这样就得到了三个变量的三个等式,求解这三个等式,计算出来的结果和观察到的这种复杂的分布数据结构的行为恰好匹配。这就是我直接从化学里偷来用于计算机科学的思想。
你在生活中看到的很多东西,不管是架构上的,即建筑物构建的方法,还是在语言上的,即人们进行沟通的方法,很多思想都是可以借用的。当然包括数学。数学和编程相当类似。所以要睁大双眼,积极地吸收重组各种思想,这样做绝对错不了。