2007年1月7日星期日

无名师的双路论

无名师如是教导学生:

“达摩教义有条准则,这在尊者MCIlroy(管道的发明者,Vingel注)的符咒”做一件事并做好“中得到体现。它强调软件应当具有简单一致的行为,这符合Unix惯例,人和其它程序做一天和尚撞一天钟都很容易想象其心理模型。

“但达摩教义还有另一条准则,体现在尊者Thompson(Unix的发明者,Vingel注)的符咒‘有怀疑,用穷举’中,很多经文都教导我们现在等到的90%,比等不来的100%更有价值。它强调实现的健壮性和简单性。”

“现在告诉我:什么程序符合Unix传统?”

想了一会后,Nubi沉思道:“老师,这些教义有冲突。”

“简单的实现往往对边缘情况有欠考虑,比如资源耗竭、无法关闭竞争窗口以及在未完成事务中超时等等。”

“发生边缘情况时,软件行为往往不规律、难以猜测。这当然不是Unix传统。”

无名师颔首同意。

“另一方面,大家都知道精巧的程序很脆弱。更进一步说,每个对边缘情况的修正往往牵扯到程序的核心算法,还牵扯处理其它边缘情况的代码。”

“于是,对边缘情况防患于未然、确保描述的简单性,反而会使得代码过分复杂、BUG成堆、根本无法发售。这当然不是Unix传统。”

无名师颔首同意。

“那么,什么是正确的达摩道?”Nubi问道。

无名师说:
“当鹰飞翔时,它忘记爪子与地面相触?当虎捕食时,它忘记腾空的一刻?VAX只重三斤!

没有评论: