编译器视角与掌控细节
邓晓芒在其《康德哲学》课程中曾提到,康德的著作晦涩难懂,把话说得绕来绕去。有些地方从表面上看来,可能还会与其他表述相抵触。然而,这都是表象。康德的内在逻辑是严谨的、自洽的。因此,对于这些难懂与看似自相矛盾的地方,我们要通过自己的理解,替康德把话说圆,而不是对细节上的瑕疵揪住不放。那样一来,相当于自我限制、固执己见,无法从他人的思想中获益。与之类似, C++ 编译器在编译包含大量模板代码时,其出错信息较一般代码更加难以理解,如同天书。这个时候,我们也要从编译器的视角出发,替它把话说圆,这样才能找到错误的根源。一般来说,错误的原因往往与编译器的直接提示相去甚远。出错的位置也常常远离编译器给出的位置(参考:调试数组越界问题)。
当把工作做到非常细致的时候,每个任务所依赖的条件就只剩下屈指可数的那么几个。于是,一切都变得非常清晰、可控,从而产生一种踏实感——当然,这一切都应当以大方向的确定与整体架构的存在作为前提,否则细节再多也只不过是一盘散沙,根本立不起来。想必大多数人都向往这种深入细节之中的控制感与踏实感:科学家与开发者想要控制的是客观对象,而管理者想要控制的是人。前者大多进入纯粹与唯美的境地,后者则不免暴露人性的丑恶。与深入细节、掌控细节相对,我们亦渴望看到自己亲手搭建起来的宏伟架构,不论它们是抽象的理论,还是可以真实触及的软件、硬件。以上两点便是从事科学与技术工作的乐趣所在。一端是精微,一端是宏大,两极达成了和谐、统一。孔子所说的“叩其两端而竭焉”正好可以套用于此。