文中提到,他在审核他们学校的一篇计算机系博士开题时,他发现该开题写得规范和“科学”:“建立模型” -> "开发系统" -> "收集使用数据" -> "选用合适的度量"。 作者觉得有点怪怪的,因为该学生的开题在理论上看似无懈可击,但即使做出来了也不会有多么振奋人心。
作者用程序员与医生对比:医生们常常要阅读科学文献,职业要求他们关注医学领域的最新进展;相比之下,有几个项目经理会关心组里的程序员阅读了几篇最新的科研文献? (当然,后文的跟贴里有人认为这种比喻不妥,因为程序员与医生职业要求不一样,程序员少一点科研知识,后果仅是程序慢一点而已;而医生如果对科学无知,那可是人命关天的,一点马虎不得,这也是为何程序员可能半路出家,非科班出身也可能胜任,而对职业医生的培训要经过五年以上的时间)
一个理想的、严谨的科学命题应该是像这样:在数据Z上的,软件X比软件Y运行得更快(Software X will be faster than software Y on data Z)。
这个命题应该是容易被证伪的,也就是如果经过实践检验,在数据Z上的,软件X比软件Y运行得慢,那么观点就会被推翻,此命题为假。
但是在很多科研论文里,我们看到的是这样的结论:根据某个(并不一定可靠的)执行速度预测模型,在数据Z上的,算法X比算法Y运行得更快(According to some cost model that may or may not be indicative of actual running speed, algorithm X is better than algorithm Y on data Z)。
作者认为,这种结论的实际意义不大,因为前提假设/限制过多,不具备普适性。但是在理论上它是无懈可击的,永远不能被现实的证据证伪。作者用了一个法语词 modèle 来形容这种思维模型,因为这种命题是经过简化的科学命题,与真正实用的科学命题相比,这些命题就像儿童的玩具一样简单、天真。
你可以将modèle 与现实对比,但是你永远不能证明modèle是错误的,因为modèle都是经过精心设计的,在逻辑上无懈可击。
modèle 的设计者其实在玩思维/逻辑或文字的游戏,modèle 并在解决实际问题,因此与现实无关。计算机科学里充斥了这种modèle !作者还联想到了一种叫做 Cargo cult science 的伪科学流派,这个流派就像未开化的原始部落,刚刚接触到现代科技产物时,他们只关注那种神乎其技的技术产品外表 (cargo),造了很多外型类似于飞机、登陆舰等等的东西进行宗教似的膜拜,并不是用一种真正的科学方法(scientific method) 来指导实践,徒有其形而无其实。
个人点评:
1. 作者对计算机科研现状的批评还是有道理的,很多科研人员做的东西实在与现实相差太远,最终所谓的学术成果其实不过一场文字游戏而已。所以,要做好研究的思路是,尽量把自己的命题往现实里靠,综合自己的联想和分析能力,努力让自己的成果对现实有指导意义。
2. 这种现状不能全怪研究人员们,他们是有苦衷的,谁不想拿到宝贵的第一手数据呢?很多时候是数据和设备是最大的颈瓶,并不是研究人员自身的科研能力。例如我所在的实验室就曾经与一家软件企业合作,想攻克他们公司中的一些难题,去一次他们公司要,坐公车来回要四小时以上,去到公司后发现很多数据都是保密的,我们根本看不到,花费了很大的心血去收集和分析那些有限的数据,到头来什么结论都得不到,没有数据就没有可能得出让人信服的结论,也就不可能发表任何文章。大家都知道这个道理。
所以,是否可以拿到数据,这往往是科研成果是否有现实指导意义的颈瓶。但在IT企业里数据都是有商业保密的,能否说服公司高管把数据透露给科研人员,这个问题已经超越了科研能力的范围之外了。
3. 根据博文后的回贴,其实其他学科也好不了多少,例如 在数学系里,经常做的是 you prove what you can prove, not what it is useful.