无名师的双路论

无名师如是教导学生:

“达摩教义有条准线,这在尊者McIlroy的符咒“做一件事并做好”中得到体现。它强调软件应当具有简单一致的行为,这符合Unix惯例,人和其它程序便都很容易想象其心理模型。

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

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

想了一会儿后,Nubi沉思道:

“老师,这些教义有冲突。”

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

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

无名师颔首同意。

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

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

无名师颔首同意。

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

无名师说:

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

听到此,Nubi眼中一亮。