|||
本文为中文翻译版,原文地址 http://www.phdgrind.com/
在Dawson明确了他想在2007年三月顶级会议的提交截止日期前投稿的目标,他告诉我其他五个学生正在做的工作并给了我几个任务选择去尝试。我选择利用Klee去寻找Linux设备驱动里的新bug。设备驱动是一段使操作系统和外部硬件设备如鼠标或键盘交互的软件代码。Linux操作系统(类似于微软Windows或者苹果Mac操作系统)包含了数千个设备驱动,使其能够与多种不同类型的外部硬件设备连接。设备驱动代码中的bug用传统的方法难以发现,而且具有潜在的危害,因为它们会造成操作系统瘫痪甚至崩溃。
Dawson相信Klee可以在数千个Linux设备驱动代码中找到自动化工具或者人工从未找到的新bug。我记得思考过尽管在论文当中提出新的Linux设备驱动bug是很酷的,但是我不清楚这些结果如何构成一个真正研究上的贡献。按照我的理解,我将会使用Klee去寻找新的bug,这仅仅是已有研究的一个应用,而不是用创新的方式去改进Klee。而且,我不觉得我的项目可以和其他五个学生的项目整合为一篇连贯的论文并在三月份提交。然而,我相信Dawson在脑海中已经有了高层的论文书写策略。于是我一股脑加入了这个项目,也没有想着立即去质疑教授所做的这些决定。我被赋予一项具体的任务,所以我决定尽全力去完成它。
~
在我博士生涯的头四个月,我费力地使Klee能够分析数千个Linux设备驱动代码以试图找到新的bug。尽管我的任务在概念上非常简单,然而为了使Klee能够在设备驱动代码上工作,我被的大量肮脏的细节所淹没。我经常在实验室一坐就是几个小时,在Klee所需的脆弱的实验环境中去分析设备驱动,然而往往只是无助地看到Klee由于其自身代码的bug而崩溃或者失效。当我把Klee的bug报告给Cristi,他会尽所能去处理这些bug,但是Klee极其复杂,使得其众多bug难以诊断和修复。我并不是对Klee吹毛求疵:任何以研究为目的开发的原型软件都存在许多不可预见的bug。我的工作是使用Klee去找到Linux设备驱动代码的bug,但具有讽刺意味的是,在第一个月我往往最后是去寻找Klee自身的bug。(Klee居然不能自动寻找自身代码的bug,真是太可惜了!)随着时光流逝,我在做这些自认为的纯体力活时变得越来越沮丧,我只是试图去让Klee能够正常工作——没有任何智力上的内容。
这是我有生以来第一次无助地被工作任务彻底击败。在之前,我的暑期实习工程总是可控的,而且在本科时尽管很多课后作业都很富有挑战性,却总是有正确答案在等待着被发现。甚至当我在本科做研究时,我总是可以向我的导师(当时是一位四年级的博士研究生)寻求帮助,因为当时的问题相对简单而且他通常知道如何解决。由于当时研究工作只是日常工作的一部分,所以作为本科生研究助理的风险也较低。如果我在研究过程中卡住了,我可以集中注意力到功课上,或者和朋友们出去兜风。本科毕业不依靠研究上的成果。然而现在我是一名博士研究生,研究是我唯一的工作,我只有成功做好才能顺利拿到学位。我的心情和我每天的进步情况紧紧联系在一起,然而进步是那么的痛苦和缓慢。
我现在涉入了一个不熟悉的领域,所以不像本科时答案清楚明了,如今要寻求帮助变得更加困难。由于只有我一个人尝试在设备驱动代码上使用Klee,我的同事不能给我提供任何指导。Dawson有时会给我一些高层的策略和建议,但是如同所有的终身教授一样,他的职责不是同他的学生一起“在战壕中战斗”。我们的工作是想出所有为了产出结果所需的复杂的细节——我的任务是找出Linux设备驱动中的前人未发现的新bug。教授们喜欢重复一句话:“如果前人已经做过它,那么它就不是研究!”我第一次发自内心地理解了这句话。
尽管我每天都感到无助,还是不停告诫自己:万事开头难,所以我要耐心。我不想在我的导师或者同事面前示弱,尤其因为我是Dawson的团队中最年轻的学生。所以在连续一百多天中我步履艰难地前行着,当出现关于Klee相关的问题时就去修复它,却又不可避免地在找寻梦寐以求的Linux设备驱动bug时遇到更棘手的新困难。
在几乎每个清醒的时刻,我不是在工作,想着工作,就是在苦恼于我是如何在技术问题上卡住的。不同于常规的朝九晚五的工作(例如我的暑期实习),当我离开了办公室后可以在每个晚上对着电视机吹空调,而做研究必须全身心地投入。我发现几乎不可能让我的大脑在夜晚休息和放松,后来我了解到这几乎是每个博士的通病。因为一想到我的工作是那样的令人气馁就倍感压力,有时甚至会失眠。想休息片刻甚至是奢望,因为在三月论文提交截止日期前有太多的工作要做。
在所有的人工劳动中,我尝试去发明一些半自动化方法使我每天的苦差事能够少点痛苦。我和Dawson讨论了一些初步的想法,但是我们最终得出的结论是如果我们想让Klee在Linux设备驱动中找出bug,终究无法避免此种耗时的磨练。我不得不在论文提交之前的接下来几个月坚持下去。
我理性的大脑懂得为了得到结果,科学中的实验研究经常包括极多乏味的、低等的人工劳动。博士,尤其是一、二年级的博士是必须要承受这种最乏味人工劳动的冲击;这是我们得到报酬而应该做的。在一个典型的研究课题组,教授和高年级博士创造高层的项目方案,然后将其分配给低年级博士并让他们在做所有的实际细节工作中得到磨练。一、二年级的博士很少能够去影响课题组项目的大方向。尽管我充分接受自己在此种等级制度中处于最低的一级,我的感性大脑仍然在头几个月激烈地抗争着,因为这项工作实在是太困难、太不值得了。
-----------------------------------------------------------------------------------------------------------
译者电子邮件是csliweilongATgmail.com(将AT改为@),欢迎读者和我分享读后感,翻译当中若有任何不当之处,希望大家批评指正。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 16:17
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社